Jenkinsfileにプロパティのみを含め、パイプラインコードを含めることはできませんか

Asif Kamran Malick

宣言型パイプラインの作成に関して私が遭遇したすべてのチュートリアルは、Jenkinsfileにステージとステップを含めることを提案しています

しかし、私は先輩の一人がそれを反対の方法で書いていることに気づきました。彼はすべてのプロパティを定義するためだけにJenkinsfileを使用します。つまり、彼のJenkinsfileは単なるプロパティファイルであり、それ以上でもそれ以下でもありません。

そして、パイプラインを定義するために、彼は共有ライブラリの概念を利用して、varsフォルダー内のファイルにパイプラインコードを書き込みます。このアプローチの背後にある知恵を推測することはできません。

インターネットのどこにも似たようなものはありませんでした。
この点に関するガイダンスは大歓迎です。私はジェンキンスの世界の初心者です。

VonC

共有ライブラリを使用した拡張で説明されているように、そのアプローチ(私も使用しています)では次のことが可能です。

  • Jenkinsfileのコンテンツを最小限に抑える
  • 特定のジョブを実行する標準的な方法を適用する(共有ライブラリにコード化されている)

その共有ライブラリは、実際の実行を事前定義されたライブラリに委任する前に、Jenkinsfileの値のみを提供するプロセスのテンプレートになります。

OPアシフカムランマリックのことに注意してくださいドキュメントが含まれません

Groovyを使用した「ビルダーパターン」のトリックもありますClosure.DELEGATE_FIRST。これにより、Jenkinsfileはプログラムよりも構成ファイルのように見えますが、これはより複雑でエラーが発生しやすいため、お勧めしません。

それから彼は尋ねます:

公式ドキュメントで実際に落胆したのに、なぜブロガーはその方法を好んだのですか。

確認して使用していますClosure.DELEGATE_FIRST
その理由は、「Jenkinsfileがプログラムよりも構成ファイルのように見えることを許可する」という部分にあります。

これにより、JSONブロックを定義する必要がなくなり、パラメーターを一連のkey=valueとして保持し、読みやすくなります。

共有ライブラリへの呼び出しは次のようになります。

#!/usr/bin/env groovy
@Library("MyLibraries") _
MyLibrary {
    config1 = 'value1'
    config2 = 'value2'
    ...
}
{
    anotherConfigA = 'valueA'
    anotherConfigB = 'valueB'...
    astep(
        ...
    )
}

次に、のjenkinsパイプラインテンプレートでMyLibraries/vars/MyLibrary.ymlこれらのクロージャーブロックを使用できます。

