3

承認者が curl コマンドを使用して特定のビルドを承認する方法はありますか?

ビルドを手動で承認するために、Promoted Builds Plugin を使用しています。

curl コマンドの下で試していると、「エラー 400 何も送信されていません」というメッセージが表示されます。どこでも検索しましたが、適切な答えが得られませんでした。助けてください

curl http://admin:XXXXXXXXXXXX@JENKINS_URL/job/JOB_NAME/129/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve?token=abcde1234

JSONデータを渡そうとすると、「エラー403リクエストに有効なクラムが含まれていませんでした」がスローされます

コマンドは curl http://admin:XXXXXXXXXXXX@JENKINS_URL/job/JOB_NAME/129/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve?token=abcde1234 --data-urlencode json=です。 '{&Submit=承認}'

Jenkins でプロモートされたビルドを手動で承認するために、この API サポートに従いましたか? 参照として投稿しますが、運はありません

4

1 に答える 1

3

ええ、多くのプラグアンドプレイの後、最終的に解決策を得ました..他の人を助けることができるので共有すると考えました. まず、私が渡している Json 値が正しくなく、プロモーションが期待するすべてのパラメーターがありません。2番目に、CSRF保護を有効にしたため、HTTPリクエストには有効なクラムが必要です。だから私がしたことは、ダミーのジョブを手動で承認し、昇格されたジョブの JSON を取得することでした。渡されたすべてのパラメーターが含まれています。そのため、CURL コマンドから渡されるすべてのパラメーターを取得するのに役立ちました。最後に、実際の URL を以下に示します。要件に応じて、追加のパラメーターを JSON DATA に渡す/削除することができます。

注意:クラムフィールド名は、多くのスタックオーバーフローの回答で提供された回答から変更されています。ファイル名は「.crumb」ではなく「Jenkins-Crumb」になりました

curl -v -H "Jenkins-Crumb:XXXXXXXXXXX" -X POST http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionCondition/hudson.plugins.promoted_builds.conditions.ManualCondition/approve --data-urlencode json='{"parameters":[{"_class":"hudson.model.StringParameterValue","name":"PARAMETER","value":""},{"_class":"hudson .model.StringParameterValue","name":"Job","value":"Deploy(ZettaDevelopment)"},{"_class":"hudson.model.StringParameterValue","name":"BuildSelection","value" :"PARAMETER"},{"_class":"hudson.model.StringParameterValue","名前":"PARAMETER","値":"PARAMETER"}]}'

渡されたパラメーター値は、http://USER:TOKEN@JENKINS_URL/job/JOB_NAME/JOB_NUMBER/promotion/promotionProcess/PromoteForTesting/promotionBuild/Build_NUMBER/api/jsonを使用して検索されます

Build_NUMBER は手動で承認したビルドです。出力から、渡される必要なパラメーターを簡単に取得できます。

少なくとも私にとってはうまくいったので、これが役立つことを願っています:-)

于 2016-10-08T21:01:56.437 に答える