Skip to main content

About GitHub-hosted runners

GitHubは、ワークフローを実行するためのホストされた仮想マシンを提供します。 仮想マシンには、GitHub Actionsで使用できるツール、パッケージ、および設定の環境が含まれています。

Overview of GitHub-hosted runners

Runners are the machines that execute jobs in a GitHub Actions workflow. For example, a runner can clone your repository locally, install testing software, and then run commands that evaluate your code.

GitHub provides runners that you can use to run your jobs, or you can host your own runners. Each GitHub-hosted runner is a new virtual machine (VM) hosted by GitHub with the runner application and other tools preinstalled, and is available with Ubuntu Linux, Windows, or macOS operating systems. GitHubホストランナーを使用すると、マシンのメンテナンスとアップグレードが自動的に行われます。

GitHubホストランナーの利用

To use a GitHub-hosted runner, create a job and use runs-on to specify the type of runner that will process the job, such as ubuntu-latest, windows-latest, or macos-latest. For the full list of runner types, see "Supported runners and hardware resources."

When the job begins, GitHub automatically provisions a new VM for that job. All steps in the job execute on the VM, allowing the steps in that job to share information using the runner's filesystem. You can run workflows directly on the VM or in a Docker container. When the job has finished, the VM is automatically decommissioned.

The following diagram demonstrates how two jobs in a workflow are executed on two different GitHub-hosted runners.

Two runners processing separate jobs

The following example workflow has two jobs, named Run-npm-on-Ubuntu and Run-PSScriptAnalyzer-on-Windows. When this workflow is triggered, GitHub provisions a new virtual machine for each job.

  • The job named Run-npm-on-Ubuntu is executed on a Linux VM, because the job's runs-on: specifies ubuntu-latest.
  • The job named Run-PSScriptAnalyzer-on-Windows is executed on a Windows VM, because the job's runs-on: specifies windows-latest.
YAML
name: Run commands on different operating systems
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  Run-npm-on-Ubuntu:
    name: Run npm on Ubuntu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm help

  Run-PSScriptAnalyzer-on-Windows:
    name: Run PSScriptAnalyzer on Windows
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install PSScriptAnalyzer module
        shell: pwsh
        run: |
          Set-PSRepository PSGallery -InstallationPolicy Trusted
          Install-Module PSScriptAnalyzer -ErrorAction Stop
      - name: Get list of rules
        shell: pwsh
        run: |
          Get-ScriptAnalyzerRule

While the job runs, the logs and output can be viewed in the GitHub UI:

Job output in the Actions UI

GitHub Actionsランナーアプリケーションはオープンソースです。 runnerリポジトリに貢献し、Issueを登録できます。

サポートされているランナーとハードウェアリソース

Windows および Linux 仮想マシンのハードウェア仕様:

  • 2-core CPU (x86_64)
  • 7 GB of RAM
  • 14 GB of SSD space

macOS 仮想マシンのハードウェア仕様:

  • 3-core CPU (x86_64)
  • 14 GB of RAM
  • 14 GB of SSD space
ランナーイメージ YAMLのワークフローラベル 注釈
Windows Server 2022 windows-latestもしくはwindows-2022 現在windows-latestラベルはWindows Server 2022のランナーイメージを使用しています。
Windows Server 2019 windows-2019
Ubuntu 22.04 ubuntu-22.04
Ubuntu 20.04 ubuntu-latestまたはubuntu-20.04
Ubuntu 18.04 [非推奨] ubuntu-18.04 ubuntu-20.04もしくはubuntu-22.04に移行。 詳しい情報についてはGitHubブログのポストを参照してください。
macOS Monterey 12 macos-12
macOS Big Sur 11 macos-latestもしくはmacos-11 現在macos-latestラベルはmacOS 11のランナーイメージを使用しています。
macOS Catalina 10.15 [deprecated] macos-10.15 macOS-11もしくはmacOS-12に移行してください。 詳しい情報についてはGitHubブログのポストを参照してください。

ノート: -latestランナーイメージは、GitHubが提供する最新の安定版イメージであり、オペレーティングシステムのベンダーが提供する最新バージョンのオペレーティングシステムではないことがあります。

ノート: ベータ及び非推奨のイメージは"as-is"、"with all faults"、"as available"で提供されており、サービスレベルアグリーメント及び保証の対象外です。 ベータのイメージは、カスタマーサポートの対象外になっていることがあります。

ワークフローログには、ジョブの実行に使用されたランナーが一覧表示されます。 詳しい情報については、「ワークフロー実行の履歴を表示する」を参照してください。

サポートされているソフトウェア

GitHub ホストランナーに含まれているソフトウェアツールは毎週更新されます。 The update process takes several days, and the list of preinstalled software on the main branch is updated after the whole deployment ends.

Preinstalled software

ワークフローログには、正確なランナーにプレインストールされているツールへのリンクが含まれています。 ワークフローログでこの情報を見つけるには、[Set up job] セクションを展開します。 Under that section, expand the Runner Image section. The link following Included Software will describe the preinstalled tools on the runner that ran the workflow. Installed software link 詳しい情報については、「ワークフローの実行履歴を表示する」を参照してください。

For the overall list of included tools for each runner operating system, see the links below:

