2016-11-08 14 views
2

GitLab CIでビルドプロセスをセットアップしようとしています。 今、私はPowershellでWindowsランナーを使用しています。ビルドプロセスがビルドのバージョン番号でコミットに自動的にタグを付けるようにしたいと思います。Gitlab CIでビルド時の自動タグコミット

主な理由は、Gitlab wikiで自動変更ログの生成を有効にし、実際のプロジェクトリポジトリに置かれているchangelog.mdと混同しないようにすることです。

私はPowershellスクリプトからタグをプッシュしようとしましたが、プッシュは決して完了せず、無限に循環します。なぜこれが起こるのかはわかりません。

スクリプトは、以下のコマンドを呼び出します。ここ

[System.Console]::WriteLine("Tagging git commit (${env:CI_BUILD_REF}) with tag (v$Version)"); 
$gitProcess = Start-Process -FilePath "git" -NoNewWindow -Wait -PassThru -ArgumentList "tag -a v$Version ${env:CI_BUILD_REF} -m ${env:CI_BUILD_REF_NAME}_$Version" 

if($gitProcess.ExitCode -ne 0) 
{ 
    [System.Console]::WriteLine("Git failed to tag the current build"); 
    exit $gitProcess.ExitCode 
} 

[System.Console]::WriteLine("Pushing tag"); 
$gitProcess = Start-Process -FilePath "git" -NoNewWindow -Wait -PassThru -ArgumentList "push origin v$Version" 

if($gitProcess.ExitCode -ne 0) 
{ 
    [System.Console]::WriteLine("Git could not push tags to GitLab"); 
    exit $gitProcess.ExitCode 
} 

は、これらのラインから出力されます:

Tagging git commit (9b2feb10340c9f8c86ce7c29460e0bfc5dba6f31) with tag (v4.1.295.2274) 

Pushing tag 

プロセスはただここにハングアップ、およびタグがプッシュすることはありませんまたはリポジトリに表示されます。

明確にするために、これはバッチ同等です:-a v%のバージョンここ%

+0

$ env:CI_BUILD_REFで試しましたか?私はあなたが正しい方法でenv変数を使用しているとは思わない。 env変数を使用するために$()を行う必要はありません。 so {} – 4c74356b41

+0

これらの行は正常に動作するように見えますが、投稿に出力を追加します –

+0

cmdからこれを実行しようとしましたか?それは動作しますか? – 4c74356b41

答えて

2

問題%%CI_BUILD_REF% Gitのプッシュ原点v%のバージョン

gitのタグは、単純に、アクセス許可の問題でした。 Gitlab Windowsランナーには、プッシュ/クローンのみをプッシュする権限がありません。 これを解決するために、この特定のタスクに対してユーザー設定を持つスクリプトの一部としてリモートを追加します。

秘密のファイルから資格情報が読み込まれ、ビルドは各ビルドのリポジトリを複製するようにセットアップされています。

関連する問題