Skip to main content

インターネットにアクセスできないセルフホストランナーにツールキャッシュを設定する

インターネットにアクセスできないセルフホステッド ランナー上の actions/setup アクションを使用するには、最初にワークフローのランナーのツール キャッシュにデータを入力する必要があります。

注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

含まれているセットアップアクションとランナーツールキャッシュについて

GitHub Enterprise Server上のGitHub Actionsは、完全なインターネットアクセスのない環境で動作するように設計されています。 既定では、ワークフローは GitHub.com と GitHub Marketplace からのアクションを使用できません。

GitHub が作成した公式のアクションのほとんどは、GitHub Enterprise Server に自動的にバンドルされます。 ただし、インターネットにアクセスできないセルフホステッド ランナーでは、setup-node などの付属の actions/setup-LANGUAGE アクションを使用する前に、いくつかの構成が必要です。

actions/setup-LANGUAGE アクションは通常、必要な環境バイナリをランナーのツール キャッシュにダウンロードするためにインターネット アクセスが必要です。 インターネットにアクセスできないセルフホストのランナーはバイナリをダウンロードできないため、ランナーのツールキャッシュに手動でデータを入力する必要があります。

GitHub.com で GitHub Actions ワークフローを実行してランナーツールキャッシュにデータを入力できます。このワークフローは、GitHub ホストランナーのツールキャッシュをアーティファクトとしてアップロードし、インターネットで切断されたセルフホストランナーで転送および抽出できます。

注: GitHub ホステッド ランナーのツール キャッシュは、同じオペレーティング システムとアーキテクチャを含むセルフホステッド ランナーにのみ使用できます。 たとえば、ubuntu-22.04 GitHub ホステッド ランナーを使用してツール キャッシュを生成している場合、セルフホステッド ランナーは 64 ビットの Ubuntu 22.04 マシンである必要があります。 GitHub ホステッド ランナーについて詳しくは、「GitHub ホステッド ランナーについて」を参照してください。

前提条件

  • セルフホストランナーに必要な開発環境を決定します。 次の例は、Node.js バージョン 10 および 12 を使用して、setup-node アクションのツール キャッシュにデータを入力する方法を示しています。
  • ワークフロー実行に使用できる GitHub.com のリポジトリへのアクセス。
  • セルフホストのランナーのファイルシステムにアクセスして、ツールのキャッシュフォルダーにデータを入力します。

セルフホストランナーのツールキャッシュに入力する

  1. GitHub.com で、GitHub Actions ワークフローの実行に使用できるリポジトリに移動します。

  2. GitHub ホステッド ランナーのツール キャッシュを含む成果物をアップロードする、リポジトリの .github/workflows フォルダーに新しいワークフロー ファイルを作成します。

    次の例は、Node.js バージョン 10 および 12 で setup-node アクションを使用して、Ubuntu 22.04 環境のツール キャッシュをアップロードするワークフローを示しています。

    name: Upload Node.js 10 and 12 tool cache
    on: push
    jobs:
      upload_tool_cache:
        runs-on: ubuntu-22.04
        steps:
          - name: Clear any existing tool cache
            run: |
              mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old"
              mkdir -p "${{ runner.tool_cache }}"
          - name: Setup Node 10
            uses: actions/setup-node@v3
            with:
              node-version: 10.x
          - name: Setup Node 12
            uses: actions/setup-node@v3
            with:
              node-version: 12.x
          - name: Archive tool cache
            run: |
              cd "${{ runner.tool_cache }}"
              tar -czf tool_cache.tar.gz *
          - name: Upload tool cache artifact
            uses: actions/upload-artifact@v3
            with:
              path: ${{runner.tool_cache}}/tool_cache.tar.gz
    
  3. ワークフロー実行からツールキャッシュアーティファクトをダウンロードします。 成果物のダウンロード手順については、「ワークフローの成果物をダウンロードする」を参照してください。

  4. ツールキャッシュアーティファクトをセルフホストランナーに転送し、ローカルツールキャッシュディレクトリに抽出します。 既定のツール キャッシュ ディレクトリは RUNNER_DIR/_work/_tool です。 ランナーでまだジョブが処理されていない場合は、_work/_tool ディレクトリを作成する必要がある場合があります。

    上記の例でアップロードされたツールキャッシュアーティファクトを抽出した後、次の例のようなセルフホストランナーのディレクトリ構造を作成する必要があります。

    RUNNER_DIR
    ├── ...
    └── _work
        ├── ...
        └── _tool
            └── node
                ├── 10.22.0
                │   └── ...
                └── 12.18.3
                    └── ...
    

インターネットにアクセスできないセルフホステッド ランナーで、setup-node アクションを使用できるようになりました。 問題が発生した場合は、ワークフローに適切なツールキャッシュを設定していることを確認してください。 たとえば、setup-python アクションを使用する必要がある場合は、使用する Python 環境をツール キャッシュに入力する必要があります。