次のような GitLab CI ビルド スクリプトがあります。
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"
このステップの目的は、GitLab リリース セクションに Git からの変更ログを自動的に追加することです。
これをコマンドラインで手動で実行し、変数を入力すると機能します...
問題は、CI_BUILD_TOKEN
ビルド ランナーの の値が有効な GitLab プライベート トークンではないことです。ドキュメントによると、これは Docker レジストリに接続するためのトークンにすぎません。
ビルド ランナーがビルドを実行しているプロジェクトの 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_ジョブトークン。
例えば
curl -H "JOB_TOKEN: $CI_JOB_TOKEN" "https://gitlab.com/api/v4/projects/2828837/repository/tags
そしてのみプロジェクトが公共と誰でもアクセスできる同じプロジェクトから。
プライベートプロジェクトへのアクセスや書き込みアクセスも必要な場合は、投票してください。GitLab の問題 #29566および/または#41084。
代替案として、当面はアクセストークンを作成することができます。ギットラボ、それをプロジェクト設定/ci_cd の下の秘密変数に追加しますが、個人アクセス トークンはジョブをトリガーするすべてのユーザーによって使用されるため、実際には実行しないことをお勧めします。