2017-01-08 9 views
1

GitLab Community Edition 8.15.2は、Webhookを使用してJenkins 2.32.1でパイプラインプロジェクトを正常に起動します。私はgitlabのプッシュでパラメータを使ってビルドをトリガしたいが、ビルドに失敗したときにパラメータ値がnullになってしまう。Gitlab pushからJenkinsのパラメータを使ってビルドする方法は?

gitlabのウェブフックは次のようになります。

私のパイプラインプロジェクトで

http://jenkins.server:8080/project/project-a/buildWithParameters?MYPARAM=foo

私は

echo "MYPARAM: ${MYPARAM}"

でパラメータ値をエコー、それが何に設定されていません。私が間違っていたところのアイデアは?

UPDATE

私はパイプラインで使用している実際のコードは次のとおりです。

node { 
    try { 
     echo "VM_HOST: ${VM_HOST}" 
     echo "VM_NAME: ${VM_NAME}" 
     stage('checkout') { 

      deleteDir() 
      git 'http://git-server/project/automated-build.git' 
     } 
     stage('build') { 

      bat 'powershell -nologo -file Remove-MyVM.ps1 -VMHostName %VM_HOST% -VMName "%VM_NAME%" -Verbose' 
     } 
     ... 
    } 
}  

パラメータVM_HOSTは、デフォルト値を持っていますが、VM_NAMEにはありません。 Jenkinsの私のコンソール出力では、私は以下を見ることができます:

[Pipeline] echo 
VM_HOST: HyperVHost 
[Pipeline] echo 
VM_NAME: 
+0

あなたは試しましたか?echo "MYPARAM:$ {MYPARAM}" – gile

+0

申し訳ありませんが、私が行ったことはまさに私の質問を編集したことです。 –

+0

Jenkinsからこのジョブを手動で構築する場合、MYPARAMの印刷は機能しますか? –

答えて

0

私はここ数週間苦労しています。一度は働いていましたが、今日まで、それを再び働かせることはできませんでした。変更がGitLabにプッシュされたときに

ビルド:そしてソリューションは、各パイプラインの仕事のために自動的に... ofcourseの

mindblowinglyは明らかだった私は、次のボックスをチェックさ。 GitLab CIサービスURL: http://jenkins.dev:8080/project/MyProject

その後GitLabから、私は上記をトリガするウェブフックを使用。 あなたのように私は/buildWithParametersを追加しようとし、うまくいきませんでした。

問題は、間違ったチェックボックスにチェックを入れました。 GitLabウェブフックからビルドを起動するので、上記のチェックボックス(ビルド時には...)を一切チェックする必要はありません。 どうチェックする必要がある:

トリガー(スクリプトから、例えば)リモートからのビルド

そのチェックボックスが新しいURLを提供します:

がトリガーに次のURLを使用しますリモートでビルド: JENKINS_URL/job/MyProject/build?token = TOKEN_NAMEまたは /buildWithParameters?token = TOKEN_NAME

私が出会ったすべてのドキュメントと同様に、URLは/projectで始まるのではなく、/jobとなりました。

ので箱、それに応じてURLを変更ダニ:

http://jenkins.server:8080/**job**/project-a/buildWithParameters?token=TOKEN_NAME&MYPARAM=foo

最少Iがトークンを言及したいと思います:GitLabで は述べ、「トークン」の別々のフィールドがあるウェブフック:

受信したペイロードを検証するためにこのトークンを使用してください。これは、X-Gitlab-Token HTTPヘッダーでリクエストとともに送信されます。

したがって、そこに提供されたトークンは、リクエストに沿ってHTTPヘッダーとして送信されます。 これは、Jenkinsセットアップでグローバルに提供できるトークンです。 Use the following URL to trigger build remotelyのチェックボックスをオンにしてJenkinsジョブで指定しなければならないトークンは、例のようにGETパラメータとしてURLに送信する必要があります。

最後の注意:個人的に私が得たことがないこの私が私の背中オフジェンキンスCSRF保護を得ることはありませんので、完全に取り組んでいます。これを無効にすると、別のエラーが発生します。しかし、うまくいけば、あなたと他の人のために、上記の問題を解決してくれるはずです。

関連する問題