2016-08-18 10 views
1

私たちはgitリポジトリでJenkinsfileを使用して、Jenkins CIの実行方法を定義しています。Jenkinsファイルを実行する前にコードを実行

レポジトリのJenkinsfileで定義されたパイプラインを実行する前に、コードやステップなどを注入することはできますか?場合によっては、パイプラインを実行する前にいくつかのステップを追加する必要があります。

Mavenのジョブを実行している例: はジェンキンスファイルには、手順はクローンが含まれ、構築、テスト、このようにパイプラインジョブを実行している をインストールする手順とのパイプラインを作成しますが:

cloneFromGit->buildMvn->testMvn->installMvn 

我々が必要しかし、すべてのビルド成果物(ジャーなど)がアーティファクト・リポジトリに入ることを確認します。私たちが必要とするのは、特別なステップを追加するためにJenkinsfileを更新/変更する機能です。私たちは、パイプラインはこれらの手順を実行して持つことができるに必要な上記の例を使用:

cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository 

侵入/簡単な方法は、しかし、我々が持っている(でもたい)、全てのJenkinsfilesにpushToArifactRepository〜ステップを追加することで制御を超えます任意のJenkinsfileの内容が記載されています。

答えて

1

Jenkins Workflow Global Libraryをお勧めします。ここでは、異なるパイプラインジョブ間で共有される機能を定義できます。しかし、これはすべてJenkinsfileが積極的にその "ポストビルド"タスクを呼び出す必要があります。そのタスクの実際の実装をグローバルライブラリに隠すことができるので、Jenkinsfileは非常に簡単です。私が使っている例では

次のように、私のJenkinsfile sが唯一のパイプライン実行をトリガ:

def pipe = new org.typo3.chefci.v1.Pipeline() 
pipe.execute() 

を実際の実装がcentral repositoryです。

+0

これは私が考えたものです。私たちは現在、オプションの「もの」のためにグローバルライブラリを使用しています。私たちは本当にすべてのJenkinsfilesに義務的な最後のステップを課したくはありませんが、それが唯一の方法ならば、そうしてください。 –

+0

この問題は、実際には[tag:jenkins-pipeline]固有ではないことを意味します。たとえばすべてのビルド後にコードを実行できる[Global Post Script Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Global+Post+Script+Plugin)それが 'WorkflowJob'でもうまくいけばいいと思います。 – StephenKing

関連する問題