Jenkins を使用してテスト サーバーでアプリケーションをビルドしています。その後、jenkins は、運用サーバーでシェフ スクリプトが実行されるファブリック スクリプトを実行します。
シェフ スクリプトでは、最初に jar を github からデプロイする必要があり、テスト段階で生成されたバージョンを取得する必要があるため、問題はこのバージョン番号を取得する方法です。
Jenkins を使用してテスト サーバーでアプリケーションをビルドしています。その後、jenkins は、運用サーバーでシェフ スクリプトが実行されるファブリック スクリプトを実行します。
シェフ スクリプトでは、最初に jar を github からデプロイする必要があり、テスト段階で生成されたバージョンを取得する必要があるため、問題はこのバージョン番号を取得する方法です。
アプリケーションのバージョンは、属性に保持する必要があります。そうすれば、シェフの実行ごとに非常に簡単に上書きできます。必要なアプリケーション バージョンで json ファイルを作成し、次の実行時にシェフ クライアントまたはソロにフィードするだけです。
chef-client --json-attributes path/to/file.json
これは、クックブック内やロールなど、他の場所から設定された属性をオーバーライドします。
以下にいくつかのオプションを示します。
使用してchef-client -j ...
ください。単一のサーバーまたはサーバーのグループをターゲットにする場合、これは問題ありません。アプリごとに異なる json 属性を設定して配布する必要があるため、複数/複雑な展開では複雑になる可能性があります。
アーティファクト バージョンをデータ バッグ アイテムに書き込みます
knife data bag from file applications myapp.json
。クックブックは、データ バッグ項目myapp
で必要なアプリ バージョン情報を探すようにコーディングされています。applications/myapp
これを行う Jenkins プラグインを作成しました: https://github.com/zhelyan/jenkins-chef-artifact-release
Jenkins サーバー自体からアーティファクトを取得するようにクックブックをコーディングしhttps://jenkins.mycompany.com:8080/job/myapp/lastSuccessfulBuild/artifact/target/myapp.war
ます。
オプション 2 または 3 を実装すると、何がどこにデプロイされたかを示すデプロイ ダッシュボード ページも表示されます。