git nie chce pobierac plikow LFS

git nie chce pobierac plikow LFS
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 12 godzin
  • Postów:2102
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


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
stivens
Uzywasz runnera na windowsie?
Marius.Maximus
runner jest na Windows i zadania są uruchamiane lokalnie, generalnie są uruchamiane w tym samym środowisko co zalogowany użytkownik, w kontekście użytkownika wszystko działa , w kontekście runnera nie , ale runner uruchamia strasznie dużo polecen git-a , kopiuje sobie lokalne środowisko z ustawienia użytkownika itp...
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 12 godzin
  • Postów:2102
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


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 12 godzin
  • Postów:2102
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

--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
edytowany 1x, ostatnio: Riddle

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.