ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。
はじめに
JenkinsとGitHub Actionsは、どちらも自動的にコードのビルド、テスト、公開、リリース、デプロイを行うワークフローを作成できます。 JenkinsとGitHub Actionsは、ワークフローの設定において似ているところがあります。
- Jenkinsは宣言的パイプラインを使ってワークフローを作成します。これはGitHub Actionsのワークフローファイルに似ています。
- Jenkinsはステージを使ってステップの集合を実行しますが、GitHub Actionsは1つ以上のステップもしくは個別のコマンドをグループ化するのにジョブを使います。
- JenkinsとGitHub Actionsはコンテナベースのビルドをサポートします。 詳しい情� �については「Docker コンテナアクションを作成する」を参照してく� さい。
- ステップもしくはタスクは、再利用とコミュニティとの共有が可能です。
詳しい情� �については、「GitHub Actionsの中� �的概念」を参照してく� さい。
主要な差異
- Jenkinsには、パイプラインの作成用の構文として、宣言的パイプラインとスクリプトパイプラインの2種類があります。 GitHub Actionsは、ワークフローと設定ファイルの作成にYAMLを使います。 詳しい情� �については、「GitHub Actionsのワークフロー構文」を参照してく� さい。
- Jenkinsのデプロイメントは通常セルフホストであり、ユーザが自身のデータセンター内のサーバーをメンテナンスします。 GitHub Actionsは、ジョブの実行に利用できる独自のランナーをホストするハイブリッドクラウドのアプローチを提供しながら、セルフホストランナーもサポートします。 詳しい情� �については「セルフホストランナーについて」を参照してく� さい。
機能の比較
ビルドの分配
Jenkinsでは、ビルドを単一のビルドエージェントに送信することも、複数のエージェントに対して分配することもできます。 それらのエージェントを、オペレーティングシステ� の種類などの様々な属性に従って分類することもできます。
同様に、GitHub Actions はジョブを GitHub ホストまたはセルフホストランナーに送信でき、ラベルを使用してさまざまな属性に従ってランナーを分類できます。 For more information, see "Understanding GitHub Actions" and "About self-hosted runners."
セクションを利用したパイプラインの整理
Jenkinsは、宣言的パイプラインを複数のセクションに分割します。 同様に、GitHub Actions はワークフローを個別のセクションに編成します。 以下の表は、JenkinsのセクションをGitHub Actionsのワークフローと比較しています。
Jenkinsのディレクティブ | GitHub Actions |
---|---|
agent | jobs.<job_id>.runs-on jobs.<job_id>.container |
post | |
stages | jobs |
steps | jobs.<job_id>.steps |
ディレクティブの利用
Jenkinsは、宣言的パイプラインを管理するためにディレクティブを使います。 それらのディレクティブは、ワークフローの特徴と、その実行方法を定義します。 以下の表は、それらのディレクティブがGitHub Actionsの概念とどのように対応するかを示しています。
シーケンシャルなステージの利用
並列なジョブの処理
Jenkinsはステージ
とステップ
を並行して実行できますが、GitHub Actionsが並行に処理できるのは現時点ではジョブ� けです。
Jenkinsの並列処理 | GitHub Actions |
---|---|
parallel | jobs.<job_id>.strategy.max-parallel |
Matrix
Both GitHub Actions and Jenkins let you use a matrix to define various system combinations.
Jenkins | GitHub Actions |
---|---|
axis | strategy/matrix context |
stages | steps-context |
excludes |
ステップを使ったタスクの実行
Jenkinsはステップ
をまとめてステージ
にグループ化します。 それらの各ステップは、スクリプト、関数、コマンドなどです。 同様に、GitHub Actionsはジョブ
を使って特定のステップ
のグループを実行します。
Jenkinsのステップ | GitHub Actions |
---|---|
script | jobs.<job_id>.steps |
一般的なタスクの例
cron
で実行するようパイプラインをスケジュール
Jenkinsのパイプライン | GitHub Actionsのワークフロー |
---|---|
|
|
パイプライン中での環境変数の設定
Jenkinsのパイプライン | GitHub Actionsのワークフロー |
---|---|
|
|
上流のプロジェクトからのビルド
Jenkinsのパイプライン | GitHub Actionsのワークフロー |
---|---|
|
|
複数のオペレーティングシステ� でのビルド
Jenkinsのパイプライン | GitHub Actionsのワークフロー |
---|---|
|
|