2014-06-28 15 views
10

Chcę pobrać prywatne repozytorium GitLab w wersji curl. Wiem, że mogę korzystać z API Gitlab, ale z jakiegoś powodu nie działa.Pobierz prywatne repozytorium GitLab

Czy to możliwe? Kiedy próbuję to zrobić w ten sposób, zawsze zwraca stronę logowania.

Odpowiedz

3

Można, ale trzeba uwierzytelnić się (jak w "Gitlab API: How to generate the private token")

curl http://gitlab.server/api/v3/session --data 'login=myUser&password=myPass' 

następnie z private token:

curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" "http://example.com/api/v3/projects" 

Lub, w przypadku uzyskania repository files:

GET /projects/:id/repository/files 

Lub pobierz bezpośrednio jeden plik.

+0

Czy istnieje sposób, w jaki mogę uzyskać surowy adres URL do pobrania, a nie do pobrania? Na przykład publiczny adres URL pliku obrazu, który można wyświetlić w przeglądarce. Czy istnieje sposób na wygenerowanie publicznego adresu URL do prywatnego repozytorium za pomocą interfejsu API? –

+0

@KhurshidAlam masz na myśli publiczny URL dostępny dla wszystkich, nawet jeśli pochodzi z prywatnego repo? – VonC

+0

Tak. Ale tylko z pewnym żetonem. Podobnie jak bitbucket lub github. Na przykład bitbucket używa tokena dołączonego do surowego adresu URL pliku, aby można go było zobaczyć publicznie. 'https: //bytebucket.org/$username/$repo/raw/$sha/$filename.jpg? token = $ sometoken' –

12

Ten jest możliwe, wykonaj następujące kroki:

  1. Najpierw trzeba stworzyć "Osobiste token dostępu":

    1. idź do Your Profile > Settings > Access Tokens.
    2. Wprowadź nazwę dla "osobistego tokena dostępu".
    3. Check "api dostęp do API uwierzytelnionego użytkownika"

      Personal Access Tokens

    4. Kliknij "Tworzenie dostępu prywatnego żeton"

    5. Strona zostanie ponownie załadować i zapisać nowy token.
    6. Upewnij się, że zapisałeś token w bezpiecznym miejscu, nie będziesz mógł go wyświetlić ponownie.

      New "Personal Access Token"

  2. Teraz, że masz "Personal Dostęp Reklamowe", trzeba uzyskać identyfikator projektu użyć API:

    1. Go do https://gitlab.com/api/v3/projects?private_token=XXXXXXXXXXXXXXXXXXXX (zastąpić XS z twój nowy token)
    2. Uzyskaj identyfikator swojego projektu z json.

      Project id

  3. Teraz można nazwać:

    wget -O your_project.tar.gz https://gitlab.com/api/v3/projects/0000000/repository/archive?private_token=XXXXXXXXXXXXXXXXXXXX

I że będzie pobrać swój projekt jako plik .tar.gz.

3

Możesz użyć prywatnego tokena, który jest twój (znajdującego się w "ustawieniach profilu"), aby uzyskać dostęp do dowolnego zasobu. Wystarczy przejść do pliku z repozytorium, który chcesz pobrać, skopiować odnośnik „surowego” pliku i dołącz private_token = ...

Przykład:

curl https://git.local/user1/myrepo/raw/master/myfile.txt?private_token=ahgiretherghaeoi 
0

Jeśli trzeba to zrobić w biegu i CI twoje prywatne repozytorium znajduje się na tym samym serwerze, powinieneś móc używać git submodules do klonowania innych repo w tym samym czasie. Używanie ${CI_JOB_TOKEN} jest another option od GitLab 8.12.

Powiązane problemy