2016-08-06 34 views
7

を構築し、私はGitLab CIを持っている。このようなスクリプトを構築:GitLabCIから使用GitLabのAPIは、スクリプト

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 
+0

ここで述べたように、gitlabランナー1.2はありますか? (http://stackoverflow.com/questions/37468084/what-is-the-special-gitlab-ci-token-user#comment62905945_37545323) – VonC

+0

はい、私はGitLab 1.2.0を持っています - リンクされた記事はDockerレジストリにアクセスすることです私はGitLabのAPIにアクセスしようとしています。 GitLab Dockerレジストリへのアクセスは機能します。 – 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のシークレット変数に追加することができます。

関連する問題