Использовать 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.