{"meta":{"title":"Travis CI から GitHub Actions への移行","intro":"GitHub Actions Travis CI は複数の類似点を共有しているため、 GitHub Actionsへの移行が比較的簡単になります。","product":"GitHub Actions","breadcrumbs":[{"href":"/ja/actions","title":"GitHub Actions"},{"href":"/ja/actions/tutorials","title":"チュートリアル"},{"href":"/ja/actions/tutorials/migrate-to-github-actions","title":"GitHub Actions に移行する"},{"href":"/ja/actions/tutorials/migrate-to-github-actions/manual-migrations","title":"手動移行"},{"href":"/ja/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci","title":"Travis CI から移行する"}],"documentType":"article"},"body":"# Travis CI から GitHub Actions への移行\n\nGitHub Actions Travis CI は複数の類似点を共有しているため、 GitHub Actionsへの移行が比較的簡単になります。\n\n## はじめに\n\nこのガイドは、Travis CI から GitHub Actions に移行するのに役立ちます。 概念と構文を比較して類似点を説明し、一般的なタスクに対するさまざまなアプローチを示します。\n\n## 開始する前に\n\nGitHub Actionsへの移行を開始する前に、そのしくみを理解すると便利です。\n\n* GitHub Actions ジョブを示す簡単な例については、[GitHub Actionsのクイック スタート](/ja/actions/get-started/quickstart) を参照してください。\n* GitHub Actionsの基本的な概念については、[ワークフロー成果物を使ったデータの格納と共有](/ja/actions/tutorials/store-and-share-data#passing-data-between-jobs-in-a-workflow) を参照してください。\n\n## ジョブ実行の比較\n\nCI タスクを実行するタイミングを制御するために、 GitHub Actions\\_ワークフロー\\_ では、既定で並列で実行される *ジョブ* が使用されます。 各ジョブには、定義した順序で実行される *ステップ* が含まれています。 ジョブのセットアップおよびクリーンアップアクションを実行する必要がある場合は、各ジョブでステップを定義してこれらを実行できます。\n\n## 主な類似点\n\nGitHub Actions と Travis CI は特定の類似点を共有しており、事前にこれらを理解することで、移行プロセスを円滑に進めることができます。\n\n### YAML 構文の使用\n\nTravis CI と GitHub Actions はどちらも YAML を使用してジョブとワークフローを作成し、これらのファイルはコードのリポジトリに格納されます。\nGitHub Actionsで YAML を使用する方法の詳細については、[サンプル ワークフローの作成](/ja/actions/tutorials/create-an-example-workflow) を参照してください。\n\n### カスタム変数\n\nTravis CI によって、環境変数を設定し、ステージ間で共有することができます。 同様に、 GitHub Actions を使用すると、ワークフローの変数を定義できます。 詳しくは、「[変数に情報を格納する](/ja/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables)」をご覧ください。\n\n### 既定の変数\n\nTravis CI と GitHub Actions の両方に、YAML ファイルで使用できる既定の環境変数が含まれています。\nGitHub Actionsについては、[変数リファレンス](/ja/actions/reference/workflows-and-actions/variables#default-environment-variables) の一覧を参照してください。\n\n### 並列なジョブの処理\n\nTravis CI では、`stages` を使ってジョブを並列実行できます。 同様に、 GitHub Actions は並列で `jobs` 実行されます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idneeds)」をご覧ください。\n\n### 状態バッジ\n\nTravis CI と GitHub Actions 両方のサポート ステータス バッジを使用して、ビルドが成功しているか失敗しているかを示します。\n詳しくは、「[ワークフロー状態バッジの追加](/ja/actions/how-tos/monitor-workflows/add-a-status-badge)」をご覧ください。\n\n### マトリックスの使用\n\nTravis CI と GitHub Actions はどちらもマトリックスをサポートしているため、オペレーティング システムとソフトウェア パッケージの組み合わせを使用してテストを実行できます。 詳しくは、「[ワークフローでのジョブのバリエーションの実行](/ja/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations)」をご覧ください。\n\n以下は、各システムの構文を比較した例です。\n\n#### マトリックスの Travis CI 構文\n\n```yaml\nmatrix:\n  include:\n    - rvm: '2.5'\n    - rvm: '2.6.3'\n```\n\n#### GitHub Actions 行列の構文\n\n```yaml\njobs:\n  build:\n    strategy:\n      matrix:\n        ruby: ['2.5', '2.6.3']\n```\n\n### 特定のブランチをターゲットにする\n\nTravis CI と GitHub Actions の両方で、CI を特定のブランチにターゲットにできます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#onpushbranchestagsbranches-ignoretags-ignore)」をご覧ください。\n\n以下は、それぞれのシステムにおける構文の例です。\n\n#### 特定のブランチをターゲットにするための Travis CI 構文\n\n```yaml\nbranches:\n  only:\n    - main\n    - 'mona/octocat'\n```\n\n#### GitHub Actions 特定のブランチを対象とする構文\n\n```yaml\non:\n  push:\n    branches:\n      - main\n      - 'mona/octocat'\n```\n\n### サブモジュールをチェックアウトする\n\nTravis CI と GitHub Actions の両方を使用すると、サブモジュールをリポジトリクローンに含めるかどうかを制御できます。\n\n以下は、それぞれのシステムにおける構文の例です。\n\n#### サブモジュールをチェックアウトするための Travis CI 構文\n\n```yaml\ngit:\n  submodules: false\n```\n\n#### GitHub Actions サブモジュールをチェックアウトするための構文\n\n```yaml\n- uses: actions/checkout@v6\n  with:\n    submodules: false\n```\n\n### マトリックスで環境変数を使用する\n\nTravis CI と GitHub Actions の両方で、カスタム変数をテスト マトリックスに追加できます。これにより、後の手順で変数を参照できます。\n\nGitHub Actionsでは、`include` キーを使用して、カスタム環境変数をマトリックスに追加できます。 この例では、`node-version` のマトリックス エントリはそれぞれ、環境変数 `site` と `datacenter` に異なる値を使用するように構成されています。 次に `Echo site details` ステップでは、`env: ${{ matrix.env }}` を使用してカスタム変数を参照します。\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n       include:\n         - node-version: '14.x'\n           site: \"prod\"\n           datacenter: \"site-a\"\n         - node-version: '16.x'\n           site: \"dev\"\n           datacenter: \"site-b\"\n    steps:\n      - name: Echo site details\n        env:\n          SITE: ${{ matrix.site }}\n          DATACENTER: ${{ matrix.datacenter }}\n        run: echo $SITE $DATACENTER\n```\n\n## GitHub Actions の主な機能\n\nTravis CI から移行する場合は、 GitHub Actionsで次の主な機能を検討してください。\n\n### シークレットの保存\n\nGitHub Actions を使用すると、シークレットを格納し、ジョブ内でそれらを参照できます。\nGitHub Actions 組織は、組織のシークレットにアクセスできるリポジトリを制限できます。 デプロイ保護規則では、環境シークレットにアクセスするためのワークフローに対して手動承認が必要になる場合があります。 詳しくは、「[シークレット](/ja/actions/concepts/security/secrets)」をご覧ください。\n\n### ジョブとワークフロー間でファイルを共有する\n\nGitHub Actions にはアーティファクト ストレージの統合サポートが含まれており、ワークフロー内のジョブ間でファイルを共有できます。 結果のファイルを保存して、他のワークフローと共有することもできます。 詳しくは、「[GitHub Actionsについて](/ja/actions/get-started/understand-github-actions)」をご覧ください。\n\n### 自分のランナーをホストする\n\nジョブに特定のハードウェアまたはソフトウェアが必要な場合は、 GitHub Actions 独自のランナーをホストし、処理のためにジョブを送信できます。\nGitHub Actions また、ポリシーを使用してこれらのランナーへのアクセス方法を制御し、組織またはリポジトリ レベルでアクセスを許可することもできます。 詳しくは、「[セルフホステッド ランナーの管理](/ja/actions/how-tos/manage-runners/self-hosted-runners)」をご覧ください。\n\n### 同時ジョブと実行時間\n\nGitHub Actionsの同時実行ジョブとワークフロー実行時間は、GitHubプランによって異なる場合があります。 詳しくは、「[課金と使用](/ja/actions/concepts/billing-and-usage)」をご覧ください。\n\n### で異なる言語を使用する GitHub Actions\n\nGitHub Actionsで異なる言語を使用する場合は、ジョブで言語の依存関係を設定するステップを作成できます。 特定の言語の操作の詳細については、「[コードのビルドとテスト](/ja/actions/tutorials/build-and-test-code)」を参照してください。\n\n## スクリプトの実行\n\nGitHub Actions では、 `run` 手順を使用してスクリプトまたはシェル コマンドを実行できます。 特定のシェルを使うには、スクリプトへのパスを指定するときに `shell` 型を指定できます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun)」をご覧ください。\n\n次に例を示します。\n\n```yaml\nsteps:\n  - name: Run build script\n    run: ./.github/scripts/build.sh\n    shell: bash\n```\n\n## GitHub Actions におけるエラー処理\n\nGitHub Actionsに移行する場合、注意が必要になる可能性があるエラー処理にはさまざまな方法があります。\n\n### スクリプトエラーの処理\n\nGitHub Actions は、いずれかの手順でエラー コードが返された場合、ジョブを直ちに停止します。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#exit-codes-and-error-action-preference)」をご覧ください。\n\n### ジョブエラーの処理\n\nGitHub Actions では、 `if` 条件を使用して、特定の状況でジョブまたはステップを実行します。 たとえば、あるステップは、別のステップで `failure()` が発生したときに実行できます。 詳しくは、「[GitHub Actions　のワークフロー構文](/ja/actions/reference/workflows-and-actions/workflow-syntax#example-using-status-check-functions)」をご覧ください。 また、[`continue-on-error`](/ja/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) を使って、ジョブが失敗したときにワークフロー実行が停止しないようにすることもできます。\n\n## 条件文と式の構文を移行する\n\n条件式でジョブを実行するには、Travis CI と GitHub Actions で同様の `if` 条件構文を共有します。\nGitHub Actions では、`if` 条件を使用して、条件が満たされている場合にのみジョブまたはステップを実行できるようにできます。 詳しくは、「[ワークフロー内とアクション内で式を評価する](/ja/actions/reference/workflows-and-actions/expressions)」をご覧ください。\n\n次の例は、ステップを実行するかどうかを `if` 条件文で制御する方法を示しています。\n\n```yaml\njobs:\n  conditional:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"This step runs with str equals 'ABC' and num equals 123\"\n        if: env.str == 'ABC' && env.num == 123\n```\n\n## フェーズからステップに移行する\n\nTravis CI が\\_フェーズ\\_を使用して\\_ステップ\\_を実行する場合、GitHub Actionsには\\_アクション\\_を実行する\\_ステップ\\_があります。\n[\nGitHub Marketplace\n](https://github.com/marketplace?type=actions)で事前構築済みのアクションを見つけるか、独自のアクションを作成できます。 詳しくは、「[自動化の再利用](/ja/actions/how-tos/reuse-automations)」をご覧ください。\n\n以下は、それぞれのシステムにおける構文の例です。\n\n### フェーズとステップの Travis CI 構文\n\n```yaml\nlanguage: python\npython:\n  - \"3.7\"\n\nscript:\n  - python script.py\n```\n\n### GitHub Actions ステップとアクションの構文\n\n```yaml\njobs:\n  run_python:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.7'\n          architecture: 'x64'\n      - run: python script.py\n```\n\n## 依存関係のキャッシング\n\nTravis CI と GitHub Actions を使用すると、後で再利用できるように依存関係を手動でキャッシュできます。\n\nこれらの例は、各システムのキャッシュ構文を示しています。\n\n### キャッシュの Travis CI 構文\n\n```yaml\nlanguage: node_js\ncache: npm\n```\n\n### キャッシュのGitHub Actions構文\n\n```yaml\n- name: Cache node modules\n  uses: actions/cache@v4\n  with:\n    path: ~/.npm\n    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}\n    restore-keys: v1-npm-deps-\n```\n\n## 一般的なタスクの例\n\nこのセクションでは、 GitHub Actions と Travis CI が一般的なタスクを実行する方法を比較します。\n\n### 環境変数の設定\n\nGitHub Actions ジョブでカスタム環境変数を作成できます。\n\n#### 環境変数の Travis CI 構文\n\n```yaml\nenv:\n  - MAVEN_PATH=\"/usr/local/maven\"\n```\n\n#### GitHub Actions 環境変数を含むワークフロー\n\n```yaml\njobs:\n  maven-build:\n    env:\n      MAVEN_PATH: '/usr/local/maven'\n```\n\n### Node.jsでのビルド\n\n#### Node.js でのビルドのための Travis CI\n\n```yaml\ninstall:\n  - npm install\nscript:\n  - npm run build\n  - npm test\n```\n\n#### GitHub Actions Node.js を使用して構築するためのワークフロー\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v7\n        with:\n          node-version: '16.x'\n      - run: npm install\n      - run: npm run build\n      - run: npm test\n```\n\n## 次のステップ\n\nGitHub Actionsの主な機能については、[ワークフローの書き込み](/ja/actions/how-tos/write-workflows) を参照してください。"}