2016-08-06 4 views
7

У меня есть сценарий сборки GitLab CI следующим образом:Использование GitLab API из GitLabCI скрипт сборки

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" 

Цель этого шага для автоматического добавления изменений системы из Git в GitLab разделе Релизы.

Это работает, если я вручную запустить это в командной строке и положить в переменных ...

Проблема заключается в том, что значение CI_BUILD_TOKEN в нарастании бегуна не является допустимым GitLab Private Токен - это только токен для подключения к реестру докеров - согласно документации.

Есть ли способ получить действительный токен GitLab API, который может использовать бегун для сборки для доступа к API для проекта, для которого выполняется сборка? Похоже, это должно быть возможно.

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

Как уже упоминалось, у вас есть gitlab runner 1.2? (http://stackoverflow.com/questions/37468084/what-is-the-special-gitlab-ci-token-user#comment62905945_37545323) – VonC

+0

Да, у меня есть GitLab 1.2.0 - связанная статья касается доступа к реестру докеров , Я пытаюсь получить доступ к API GitLab. Доступ к GitLab Docker Registry действительно работает. – ETL

+0

Кажется, что 'CI_BUILD_TOKEN' в основном предназначен для доступа к реестру, а не для использования GitLab API. – VonC

ответ

0

Пробовали ли вы использовать Secret Variables? Вы можете определить в настройках, а затем использовать в своем скрипте сборки.

3

Вы можете получить доступ к API от бегуна, но только если вы добавите заголовок с токеном.

например.

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

И только тогда, когда проект является общедоступным, у каждого есть доступ.

Если вы хотите получить доступ к частным проектам, пожалуйста, проголосуйте Gitlab issue #29566.

В качестве альтернативы в настоящее время вы можете создать токен доступа по адресу gitlab и добавить его к секретным переменным в рамках параметров проекта/ci_cd.