web-dev-qa-db-ja.com

ジェンキンスの別の仕事から特定のビルド番号を宣伝するにはどうすればよいですか?

Promoted Build PluginJenkinsからインストールしましたが、現在、既存のジョブからビルドを促進するためにいくつかの問題に直面しています。シナリオは次のとおりです。

  1. 既存のNightly Buildジョブがあり、毎晩実行され、必要なすべてのテストとメトリックを実行します。

  2. パラメーター$ {BUILD_NUMBER}を受け入れ、Deploy Buildから対応する$ {BUILD_NUMBER}を持つビルドをデプロイする既存のNightly Buildがあります

    • [Nightly Build]が実行され、アーティファクト#39が正常にビルドされたと言う
    • #39をパラメーターとして渡す[Deploy Build]を実行できるようになりました
      • [Nightly Build]#39のアーティファクトがデプロイされます

ここまでは順調ですね。 Build Promotionsを追加したい部分です...

This is exactly what I need to achieve

Nightly Build #39からDeploy Build既にビルドされていることに注意してください)を昇格させる方法はありますか? `ここで失われたものの種類:(

明確なアップストリーム/ダウンストリームの関係ではありません。なぜなら、これらには以下がないためです。実行中に常にこのビルドを実行し、次に他のビルドを実行します。 [Nightly Build]の後。

61
Matheus

マークされた回答は、質問の優れた説明です。しかし、「ジェンキンスから特定のビルド番号を昇格する方法」を探している人々のための解決策を提案したいと思います

CURLとREST APIを使用してフォースプロモーションを行うために一般化されたソリューションを使用できます。ShellまたはGroovyスクリプトからcurlを実行できます。

[〜#〜] curl [〜#〜] を使用したシェルソリューション

    user_name="jenkins_user"
    user_token="token" 
    promotion_name="Test_Promote"
    jenkins_url="http://build-server.com"
    JOB_NAME="job_name"
    JOB_NO="job-no"

    url="--silent -u $user_name:$user_token $jenkins_url/job/$JOB_NAME/$JOB_NO/promotion/forcePromotion?name=$promotion_name"
    curl $url


Groovy Soultion:
        user_name="jenkins_user"
        user_token="token" 
        promotion_name="Test_Promote"
        jenkins_url="http://build-server.com"
        JOB_NAME="job_name"
        JOB_NO="job-no"


def response = "curl -u $user_name:$user_token \" $jenkins_url/job/$JOB_NAME/$JOB_NO/promotion/forcePromotion?name=$promotion_name".execute().text

Jenkinsユーザートークンを生成する方法: https://jenkins.io/blog/2018/07/02/new-api-token-system/

1
Biju