JenkinsfileによるJenkins Pipeline as Code
リポジトリに登録したJenkinsfileでビルド、テスト、デプロイのステージを宣言的に定義し、パイプライン自体をアプリケーションとともにバージョン管理します。
「JenkinsfileによるJenkins Pipeline as Code」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Pipeline as Code
Jenkins UI でジョブを手作業で設定する代わりに、リポジトリに保存した Jenkinsfile でパイプライン全体を記述します。パイプラインがコードになるため、レビュー、バージョン管理、移植が可能になります。
宣言的パイプラインとスクリプトパイプライン
Jenkins には 2 種類の構文があります。宣言的パイプラインは構造化されていて初心者にも使いやすく、スクリプトパイプラインは完全な Groovy です。ここでは宣言的パイプラインに焦点を当てます。
pipeline ブロック
宣言的な Jenkinsfile はすべて、実行場所を指定する agent と stages を含む pipeline ブロックから始まります。
pipeline {
agent any
stages {
stage('Build') {
steps { echo 'Building...' }
}
}
}ステージを定義する
各 stage は関連する steps をまとめます。ステージは Jenkins UI では列として表示され、パイプラインの進行状況を視覚的に確認できます。
stages {
stage('Build') { steps { sh 'make build' } }
stage('Test') { steps { sh 'make test' } }
}シェルステップを実行する
sh ステップは、エージェント上でシェルコマンドを実行します。コードのコンパイル、テストの実行、Docker イメージのビルドなどに使用します。
steps {
sh 'docker build -t myapp:${BUILD_NUMBER} .'
}環境変数
environment ブロックは、すべてのステップで使用する変数を定義します。Jenkins は BUILD_NUMBER や GIT_COMMIT などの組み込み変数も提供します。
environment {
REGISTRY = 'registry.example.com'
IMAGE = 'myapp'
}認証情報のバインディング
シークレットをハードコードしてはいけません。Jenkins の認証情報に保存し、credentials() ヘルパーで取得してください。ログでは値がマスクされます。
environment {
REG_PASS = credentials('registry-password')
}Post アクション
post ブロックはステージの完了後に実行され、結果に応じて処理を分岐できます。通知や後片付けに最適です。
post {
success { echo 'Pipeline succeeded' }
failure { echo 'Pipeline failed' }
always { sh 'docker image prune -f' }
}並列ステージ
parallel を使って独立した処理を並列実行すると、処理を高速化できます。たとえば、単体テストと統合テストを同時に実行できます。
stage('Tests') {
parallel {
stage('Unit') { steps { sh 'make unit' } }
stage('Integration') { steps { sh 'make int' } }
}
}条件付きステージ
when ディレクティブを使うと、条件を満たす場合にだけステージを実行できます。たとえば、main ブランチに対してだけデプロイできます。
stage('Deploy') {
when { branch 'main' }
steps { sh './deploy.sh' }
}マルチブランチパイプライン
Jenkins にリポジトリを指定すると、Jenkinsfile を含むすべてのブランチを検出し、ブランチごとにパイプラインを自動作成します。フィーチャーブランチでも追加設定なしに CI を利用できます。
簡単な確認
宣言的パイプラインの定義はどこに置きますか?
まとめ
これで、パイプラインをコードとして定義できるようになりました。
pipeline { agent; stages }が宣言的パイプラインの基本構造ですshステップでコマンドを実行し、environmentとcredentials()で設定を管理しますpost、parallel、whenで機能を拡張できます- マルチブランチパイプラインにより、すべてのブランチで CI を自動的に利用できます
Jenkinsfile はコードと一緒に管理され、コードとともに進化します。
よくある質問
「JenkinsfileによるJenkins Pipeline as Code」レッスンは無料ですか?
はい。「JenkinsfileによるJenkins Pipeline as Code」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「JenkinsfileによるJenkins Pipeline as Code」で何を学びますか?
リポジトリに登録したJenkinsfileでビルド、テスト、デプロイのステージを宣言的に定義し、パイプライン自体をアプリケーションとともにバージョン管理します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「JenkinsfileによるJenkins Pipeline as Code」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Jenkins入門
- JenkinsによるDockerイメージのビルド
- Jenkinsによるデプロイの自動化
- JenkinsfileによるJenkins Pipeline as Code