Skip to main content
ドキュメントには� �繁に更新が� えられ、その都度公開されています。本ページの翻訳はま� 未完成な部分があることをご了承く� さい。最新の情� �については、英語のドキュメンテーションをご参照く� さい。本ページの翻訳に問題がある� �合はこちらまでご連絡く� さい。

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-06-03. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてく� さい。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してく� さい。

Travis CI から GitHub Actions への移行

GitHub Actions と Travis CI は複数の類似点を共有しているため、GitHub Actions への移行は比較的簡単です。

ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。

はじめに

このガイドは、Travis CI から 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 はどちらもステータスバッジをサポートしており、ビルドが成功したか失敗したかを示すことができます。 詳しい情� �については、「リポジトリにワークフローステータスバッジを追� する」を参照してく� さい。

Using a matrix

Travis CI and GitHub Actions both support a matrix, allowing you to perform testing using combinations of operating systems and software packages. For more information, see "Using a matrix for your jobs."

以下は、各システ� の構文を比較した例です。

Travis CI GitHub Actions
matrix:
  include:
    - rvm: 2.5
    - rvm: 2.6.3
jobs:
  build:
    strategy:
      matrix:
        ruby: [2.5, 2.6.3]

特定のブランチをターゲットにする

Travis CI と GitHub Actions はどちらも、CI を特定のブランチにターゲット設定できます。 詳しい情� �については、「GitHub Actionsのワークフロー構文」を参照してく� さい。

以下が、それぞれのシステ� の構文の例です。

Travis CI GitHub Actions
branches:
  only:
    - main
    - 'mona/octocat'
on:
  push:
    branches:
      - main
      - 'mona/octocat'

サブモジュールをチェックアウトする

Travis CI と GitHub Actions はどちらも、サブモジュールをリポジトリクローンに含めるかどうかの制御ができます。

以下が、それぞれのシステ� の構文の例です。

Travis CI GitHub Actions
git:
  submodules: false
- uses: actions/checkout@v2
  with:
    submodules: false

マトリックスで環境変数を使用する

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 のシークレットにアクセスできるリポジトリを制限できます。 Environment protection rules can require manual approval for a workflow to access environment secrets. 詳しい情� �については「暗号化されたシークレット」を参照してく� さい。

ジョブとワークフロー間でファイルを共有する

GitHub Actions には、成果物のストレージの統合サポートが含まれており、ワークフロー内のジョブ間でファイルを共有できます。 結果のファイルを保存して、他のワークフローと共有することもできます。 詳しい情� �については、「ジョブ間でデータを共有する」を参照してく� さい。

自分のランナーをホストする

ジョブに特定のハードウェアまたはソフトウェアが必要な� �合、GitHub Actions を使用すると、自分のランナーをホストして、処理のためにジョブをそれらに送信できます。 GitHub Actions では、ポリシーを使用してこれらのランナーへのアクセス方法を制御し、Organization またはリポジトリレベルでアクセスを許可することもできます。 詳しい情� �については、「自分のランナーをホストする」を参照してく� さい。

GitHub Actions で様々な言語を使用する

GitHub Actions でさまざまな言語を使用する� �合、ジョブにステップを作成して言語の依存関係を設定できます。 特定の言語での作業の詳細については、それぞれのガイドを参照してく� さい。

スクリプトを実行する

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
language: python
python:
  - "3.7"

script:
  - python script.py
jobs:
  run_python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v2
        with:
          python-version: '3.7'
          architecture: 'x64'
      - run: python script.py

依存関係のキャッシング

Travis CIとGitHub Actionsでは、後で利用できるよう依存関係を手動でキャッシュできます。

GitHub Actions caching is only available for repositories hosted on GitHub.com or GitHub Enterprise Server 3.5 and later. 詳しい情� �については、「ワークフローを高速化するための依存関係のキャッシュ」を参照してく� さい。

一般的なタスクの例

このセクションは、GitHub ActionsとTravis CIでの一般的なタスクの実行方法を比較します。

環境変数の設定

GitHub Actionsのジョブではカスタ� の環境変数を作成できます。 例:

Travis CI GitHub Actionsのワークフロー
env:
  - MAVEN_PATH="/usr/local/maven"
jobs:
  maven-build:
    env:
      MAVEN_PATH: '/usr/local/maven'

Node.jsでのビルド

Travis CI GitHub Actionsのワークフロー
install:
  - npm install
script:
  - npm run build
  - npm test
name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '12.x'
      - run: npm install
      - run: npm run build
      - run: npm test

次のステップ

GitHub Actionsの主な機能について学び続けるには、「GitHub Actionsを学ぶ」を参照してく� さい。