def call(Closure configBlock, Closure body) {
    def config = [:]
    configBlock.resolveStrategy = Closure.DELEGATE_FIRST
    configBlock.delegate = config
    configBlock()

    astep(
      ...
    ){
      if (body) { body() }
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タイプのコンテンツタイプが要素のみであるため、Springs要素「beans」に文字[子]を含めることはできません

分類Dev

Javaプロパティファイルに複数行のコメントを含めることはできますか?

分類Dev

Javaプロパティのキーに空白文字を含めることはできますか?

分類Dev

ラベルまたはプロパティ名にスペースを含めることは可能ですか?

分類Dev

C#のインターフェイスタイプでプロパティにセッターのみを含めることができるのはなぜですか?

分類Dev

インターフェイスのプロパティにバッキングフィールドを含めることはできません

分類Dev

アクションに未定義の「タイプ」プロパティを含めることはできません

分類Dev

アクション式にパイプを含めることはできませんか?

分類Dev

Jenkinsパイプラインにオプションの入力ステップを含めることはできますか?

分類Dev

データパス ""に追加のプロパティを含めることはできません(dryRun)

分類Dev

Swaggerスキーマエラーに追加のプロパティを含めることはできません

分類Dev

エラー:設定されたアクセサーにアクセスできないため、プロパティまたはインデクサー「CharacterStats.currentHealth」をこのコンテキストで使用することはできません

分類Dev

ナビゲーションプロパティを含めることはできません(nullです)

分類Dev

アクションには、未定義の「タイプ」プロパティを含めることはできません。reactjs、reduxで定数のスペルを間違えましたか

分類Dev

ASP.NETコア:Dockerの復元/ビルドにプロジェクトからのサードパーティアセンブリを含めることができませんでした

分類Dev

WordPress:PHPエコーライン内にカスタム投稿タイプループ(ACFの「the_field」を使用)を含めることはできません

分類Dev

Typescriptで同等のプライベート継承(特定のクラスメンバーまたはプロパティのみを含めるか除外する)

分類Dev

CSSローダーの無効なオプションオプションに追加のプロパティを含めることはできません

分類Dev

タイプエラー:プロパティ「x」を未定義から読み取ることができません。値の配列を含める場合のみ

分類Dev

homeプロパティが指定されている場合、routesテーブルに/のエントリを含めることはできません。

分類Dev

Hibernate:persistence.xmlのエラー-要素 'persistence-unit'にテキストコンテンツを含めることはできません。コンテンツタイプは要素のみとして定義されています

分類Dev

@ angular / materialをインストールしようとすると、このエラーが発生しますデータパス ""に追加のプロパティ(スタイル)を含めることはできません

分類Dev

vCard 2.1 Nameプロパティのコンポーネントにコンマを含めることはできますか?

分類Dev

動的に作成されたテーブルエラー「テーブル」にハイパーリンクを作成するタイプ「ハイパーリンク」の子を含めることはできません。

分類Dev

No4jの単一のプロパティキーの下に複数のプロパティを含めることはできますか?

分類Dev

HSQLDBにタイプCURSORのOUTパラメーターを含めることはできますか?

分類Dev

NGRX-アクションに未定義の「タイプ」プロパティを含めることはできません

分類Dev

cvc-complex-type.2.1:タイプのコンテンツタイプが空であるため、要素 'プロパティ'に文字または要素情報アイテム[子]を含めることはできません

分類Dev

アクションには、未定義の「タイプ」プロパティを含めることはできません。反応して?

Related 関連記事

  1. 1

    タイプのコンテンツタイプが要素のみであるため、Springs要素「beans」に文字[子]を含めることはできません

  2. 2

    Javaプロパティファイルに複数行のコメントを含めることはできますか?

  3. 3

    Javaプロパティのキーに空白文字を含めることはできますか?

  4. 4

    ラベルまたはプロパティ名にスペースを含めることは可能ですか?

  5. 5

    C#のインターフェイスタイプでプロパティにセッターのみを含めることができるのはなぜですか?

  6. 6

    インターフェイスのプロパティにバッキングフィールドを含めることはできません

  7. 7

    アクションに未定義の「タイプ」プロパティを含めることはできません

  8. 8

    アクション式にパイプを含めることはできませんか?

  9. 9

    Jenkinsパイプラインにオプションの入力ステップを含めることはできますか?

  10. 10

    データパス ""に追加のプロパティを含めることはできません(dryRun)

  11. 11

    Swaggerスキーマエラーに追加のプロパティを含めることはできません

  12. 12

    エラー:設定されたアクセサーにアクセスできないため、プロパティまたはインデクサー「CharacterStats.currentHealth」をこのコンテキストで使用することはできません

  13. 13

    ナビゲーションプロパティを含めることはできません(nullです)

  14. 14

    アクションには、未定義の「タイプ」プロパティを含めることはできません。reactjs、reduxで定数のスペルを間違えましたか

  15. 15

    ASP.NETコア:Dockerの復元/ビルドにプロジェクトからのサードパーティアセンブリを含めることができませんでした

  16. 16

    WordPress:PHPエコーライン内にカスタム投稿タイプループ(ACFの「the_field」を使用)を含めることはできません

  17. 17

    Typescriptで同等のプライベート継承(特定のクラスメンバーまたはプロパティのみを含めるか除外する)

  18. 18

    CSSローダーの無効なオプションオプションに追加のプロパティを含めることはできません

  19. 19

    タイプエラー:プロパティ「x」を未定義から読み取ることができません。値の配列を含める場合のみ

  20. 20

    homeプロパティが指定されている場合、routesテーブルに/のエントリを含めることはできません。

  21. 21

    Hibernate:persistence.xmlのエラー-要素 'persistence-unit'にテキストコンテンツを含めることはできません。コンテンツタイプは要素のみとして定義されています

  22. 22

    @ angular / materialをインストールしようとすると、このエラーが発生しますデータパス ""に追加のプロパティ(スタイル)を含めることはできません

  23. 23

    vCard 2.1 Nameプロパティのコンポーネントにコンマを含めることはできますか?

  24. 24

    動的に作成されたテーブルエラー「テーブル」にハイパーリンクを作成するタイプ「ハイパーリンク」の子を含めることはできません。

  25. 25

    No4jの単一のプロパティキーの下に複数のプロパティを含めることはできますか?

  26. 26

    HSQLDBにタイプCURSORのOUTパラメーターを含めることはできますか?

  27. 27

    NGRX-アクションに未定義の「タイプ」プロパティを含めることはできません

  28. 28

    cvc-complex-type.2.1:タイプのコンテンツタイプが空であるため、要素 'プロパティ'に文字または要素情報アイテム[子]を含めることはできません

  29. 29

    アクションには、未定義の「タイプ」プロパティを含めることはできません。反応して?

ホットタグ

アーカイブ