Jenkins Workflow プラグインをいじってみましたが、より複雑なビルドのベスト プラクティスについてはよくわかりません。主に:
Groovy スクリプトを別の Groovy スクリプト内からロードする方法はありますか (DSL テキスト領域オプションを使用しない場合)?
答えはノーだと思いますが、とにかく聞きたかったのです。
私の明らかな動機は、共通のコード (クローン作成、RPM のインストール、デプロイなど) を共有することです。私のユースケースは、さまざまな AWS 環境にわたるマイクロサービスの構築とデプロイであるため、多くの Jenkins ジョブ (および多くの反復ステップ) があります。
私が実施している現在の「回避策」は、DSL テキスト領域を使用して複数のスクリプトをロードすることです。
def repo = 'example-sensu-rspec-tests'
node {
git url: 'https://github.com/bsnape/jenkins-workflow-example.git'
common = load 'common.groovy'
flow = load 'flow2.groovy'
common.clone(repo)
flow.unit()
flow.acceptance()
common.deploy('staging')
}
common
一般的なものを指しますflow
が、プロジェクト固有のビルド手順になります。
これは合理的なアプローチですか (明らかにこれは基本的な例です)。
Jenkins もWorkflow Global Libraryを提供していることは知っていますが、現在の実装についてはわかりません (つまり、Jenkins は内部 Git リポジトリを持っています)。
このリポジトリは、外部リポジトリ (例: GitHub でホストされている) を参照または同期するように構成できますか? そうでなければ、この機能がどれほど使いやすいかわかりません (同意しない場合はお知らせください)。