web-dev-qa-db-ja.com

GitLabCIビルドスクリプトからGitLabAPIを使用する

私は次のような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"

このステップの目的は、GitLabリリースセクションにGitからの変更ログを自動的に追加することです。

これをコマンドラインで手動で実行し、変数を入力すると機能します...

問題は、ドキュメントによると、ビルドランナーのCI_BUILD_TOKENの値が有効なGitLabプライベートトークンではなく、Dockerレジストリに接続するためのトークンにすぎないことです。

ビルドランナーがビルドを実行しているプロジェクトのAPIにアクセスするために使用できる有効なGitLabAPIトークンを取得する方法はありますか?このようなことが可能であるようです。

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
15
ETL

ランナーからAPIを使用して読み取り専用アクセスを行うことができますが、CI_JOB_TOKENを使用してヘッダーを追加した場合に限ります。

例えば.

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

そして、onlyプロジェクトがpublicであり、全員が同じからアクセスしている場合事業。

プライベートプロジェクトへのアクセスや書き込みアクセスも必要な場合は、賛成票を投じてください GitLab issue#29566 および/または #41084

とりあえずの代わりに、 gitlab でアクセストークンを作成し、プロジェクト設定/ ci_cdの下でシークレット変数に追加できますが、個人のアクセストークンはそうすることをお勧めしません。ジョブをトリガーするすべての人が使用します。

15
Danny

シークレット変数 を使おうとしましたか?設定で定義してから、ビルドスクリプトで使用できます。

1
Sigrist