Использовать API GitLab из сборки GitLabCI script

У меня есть сборка GitLab CI script следующим образом:

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 - это только токен для подключения к реестру докеров - согласно документации.

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

Бегун GitLab:

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

Ответ 1

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

например

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

И только когда проект публичный, у всех есть доступ из одного и того же проекта.

Если вы хотите получить доступ и к частным проектам, и/или к записи, пожалуйста, проголосуйте за выпуск GitLab № 29566 и/или № 41084.

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

Ответ 2

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