2016-08-06 10 views
7

Mam skrypt kompilacji GitLab CI tak:Zastosowanie GitLab API z GitLabCI zbudować skrypt

create release: 
    stage: deploy 
    tags: 
    - basic 
    only: 
    - tags 
    script: 
    - GITLOG=$(echo "# Changes Log"; git log `git tag | tail -2 | head -1`..${CI_BUILD_TAG} --pretty=format:" - %s") 
    - curl -X POST -d "private_token=$CI_BUILD_TOKEN&description=$GITLOG" "http://git.example.com/api/v3/projects/${CI_PROJECT_ID}/repository/tags/${CI_BUILD_TAG}/release" 

Celem tego kroku jest automatycznie dodać Changes Zaloguj z Git w GitLab prasowe sekcję.

To działa, jeśli ręcznie uruchomić to w wierszu poleceń i umieścić w zmiennych ...

Problem polega na tym, że wartość CI_BUILD_TOKEN w kompilacji biegacza nie jest poprawnym GitLab Prywatna Reklamowe - to tylko token do łączenia się z rejestrem Docker - zgodnie z dokumentacją.

Czy istnieje sposób na uzyskanie prawidłowego tokena interfejsu API GitLab, który programista budowy może wykorzystać do uzyskania dostępu do interfejsu API dla projektu, na którym działa kompilacja? Wydaje się, że to powinno być możliwe.

GitLab Runner:

gitlab-runner -v 
Version:  1.2.0 
Git revision: 3a4fcd4 
Git branch: HEAD 
GO version: go1.6.2 
Built:  Sun, 22 May 2016 20:05:30 +0000 
OS/Arch:  linux/amd64 
+0

Jak wspomniano tutaj, czy masz program gitlab runner 1.2? (http://stackoverflow.com/questions/37468084/what-is-the-special-gitlab-ci-token-user#comment62905945_37545323) – VonC

+0

Tak, mam GitLab 1.2.0 - połączony artykuł dotyczy dostępu do rejestru Docker , Próbuję uzyskać dostęp do API GitLab. Dostęp do rejestru Docker GitLab działa. – ETL

+0

Wygląda na to, że 'CI_BUILD_TOKEN' służy głównie do uzyskiwania dostępu do rejestru, a nie do korzystania z interfejsu API GitLab. – VonC

Odpowiedz

0

Próbowałeś użyć Secret Variables? Możesz zdefiniować w ustawieniach, a następnie użyć w swoim skrypcie budowania.

3

Dostęp do interfejsu API można uzyskać za pomocą programu uruchamiającego, ale tylko w przypadku dodania nagłówka z tokenem.

np.

curl -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" "https://gitlab.com/api/v4/projects/2828837/repository/tags 

I tylko wtedy, gdy projekt jest publiczny, a wszyscy mają dostęp.

Jeśli chcesz także uzyskać dostęp do prywatnych projektów, przeprowadź głosowanie w górę: Gitlab issue #29566.

Alternatywnie można na razie utworzyć token dostępu na gitlab i dodać go do tajnych zmiennych, w ustawieniach projektu/ci_cd.