jenkins-jobs-template
Jenkins Job パイプライン(Jenkinsfile)の基礎的なテンプレート。
環境の構築から行い、基本的な Jenkins の操作、パイプラインの構文、シンタックスを定義してジョブを実行して結果を確認できます。
番号順で行うと環境設定からパイプラインの基本的な構文、実行結果の確認方法等理解できます。
1. Setup
1.1 Node
ご注意:Node は本番環境を想定して構築している内容ではありません。
1.1.1 Jenkins master
こちら の手順で Jenkins master を Dcoker で構築します。
また、基本的な Docker 操作も記載しています。
master のセットアップが終わったら 1.1.2 Jenkins slave 構築前に Swarm plugin を追加してください。
1.1.2 Jenkins slave
こちら の手順で Jenkins slave を Dcoker で構築します。
2. Jenkinsfile エディター
テキストエディタなら何でも良いですが、Visual Studio Code を推奨します。
-
[Visual Studio Code – コード エディター Microsoft Azure](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) - JenkinsFile Support - Visual Studio Marketplace Jenkinsfile をサポート、比較的更新が多いものを選択。
3. プラグイン導入
テンプレートの動作を確認する為に追加で必要なプラグインです。
(Required に が付いているものは必須です。)
plugins | Required | Description |
---|---|---|
Swarm | 通常は master から slave に接続しますが、このプラグインは slave から master に接続できるようになります。 [追加手順] | |
Blue Ocean | パイプラインの視覚化で利用します。 [追加手順と利用方法] | |
NodeJS | - | Jenkins から NodeJS を利用できるようになります。 [追加手順と利用方法] |
4. Templates
- 基本的なパイプラインジョブ作成手順はこちらを参照してください。
- 定義を Pipeline script from SCM を選択して作成する手順はこちらを参照してください。
何れも master ノードで hello world を表示する手順です。
—
凡例:
- Jenkinsfile : アイコンのリンク先にパイプラインスクリプトを添付しています。
- Script Path : Pipeline script from SCM を選択して Script Path の内容を貼り付けて実行できます。
- Results : に結果のスクリーンショットを添付しています。
4.1 Syntax
このテンプレートで利用する主な Syntax です。
何れも master ノードで動作する Jenkinsfile です。
Syntax | Jenkinsfile | Script Path | Description | Results |
---|---|---|---|---|
node | templates/syntax/syntax-node.Jenkinsfile | パイプラインの作業をノードブロック内に制限します、必須ではありませんが意図的に指定ノードのみで作業させたいときに指定する重要な Syntax です。 | ||
stage | templates/syntax/syntax-stage.Jenkinsfile | ビルド、テスト、デプロイ等のタスク単位で進捗状況を視覚化または表示する単位で纏める事ができます。当解説では主に視覚化を目的で Blue Ocean プラグインを利用しています。 | ||
parallel | templates/syntax/syntax-parallel.Jenkinsfile | 並列で各タスク処理するように指定する Syntax です。Jenkinsfile は並列で複数のリポジトリから git clone してビルド → テスト → デプロイするパターンのテンプレートです。 |
その他にも多数の Syntax があります、公式の Pipeline Syntax を参照ください。
4.2 single node
単一ノードのみで動作するテンプレートです。
Title | Node | Syntax | Jenkinsfile | Script Path | Description | Results |
---|---|---|---|---|---|---|
hello world | master | node, sh | templates/single-node/hello-world.Jenkinsfile | master ノードのシェルスクリプトで echo します。 | , | |
hello world | linux-slave | ” | template/single-node-only/linux-slave-hello-world.Jenkinsfile | linux-salve のシェルスクリプトで echo します。 [作成手順補足] | , |
4.3 multi nodes
複数ノードで動作するテンプレートです。
Title | Nodes | Syntax | Jenkinsfile | Script Path | Description | Results |
---|---|---|---|---|---|---|
multiple nodes hello world | master, linux-slave | node, sh | templates/multi-node/master-linux-node-hello-world.Jenkinsfile | master → linux-slave の順で echo します。 | , | |
multiple nodes stage hello world | master, linux-slave | node, stage, sh | templates/multi-node/master-linux-node-hello-world-stage.Jenkinsfile | master → linux-slave の順でステージブロックで echo します。 [ステージブロック補足] | , | |
multiple nodes stage parallel hello world | master, linux-slave | node, stage, parallel, sh | templates/multi-node/master-linux-node-stage-parallel.Jenkinsfile | master, linux-slave の並列で echo します。[parallel 補足] | , |
5. example
より実用的なパイプラインジョブの example です。
追加でプラグイン導入、slave の環境設定が必要になります。
example | Nodes | Syntax | Jenkinsfile | Script Path | Description | Results |
---|---|---|---|---|---|---|
Angular build | linux-slave | deleteDir, checkout, nodejs, dir, archiveArtifacts, fingerprint | templates/example/example-linux-slave-angular-build.Jenkinsfile | linux-slave で Angular10 のプロジェクトをビルドして成果物に保存して指紋もとります。 NodeJS のプラグインが必要です。 | , , | |
.NET Core build | linux-slave | deleteDir, checkout, archiveArtifacts, fingerprint | templates/example/example-linux-slave-dotnet-build.Jenkinsfile | linux-slave で .NET Core のプロジェクトをビルドして成果物に保存して指紋もとります。 linux-slave に .NET Core SDK のインストールが必要です。 | , , |
リファレンス:
商標について
当ドキュメントに記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
なお、本文および図表中では、「™」、「®」は明記しておりません。
免責事項
当ドキュメント上の掲載内容については細心の注意を払っていますが、その情報に関する信頼性、正確性、完全性について保証するものではありません。
掲載された内容の誤り、および掲載された情報に基づいて行われたことによって生じた直接的、また間接的トラブル、損失、損害については、筆者は一切の責任を負いません。
また当ドキュメント、およびドキュメントに含まれる情報、コンテンツは、通知なしに随時変更されます。