1

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 でホストされている) を参照または同期するように構成できますか? そうでなければ、この機能がどれほど使いやすいかわかりません (同意しない場合はお知らせください)。

4

2 に答える 2

2

Jenkins を SCM として使用することはできないため、次のようなトリックがあります。

  1. WorkflowLibs全体を Bitbucket に保存します。
  2. Bitbucket リポジトリが更新されたときに開始されるジェンキンス ジョブがあります。
  3. その jenkins ジョブは、Jenkins と Bitbucket から workflowLibs.git をチェックアウトします。
  4. 次に、Jenkins のすべてを rm -rf し、Bitbucket から最新のものをコピーして、「git commit && git push」を実行すると、出来上がり jenkins workflowLibsが bitbucket から更新されます!
于 2015-07-23T20:52:46.960 に答える
2

別の Groovy スクリプト内から Groovy スクリプトをロードする方法はありますか

はい、loadステップを使用します。おそらく、あなたの質問を明確にする必要があります。

[the cps-global-lib] リポジトリは、外部リポジトリを指すか、外部リポジトリと同期するように構成できますか

申し訳ありません。

于 2015-04-24T14:52:17.323 に答える