1

Jenkins : バージョン 1.525
Jenkins サーバー URL : http://my.jenkins.server.com:9040
Linux Red Hat 5.3

Artifactory : 無料版
Artifactory サーバー URL : http://my.artifactory.server:8081/Artifactory

Jenkins でビルドし、Artifactory サーバーのそれぞれのリポジトリにアーティファクトをアップロードすることに成功しました。

ビルドが発生すると、成果物 (ProjectA-1.0.0.25.tar.gz) が libs-snapshot-local リポジトリの下の Artifactory に移動します。ここで、1.0.0 は、アプリケーション/ジェンキンス ジョブの特定のリリースのメジャー バージョン、マイナー バージョン、および中間バージョンを示しています。この場合は「ProjectA」です。ビルド番号が 25 であるとしましょう


ProjectA ビルドが Development で安定すると、そのアプリケーション リリースの特定のビルドを INT またはその他のより高い環境 (QA/PrePROD など) に昇格させます。

この昇格プロセスでは、どのビルドを昇格させるかを選択するだけで、Jenkins のプロモーテッド ビルド プラグインを使用して、それを成功させることができます。

さて、必要なものは次のとおりです。

  1. 昇格プロセス中に、「ProjectA-1.0.0.25.tar.gz」が正常に実行された後、ProjectA のリリース 1.0.0 の Jenkins および Artifactory (libs-snapshot-local) からすべての Jenkins ビルドを削除する Groovy スクリプトを呼び出したいと考えています。 INTに昇格。プロモーション部分は現在正常に機能しています。必要なのは、Jenkins の Jenkins ビルド (1.0.0.1 から 1.0.0.24 および >= 1.0.0.25) とそれに関連するアーティファクトを Artifactory リポジトリ (libs-snapshot-local) から削除する Groovy スクリプトだけです。

私たちの会社のアイデアは、アプリケーションのリリース バージョンのビルドが昇格されると、(Jenkins/Artifactory にある) 他のすべてのビルド/アーティファクトを Groovy スクリプトを使用して完全に削除することです。別のビルド番号をプロモートしたい場合はどうすればよいか、誰かが尋ねるでしょう。私たちの場合、私たちはそれを望んでいません。簡単なルールは、誰かが ProjectA-1.0.0.25.tar.gz をプロモートした場合、ビルド/アーティファクトが 1.0.0.25 以外の Jenkins および Artifactory で ProjectA のビルド/アーティファクトを削除し、新しいリリース 1.1.0 を続行することです。


次の機能を備えたスクリプトは素晴らしいでしょう。
1. プロパティ ファイル (jenkins.properties / artifactory.properties) を使用します。これには、ホスト名/ユーザー名/パスワードなどに関する変数が含まれている場合があります。
2. REST API を使用して、特定のアプリケーション/ジョブおよび特定のリリース (ex 1.0.0 の場合) の削除を実行します
。ファイル - またはそれ (Artifatory) - どちらの場合も、アプリケーションとそのリリース値は同じになります。
4. ビルドを INT にプロモートする (Jenkins プロモート プラグインを使用) 場合は、常に Jenkins サーバーと Artifactory サーバーから libs-snapshot-release でのみ削除することがわかっています。
誰かが (後で) QA に昇格した場合、artifactory リポジトリは (libs-stage-local) になります。

つまり、Groovy スクリプトを呼び出し、いくつかの変数/値 (REST) を渡し、削除するアプリケーション/ジョブとそのビルド リリース バージョンを指定する必要があります。次に、ユーザーが渡すビルド (つまり、1.0.0.25) を除くすべてのビルドを削除します。

私はGroovyとJenkins/Artifactoryのこの「削除」作業を行うためのREST APIの使用の両方に不慣れです。誰かがこの種のアクティビティを実行するサンプル スクリプトを既に持っていて、共有できる場合は、私の設定に従って微調整し、昇格ステップで上記の動作が見られるかどうかを確認します。このスクリプトの動作するバージョンを取得するのに時間がかかります。同じタスクを実行するスクリプト コードを歓迎します (優れた人が大きなドキュメント/リンクを参照するように言うのではなく、Groovy でより優れたコーダーになることを知っています)。ただし、この投稿の目的全体が遅れます)。

どうもありがとう。

4

5 に答える 5

-1

まず第一に、しかしそれは行われていません。削除する理由:

  1. あなたに害を及ぼさないいくつかの追加のJenkinsビルド。
  2. アーティファクト リポジトリからアーティファクトを削除します (Artifactory という名前です !!)

そうは言っても、そうする正当な理由がまだあるかもしれないことは理解しています(それを知るのは興味深いでしょう)。これは、私が提案できる代替アプローチです。

  1. Jenkins : Maven を使用していると思います。その場合、M2 リリース プラグインを使用して「リリース ビルド」を作成します。現在、これらのビルドの横には特別なスーツケースのようなアイコンがあり、「このビルドを永久に保持する」ようになっています。アーティファクトを保持する日数、保持するビルドの数などを Jenkins で試して、要件に対処できるように独自のポリシーを作成できます。

  2. Artifactory : Nexus を使用しているため、実装が異なる場合があります。ただし、スナップショット ビルドが毎回上書きされるように設定できます。したがって、常にn多数のリリース ビルドと正確に 1 つのスナップショットがあります。2 つ目のポリシーは、「リリース時にスナップショットを削除する」です。これにより、同じ番号のスナップショットとリリースがリポジトリに共存しないことが保証されます。これが本来あるべき姿であり、Artifactory のようなリポジトリから「リリースされた」アーティファクトを削除する理由はないはずです。それがリリースの要点です。

于 2013-09-18T16:39:00.707 に答える