GitHub Actions の支払いを管理する GitHubは、macOSランナーのホストにMacStadiumを使用しています。
GitHubホストランナーについて
GitHubホストランナーはGitHub Actionsランナーアプリケーションがインストールされた、GitHubがホストする仮想マシンです。 GitHubは、Linux、Windows、macOSのランナーを提供します。
GitHubホストランナーを使用すると、マシンのメンテナンスとアップグレードが自動的に行われます。 ワークフローは、仮想マシンで直接実行することも、Dockerコンテナで実行することもできます。
ワークフローのジョブごとにランナーの種類を指定できます。 ワークフローの各ジョブは、仮想マシンの新しいインスタンスで実行されます。 ジョブ実行のステップはすべて、仮想マシンの同じインスタンスで実行されるため、そのジョブのアクションはファイルシステムを使用して情報を共有できます。
GitHub Actionsランナーアプリケーションはオープンソースです。 runnerリポジトリに貢献し、Issueを登録できます。
GitHubホストランナーのクラウドホスト
GitHubは、Microsoft AzureのStandard_DS2_v2仮想マシン上でGitHub ActionsランナーアプリケーションがインストールされたLinux及びWindowsランナーをホストします。 GitHubホストランナーアプリケーションは、Azure Pipelines Agentのフォークです。 インバウンドのICMPパケットはすべてのAzure仮想マシンでブロックされるので、pingやtracerouteコマンドは動作しないでしょう。 For more information about the Standard_DS2_v2 machine resources, see "Dv2 and DSv2-series" in the Microsoft Azure documentation.
GitHub hosts macOS runners in GitHub's own macOS Cloud.
GitHubホストランナーの管理権限
LinuxおよびmacOSの仮想環境は、パスワード不要のsudoにより動作します。 現在のユーザが持っているよりも高い権限が求められるコマンドやインストールツールを実行する必要がある場合は、パスワードを入力する必要なく、sudoを使うことができます。 詳しい情報については、「Sudo Manual」を参照してください。
Windowsの仮想マシンは、ユーザアカウント制御(UAC)が無効化されて管理者として動作するように設定されています。 詳しい情報については、Windowsのドキュメンテーションの「ユーザー アカウント制御のしくみ」を参照してください。
サポートされているランナーとハードウェアリソース
各仮想マシンで、同一のハードウェアリソースを使用できます。
- 2コアCPU
- 7 GBのRAMメモリー
- 14 GBのSSDディスク容量
| 仮想環境 | YAMLのワークフローラベル |
|---|---|
| Windows Server 2019 | windows-latest or windows-2019 |
| Ubuntu 20.04 | ubuntu-20.04 |
| Ubuntu 18.04 | ubuntu-latestまたはubuntu-18.04 |
| Ubuntu 16.04 | ubuntu-16.04 |
| macOS Big Sur 11.0 | macos-11.0 |
| macOS Catalina 10.15 | macos-latestもしくはmacos-10.15 |
ノート: Ubuntu 20.04仮想環境は、現在プレビューでのみ提供されています。 YAMLワークフローラベルのubuntu-latestは、引き続きUbuntu 18.04仮想環境を利用します。
Note: The MacOS 11.0 virtual environment is currently provided as a preview only. The macos-latest YAML workflow label still uses the MacOS 10.15 virtual environment.
ワークフローログには、ジョブの実行に使用されたランナーが一覧表示されます。 詳しい情報については、「ワークフロー実行の履歴を表示する」を参照してください。
サポートされているソフトウェア
GitHub ホストランナーに含まれているソフトウェアツールは毎週更新されます。 各ランナーオペレーティングシステム用に含まれるツールの最新のリストについては、以下のリンクを参照してください。
- Ubuntu 20.04 LTS
- Ubuntu 18.04 LTS
- Ubuntu 16.04 LTS
- Windows Server 2019
- Windows Server 2016
- MacOS 10.15
- MacOS 11.0
ノート: Ubuntu 20.04仮想環境は、現在プレビューでのみ提供されています。 YAMLワークフローラベルのubuntu-latestは、引き続きUbuntu 18.04仮想環境を利用します。
Note: The MacOS 11.0 virtual environment is currently provided as a preview only. The macos-latest YAML workflow label still uses the MacOS 10.15 virtual environment.
GitHubホストランナーには、オペレーティングシステムのデフォルトの組み込みツールに加え、上のリファレンスのリスト内のパッケージにが含まれています。 たとえば、Ubuntu及びmacOSのランナーには、grep、find、whichやその他のデフォルトのツールが含まれています。
ワークフローログには、ランナーにプリインストールされているツールへのリンクが含まれています。 詳しい情報については、「ワークフロー実行の履歴を表示する」を参照してください。
リクエストしたいツールがある場合、actions/virtual-environments で Issue を開いてください。
IP アドレス
ノート: GitHubのOrganizationもしくはEnterpriseアカウントでIPアドレスの許可リストを使っているなら、GitHubホストランナーは利用できず、代わりにセルフホストランナーを使わなければなりません。 詳しい情報については「セルフホストランナーについて」を参照してください。
WindowsとUbuntuのランナーはAzureでホストされ、IPアドレスの範囲がAzureデータセンターと同じになります。 現在、すべてのWindows及びUbuntuのGitHubホストランナーは、以下のAzureリージョン内にあります。
- 米国東部(
eastus) - 米国東部2 (
eastus2) - 米国西部2 (
westus2) - 米国中部 (
centralus) - 米国中南部(
southcentralus)
Microsoftは、AzureのIPアドレスの範囲をJSONファイルで毎週更新しています。このファイルは、Azure IP Ranges and Service Tags - Public Cloud (AzureのIPアドレス範囲とサービスタグ - パブリッククラウド)のウェブサイトからダウンロードできます。 内部リソースに対する不正アクセスを防ぐために許可リストが必要な場合には、このIPアドレスの範囲を利用できます。
JSONファイルには、valuesという配列があります。 この配列のうち、たとえば"AzureCloud.eastus2"というようなAzureのリージョンのnameとidがあるオブジェクトで、サポート対象のIPアドレスが見つかります。
サポート対象のIPアドレスの範囲は、"addressPrefixes"オブジェクトにあります。 次に示すのは、JSONファイルを縮めたサンプルです。
{
"changeNumber": 84,
"cloud": "Public",
"values": [
{
"name": "AzureCloud.eastus2",
"id": "AzureCloud.eastus2",
"properties": {
"changeNumber": 33,
"region": "eastus2",
"platform": "Azure",
"systemService": "",
"addressPrefixes": [
"13.68.0.0/17",
"13.77.64.0/18",
"13.104.147.0/25",
...
]
}
}
]
}
ファイルシステム
GitHubは、仮想マシン上の特定のディレクトリでアクションとシェルコマンドを実行します。 仮想マシン上のファイルパスは静的なものではありません。 home、workspace、workflow ディレクトリのファイルパスを構築するには、GitHubが提供している環境変数を使用してください。
| ディレクトリ | 環境変数 | 説明 |
|---|---|---|
home | HOME | ユーザ関連のデータが含まれます。 たとえば、このディレクトリにはログイン試行からの認証情報を含めることができます。 |
workspace | GITHUB_WORKSPACE | アクションとシェルコマンドはこのディレクトリで実行されます。 このディレクトリの内容は、アクションによって変更することができ、後続のアクションでアクセスできます。 |
workflow/event.json | GITHUB_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