GitHubホストランナーには、オペレーティングシステムのデフォルトの組み込みツールに加え、上のリファレンスのリスト内のパッケージにが含まれています。 たとえば、Ubuntu及びmacOSのランナーには、grepfindwhichやその他のデフォルトのツールが含まれています。

Using preinstalled software

アクションを使用して、ランナーにインストールされているソフトウェアと対話することをお勧めします。 このアプローチにはいくつかのメリットがあります。

  • アクションでは通常、バージョンの選択、引数を渡す機能、パラメータなどの機能が提供されています
  • これにより、ソフトウェアの更新に関係なく、ワークフローで使用されるツールのバージョンが同じままになります

If there is a tool that you'd like to request, please open an issue at actions/runner-images. このリポジトリには、ランナーに関するすべての主要なソフトウェア更新に関するお知らせも含まれています。

Installing additional software

You can install additional software on GitHub-hosted runners. For more information, see "Customizing GitHub-hosted runners".

Cloud hosts used by GitHub-hosted runners

GitHub hosts Linux and Windows runners on Standard_DS2_v2 virtual machines in Microsoft Azure with the GitHub Actions runner application installed. GitHubホストランナーアプリケーションは、Azure Pipelines Agentのフォークです。 インバウンドのICMPパケットはすべてのAzure仮想マシンでブロックされるので、pingやtracerouteコマンドは動作しないでしょう。 For more information about the Standard_DS2_v2 resources, see "Dv2 and DSv2-series" in the Microsoft Azure documentation.

GitHubは、GitHub自身macOS Cloud内でmacOSランナーをホストします。

Workflow continuity

GitHub Actionsサービスが一時的に利用できなくなっている場合、ワークフローの実行はトリガーされてから30分以内にキューイングされていなければ、破棄されます。 たとえば、ワークフローがトリガーされ、そしてGitHub Actionsサービスが31分以上利用できなければ、そのワークフローの実行は処理されません。

In addition, if the workflow run has been successfully queued, but has not been processed by a GitHub-hosted runner within 45 minutes, then the queued workflow run is discarded.

Administrative privileges

LinuxおよびmacOSの仮想環境は、パスワード不要のsudoにより動作します。 現在のユーザが持っているよりも高い権限が求められるコマンドやインストールツールを実行する必要がある場合は、パスワードを入力する必要なく、sudoを使うことができます。 詳しい情報については、「Sudo Manual」を参照してください。

Windowsの仮想マシンは、ユーザアカウント制御(UAC)が無効化されて管理者として動作するように設定されています。 For more information, see "How User Account Control works" in the Windows documentation.

IP アドレス

ノート: GitHubのOrganizationもしくはEnterpriseアカウントでIPアドレスの許可リストを使っているなら、GitHubホストランナーは利用できず、代わりにセルフホストランナーを使わなければなりません。 詳しい情報については「セルフホストランナーについて」を参照してください。

To get a list of IP address ranges that GitHub Actions uses for GitHub-hosted runners, you can use the GitHub REST API. 詳しい情報については「GitHubメタ情報の取得」エンドポイントのレスポンス中のactionsキーを参照してください。

Windows及びUbuntuのランナーはAzureでホストされており、そのためAzureのデータセンターと同じIPアドレスの範囲を持ちます。 macOSランナーはGitHub独自のmacOSクラウドでホストされます。

Since there are so many IP address ranges for GitHub-hosted runners, we do not recommend that you use these as allow-lists for your internal resources.

このAPIが返すGitHub ActionsのIPアドレスのリストは、週に1回更新されます。

ファイルシステム

GitHubは、仮想マシン上の特定のディレクトリでアクションとシェルコマンドを実行します。 仮想マシン上のファイルパスは静的なものではありません。 homeworkspaceworkflow ディレクトリのファイルパスを構築するには、GitHubが提供している環境変数を使用してください。

ディレクトリ環境変数説明
homeHOMEユーザ関連のデータが含まれます。 たとえば、このディレクトリにはログイン試行からの認証情報を含めることができます。
workspaceGITHUB_WORKSPACEアクションとシェルコマンドはこのディレクトリで実行されます。 このディレクトリの内容は、アクションによって変更することができ、後続のアクションでアクセスできます。
workflow/event.jsonGITHUB_EVENT_PATHワークフローをトリガーしたwebhookイベントのPOSTペイロード。 GitHubは、アクションを実行するたびにアクション間でファイルの内容を隔離するためにこれを書き換えます。

各ワークフローに対してGitHubが作成する環境変数のリストについては、「環境変数の利用」を参照してください。

Dockerコンテナのファイルシステム

Dockerコンテナで実行されるアクションには、 /githubパスの下に静的なディレクトリがあります。 ただし、Dockerコンテナ内のファイルパスを構築するには、デフォルトの環境変数を使用することを強くお勧めします。

GitHubは、/githubパス接頭辞を予約し、アクションのために3つのディレクトリを作成します。

  • /github/home
  • /github/workspace - ノート: GitHub ActionsはデフォルトのDockerユーザ(root)で実行しなければなりません。 DockerfileでUSER命令が設定されていないことを確認してください。使われていた場合には、GITHUB_WORKSPACEにアクセスできなくなります。
  • /github/workflow

参考リンク