18

ビルドの最後のステップとしてアーティファクトをアーカイブしました。次のようなものとして入手できます: https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT -r8304-20130807-1507-app.zip

プロモーション プロセスでアーティファクトに簡単にアクセスするにはどうすればよいですか? 最新の成功したビルドではなく、特定のビルドにアクセスする必要があることに注意してください。

昇格プロセスの目標は、アーティファクトを S3 にコピーして、デプロイ ジョブでさらに処理することです。したがって、ビルド #52 を開発に昇格 (特定の S3 バケットにコピー) し、後でビルド #50 を本番に昇格するなどです。

理想的には、シェル スクリプトでアーティファクトにアクセスして、ファイルの名前などを変更できます。ビルドのアーカイブされたアーティファクトにアクセスするための環境変数はありますか、それは見つかりませんか、またはこれをどのように行う必要がありますか? $BUILD_URL昇格プロセスに固有のものであり$JOB_URL、昇格ジョブのシェル スクリプトでビルド自体を指していません。

コピー アーティファクト プラグインを使用すると、プロモーション プロセスで他のビルドからアーティファクトをコピーすることしかできません。これは私が行う必要はありません。

4

3 に答える 3

23

私は解決策を見つけたと信じています。

概要

  • パーマリンクで指定
  • 特定のビルドを使用し、ビルド番号を${PROMOTED_NUMBER}

ソリューション

前提条件

  • Copy Artifact プラグインをインストールする必要があります。
  • プロモーションにアクセスさせたいアーティファクトをアーカイブします
    • ビルド後のアクションで、アーティファクトをアーカイブするアクション追加し、アーカイブするファイルをプロモーションにアクセスさせたいものに設定します。
  • 古いアーティファクトを破棄しないでください
    • ジョブ構成で、[古いビルドを破棄]の選択を解除するか、ビルドを昇格させたい限りその設定がアーティファクトを保持するようにします。

プロモーションの設定:

通常どおり、昇格したビルドを名前と基準でセットアップします。

[Actions] セクションで、[ Copy artifacts from an other project]アクションを追加し、これらの値を設定します。

  • プロジェクト名:${PROMOTED_JOB_NAME}
  • どのビルド: 特定のビルド
  • ビルド番号:${PROMOTED_NUMBER}
  • コピーするアーティファクト:path/to/your/artifacts/**
  • 目標:${BUILD_TAG}

次に、本当にやりたいアクションを追加します。たとえば、アーティファクトを保存するためにアーティファクトをアーカイブするアクションを追加します。パスにプレフィックスを付けることを忘れないでください${BUILD_TAG}${BUILD_TAG}/path/to/your/artifacts/**

理由についてのメモ

アーティファクトのコピー

おそらくご存じのとおり、プロモーションでは、ビルドのワークスペースのコンテンツにアクセスする必要はありません。別のサーバーで実行される可能性があり、ワークスペースにまったくアクセスできないか、古いビルドまたは新しいビルドのワークスペースにアクセスできない可能性があります。したがって、使用するアーティファクトを現在のワークスペースにコピーする必要があります。

これは、ターゲット値が設定されている理由でもあります。ワークスペースは、他のビルドまたはプロモーションで汚染されている可能性があります。ターゲットを に設定${BUILD_TAG}昇格プロセスに固有のフォルダーを作成することにより、ワークスペースに既に存在するファイルとの競合を防ぎます。

${PROMOTED_*} 変数

あなたが述べたように、通常のビルド変数は昇格プロセス自体を参照しますが、Promoted Build Plugin は代わりに実際のビルドを参照するいくつかの環境変数を定義します。

パーマリンク

Jenkins のコンテキストでは、パーマリンクは、何らかのタイプの最新ビルドまたは最新のプロモーションを指す特別なリンクのみを参照します。そのため、常に最新バージョンを入手できます

私のバージョンの Jenkins では、ドロップダウンがテキスト ボックスに置き換えられています。のような特定のビルドへの URL の書き込みは、特別なパーマリンクの 1 つとして認識されないhttp://jenkins/job/myjob/59/ため、コピーは失敗します。

于 2014-11-26T12:31:25.827 に答える
5

Copy Artifact プラグインを使用できます。メイン プロジェクトからアーティファクトをコピーするように設定し、パーマリンクが最新のプロモーション: このプロモーション プロセスである [パーマリンクで指定] を選択します。

(プロモーション構成はここでそれ自体を参照するため、このようなプロモーションを 1 ステップで追加することはできないことに注意してください。ビルド ステップなしでプロモーションを追加し、保存してから、戻ってビルド ステップを追加する必要があります。)

于 2013-08-07T21:00:34.643 に答える