ノート: GitHub Actionsは、GitHub Enterprise Server 2.22で限定ベータとして利用可能でした。 ベータは終了しました。 GitHub Actionsは、GitHub Enterprise Server 3.0以降で一般に利用可能になりました。 詳しい情報については、GitHub Enterprise Server 3.0 のリリースノートを参照してください。
- GitHub Enterprise Server 3.0以降へのアップグレードに関する詳しい情報については「GitHub Enterprise Serverのアップグレード」を参照してください。
- アップグレード後のGitHub Actionsの設定に関する詳しい情報については、GitHub Enterprise Server 3.0のドキュメンテーションを参照してください。
ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。
はじめに
このガイドは、Travis CI から GitHub Actions に移行するときに役立ちます。 概念と構文を比較して類似点を説明し、一般的なタスクに対するさまざまなアプローチを示します。
はじめる前に
GitHub Actions への移行を開始する前に、その仕組みを理解しておくと便利です。
- GitHub Actions ジョブを示す簡単な例については、「GitHub Actions のクイックスタート」を参照してください。
- 本質的な GitHub Actions の概念については、「GitHub Actions の概要」を参照してください。
ジョブ実行の比較
CI タスクがいつ実行されるかを制御できるように、GitHub Actions ワークフローはデフォルトで並行して実行されるジョブを使用します。 各ジョブには、定義した順序で実行されるステップが含まれています。 ジョブのセットアップおよびクリーンアップアクションを実行する必要がある場合は、各ジョブでステップを定義してこれらを実行できます。
主な類似点
GitHub Actions と Travis CI は特定の類似点を共有しており、これらを事前に理解しておくと、移行プロセスを円滑に進めることができます。
YAML 構文の使用
Travis CI と GitHub Actions はどちらも YAML を使用してジョブとワークフローを作成し、これらのファイルはコードのリポジトリに保存されます。 GitHub Actions が YAML を使用する方法の詳細については、「ワークフローファイルを作成する」を参照してください。
カスタム環境変数
Travis CI では環境変数を設定し、ステージ間で共有できます。 同様に、GitHub Actions を使用すると、ステップ、ジョブ、またはワークフローの環境変数を定義できます。 詳しい情報については、「環境変数」を参照してください。
デフォルトの環境変数
Travis CI と GitHub Actions の両方に、YAML ファイルで使用できるデフォルトの環境変数が含まれています。 GitHub Actions の場合、これらは「デフォルトの環境変数」にリストされています。
並列なジョブの処理
Travis CI は、stages
を使用してジョブを並行して実行できます。 同様に、GitHub Actions は jobs
を並行して実行します。 詳細については、「依存ジョブを作成する」を参照してください。
ステータスバッジ
Travis CI と GitHub Actions はどちらもステータスバッジをサポートしており、ビルドが成功したか失敗したかを示すことができます。 詳しい情報については、「リポジトリにワークフローステータスバッジを追加する」を参照してください。
ビルドマトリックスを使用する
Travis CI と GitHub Actions はどちらもビルドマトリックスをサポートしているため、オペレーティングシステムとソフトウェアパッケージの組み合わせを使用してテストを実行できます。 詳しい情報については、「ビルドマトリックスを使用する」を参照してください。
以下は、各システムの構文を比較した例です。
Travis CI | GitHub Actions |
---|---|
|
|
特定のブランチをターゲットにする
Travis CI と GitHub Actions はどちらも、CI を特定のブランチにターゲット設定できます。 詳しい情報については、「GitHub Actionsのワークフロー構文」を参照してください。
以下が、それぞれのシステムの構文の例です。
Travis CI | GitHub Actions |
---|---|
|
|
サブモジュールをチェックアウトする
Travis CI と GitHub Actions はどちらも、サブモジュールをリポジトリクローンに含めるかどうかの制御ができます。
以下が、それぞれのシステムの構文の例です。
Travis CI | GitHub Actions |
---|---|
|
|
マトリックスで環境変数を使用する
Travis CI と GitHub Actions はどちらも、カスタム環境変数をテストマトリックスに追加できます。これにより、後のステップで変数を参照できます。
GitHub Actions では、include
キーを使用して、カスタム環境変数をマトリックスに追加できます。 この例では、node-version
に対するマトリクスのエントリは、それぞれ環境変数のsite
及びdatacenter
に異なる値を使うように設定されています。 そしてEcho site details
ステップはenv: ${{ matrix.env }}
を使ってカスタム変数を参照しています。
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- node-version: 10.x
site: "prod"
datacenter: "site-a"
- node-version: 12.x
site: "dev"
datacenter: "site-b"
steps:
- name: Echo site details
env:
SITE: ${{ matrix.site }}
DATACENTER: ${{ matrix.datacenter }}
run: echo $SITE $DATACENTER
GitHub Actions の主な機能
Travis CI から移行する場合は、GitHub Actions の次の主要機能を考慮してください。
シークレットを保存する
GitHub Actions を使用すると、シークレットを保存して、ジョブで参照できます。 GitHub Actions Organization は、Organization のシークレットにアクセスできるリポジトリを制限できます。 詳しい情報については、「暗号化されたシークレット」を参照してください。
ジョブとワークフロー間でファイルを共有する
GitHub Actions には、成果物のストレージの統合サポートが含まれており、ワークフロー内のジョブ間でファイルを共有できます。 結果のファイルを保存して、他のワークフローと共有することもできます。 詳しい情報については、「ジョブ間でデータを共有する」を参照してください。
自分のランナーをホストする
ジョブに特定のハードウェアまたはソフトウェアが必要な場合、GitHub Actions を使用すると、自分のランナーをホストして、処理のためにジョブをそれらに送信できます。 GitHub Actions では、ポリシーを使用してこれらのランナーへのアクセス方法を制御し、Organization またはリポジトリレベルでアクセスを許可することもできます。 詳しい情報については、「自分のランナーをホストする」を参照してください。
同時ジョブと実行時間
GitHub Actions の同時ジョブとワークフローの実行時間は、GitHub プランによって異なります。 詳しい情報については、「使用制限、支払い、および管理」を参照してください。
GitHub Actions で様々な言語を使用する
GitHub Actions でさまざまな言語を使用する場合、ジョブにステップを作成して言語の依存関係を設定できます。 特定の言語での作業の詳細については、それぞれのガイドを参照してください。
- Building and testing Node.js or Python
- PowerShell のビルドとテスト
- MavenでのJavaのビルドとテスト
- GradleでのJavaのビルドとテスト
- AntでのJavaのビルドとテスト
スクリプトを実行する
GitHub Actions は、run
ステップを使用してスクリプトまたはシェルコマンドを実行できます。 特定のシェルを使用するには、スクリプトへのパスを指定するときに shell
タイプを指定できます。 詳細については、「GitHub Actionsのワークフロー構文」を参照してください。
例:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
GitHub Actions でのエラー処理
GitHub Actions に移行する場合、エラー処理にはさまざまな方法があり、注意が必要です。
スクリプトエラーの処理
GitHub Actions は、いずれかのステップでエラーコードが返された場合、すぐにジョブを停止します。 詳細については、「GitHub Actionsのワークフロー構文」を参照してください。
ジョブエラーの処理
GitHub Actions は、if
条件を使用して、特定の状況でジョブまたはステップを実行します。 たとえば、別のステップで failure()
が発生したときに、そのステップを実行できます。 詳しい情報については、「GitHub Actions のワークフロー構文」を参照してください。 また、continue-on-error
を使用して、ジョブが失敗したときにワークフローの実行が停止しないようにすることもできます。
条件文と式の構文を移行する
条件式でジョブを実行するために、Travis CI と GitHub Actions は同様の if
条件構文を共有します。 GitHub Actions を使用すると、if
条件を使用して、条件が満たされない限りジョブまたはステップが実行されないようにすることができます。 For more information, see "Expressions."
次の例は、if
条件がステップを実行するかどうかを制御する方法を示しています。
jobs:
conditional:
runs-on: ubuntu-latest
steps:
- run: echo "This step runs with str equals 'ABC' and num equals 123"
if: env.str == 'ABC' && env.num == 123
フェーズからステップに移行する
Travis CI がフェーズを使用してステップを実行する場合、GitHub Actions にはアクションを実行するステップがあります。 GitHub Marketplaceでビルド済みのアクションを見つけることも、あるいは独自のアクションを作成することもできます。 詳細については、「アクションの構築について」を参照してください。
以下が、それぞれのシステムの構文の例です。
Travis CI | GitHub Actions |
---|---|
|
|
依存関係のキャッシング
Travis CIとGitHub Actionsでは、後で利用できるよう依存関係を手動でキャッシュできます。 以下の例は、それぞれのシステムでのキャッシュの構文を示します。
Travis CI | GitHub Actions |
---|---|
|
|
GitHub Actions キャッシングは、GitHub ホストランナーにのみ適用できます。 詳しい情報については、「ワークフローを高速化するための依存関係のキャッシュ」を参照してください。
一般的なタスクの例
このセクションは、GitHub ActionsとTravis CIでの一般的なタスクの実行方法を比較します。
環境変数の設定
GitHub Actionsのジョブではカスタムの環境変数を作成できます。 例:
Travis CI | GitHub Actionsのワークフロー |
---|---|
|
|
Node.jsでのビルド
Travis CI | GitHub Actionsのワークフロー |
---|---|
|
|
次のステップ
GitHub Actionsの主な機能について学び続けるには、「GitHub Actionsを学ぶ」を参照してください。