git nie chce pobierac plikow LFS

git nie chce pobierac plikow LFS
Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2202
0

[runner] -> [proxy nginx] -> [gitea]

Chciał bym aby podczas budowania pobrały się pliki LFS
wiec ustawiam lfs: true

Kopiuj
    - uses: actions/checkout@v4
      with:
        lfs: true
        submodules:  true
        fetch-depth:  0
        token: xxxx
      env:
        GIT_CURL_VERBOSE: '1'
        GIT_TRACE: '1'

zadanie jednak się nie kończy
bo dla obiektow LFS są błędy

Kopiuj
10:57:39.429354 trace git-lfs: tq: starting transfer adapter "basic"
10:57:39.429354 trace git-lfs: xfer: adapter "basic" Begin() with 8 workers
10:57:39.429354 trace git-lfs: xfer: adapter "basic" started
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 2 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 2 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 3 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 3 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 0 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 4 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 7 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 0 processing job for "0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e"
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 6 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 6 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 7 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 5 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 5 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 1 starting
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 1 waiting for Auth
10:57:39.429354 trace git-lfs: xfer: adapter "basic" worker 4 waiting for Auth
10:57:39.429538 trace git-lfs: HTTP: GET https://git.draminski.com/max/us_platform.git/info/lfs/objects/0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e
> GET /m/u.git/info/lfs/objects/0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e HTTP/1.1
> Host: git.d.com
> Authorization: Basic * * * * *
> Authorization: Basic * * * * *
> User-Agent: git-lfs/3.5.1 (GitHub; windows amd64; go 1.21.7; git e237bb3a)
> 
10:57:39.430678 trace git-lfs: HTTP: 400
< HTTP/1.1 400 Bad Request
< Connection: close
< Content-Length: 157
< Content-Type: text/html
< Date: Sat, 16 Nov 2024 09:57:40 GMT
< Server: nginx/1.21.3
< 
10:57:39.430678 trace git-lfs: tq: retrying object 0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e: LFS: Client error: https://git.d.com/m/u.git/info/lfs/objects/0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e
10:57:39.431188 trace git-lfs: tq: enqueue retry #1 after 0.25s for "0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e" (size: 20135282)

jeżeli użyje przeglądarki to obiekty mogę pobrać
jeżeli z linii poleceń uzyję gita to obiekty mogę pobrac

nawet tak nie che dzialac , czy uzyje w actions domyslnego git-a,
albo git z msys-a , wyglada to tak jakby runner miał inne środowisko uruchamiania albo uzywał innego protokołu niz normalnie

Kopiuj
     - name: git_lfs_pull
       shell: cmd
       run: |
         "C:/Program Files/Git/cmd/git.exe" lfs pull

komunikacja pomiędzy runnerem a serwerem git-a odbywa sie przez proxy nginx ktore nigdy nie sprawiało problemow przy normalnej pracy,

jak jest blad w zadaniu to widze GET /m/u.git/info/lfs/objects/0c100813329cf881c58f936fce9c51bd3b1d19844eee0170ea98379be259823e
w logach nginx-a , dalej to nie przechodzi do gitea

jak przeglądarka pobieram obiekt to nginx i gitea maja zalogowane adresy obiektu

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2202
0

obejrzałem sobie różnice pomiędzy "git config" runnera i zwykłego użytkownika
i widzę jedna ciekawa różnicę
w runnerze jest ustawione coś takiego:

Kopiuj
http.https://git.d.com/.extraheader=AUTHORIZATION: basic BASE64(x-access-token: MOJ_TOKEN)

ktoś miał podobne objawy tutaj https://github.com/actions/checkout/issues/415
i pomogło coś takiego ( najpierw pobieramy bez LFS, potem lfs pull ze zmiana w configu git-a)

Kopiuj
- uses: actions/checkout@v3
  with:
    lfs: false

- name: LFS checkout
  run: |
    git lfs install --local
    # disable credentials by actions/checkout for LFS endpoints
    git  -c "http.https://git.d.com/.extraHeader=" lfs pull

ale nie pykło

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2202
0

Trochę to obejście ale działa

Co pomogło:

  1. ustawienie PATH dla runnera aby używał git z c:\program files\git a nie z msys-a
  2. skasowanie .git/config po użyciu actions/checkout
  3. git lfs pull
Kopiuj
- uses: actions/checkout@v4
  with:
    lfs: false
    submodules:  true
    fetch-depth:  0

- name: rm .git/config
  run:  rm .git/config
  
- name: git lfs pull
  run:  git lfs pull

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.