monolithprojects.github_actions_runner
GitHub Actions Runner
この役割は、LinuxおよびmacOSシステム上でローカルGitHub Actions Runnerをデプロイ/再デプロイ/アンインストールし、登録/登録解除します(互換性リストを参照)。 Enterprise、Organization、およびRepository Runnersをサポートしています。
ロールのインストール
requirements.yml
roles:
- name: monolithprojects.github_actions_runner
version: 1.21.1
src: https://github.com/MonolithProjects/ansible-github_actions_runner
必要条件
システムはGitHub APIにアクセスできる必要があります。
このロールはGitHubにアクセスするためのPersonal Access Tokenを必要とします。トークンは
PERSONAL_ACCESS_TOKEN
環境変数として設定できます。
注意
トークンには、リポジトリランナーを作成する際にはrepo
スコープ、組織用のランナーを作成する際にはadmin:org
スコープ、エンタープライズランナーを作成する際にはmanage_runners:enterprise
スコープが必要です。 GitHubアカウント用のPersonal Access Tokenはこちらで作成できます。
警告
個人用アクセストークンをGitHubリポジトリに保存しないでください。GitHub Secretsやその他の秘密サービスを使用してください。
ランナーのユーザーは、事前に作成されている必要があります。 推奨ロール:
monolithprojects.user_management
CentOSシステムにはEPELリポジトリが必要です。 推奨ロール:
robertdebock.epel
サポートされるCPUアーキテクチャ
- ARM、ARM64(依存関係のインストールはこのロールに含まれていません)
- AMD64、x86_64
サポートされるオペレーティングシステム
- Red Hat Enterprise Linux 7
- CentOS 7
- Rocky Linux 8+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- MacOS High Sierra +
週次テスト済みのOS:
- Debian 11
- Fedora 39
- Rocky Linux 9
- Ubuntu 20,22
ロール変数
これはdefaults/main.yml
からのコピーです
---
# ランナーのユーザー - ローカルランナーサービスが実行されているユーザー
runner_user: "{{ lookup('env', 'USER') }}"
# ローカルランナーがインストールされるディレクトリ
runner_dir: /opt/actions-runner
# GitHub Actions Runnerのバージョン
runner_version: "latest"
# ロールが完了した後のランナーサービスの状態(開始、停止、存在しない)
runner_state: "started"
# サーバーに見つかった場合、既存のランナーサービスを削除して再インストール
reinstall_runner: false
# 機密データを含む可能性のあるAnsibleログを表示しない
hide_sensitive_logs: true
# GitHubアドレス
github_url: "https://github.com"
# GitHub API
github_api_url: "https://api.github.com"
# 1ページあたりのランナー数
github_api_runners_per_page: 100
# GitHubアカウント用のPersonal Access Token
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# 組織用のランナーかどうか?
runner_org: false
# ランナーに適用するラベル
runner_labels: []
# 組織ランナーを追加するグループ
runner_group: ""
# GitHub Actions Runnerリポジトリ(カスタムActions Runnerフォークを使用する場合は変更)
runner_download_repository: "actions/runner"
# `config.sh`に渡す追加の引数。
# 複数の引数は1つの文字列として設定する必要があります(例: "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# GitHubに割り当てるランナー名(デフォルトはシステムホスト名)
runner_name: "{{ ansible_facts.hostname }}"
# 単一のプレイ内で複数のリポジトリ用にランナーをプロビジョニングする場合はfalseに設定
all_runners_in_same_repo: true
# ランナー登録に使用するGitHubリポジトリのユーザーまたは組織のオーナー
# github_account: "youruser"
# GitHubリポジトリのオーナー名(github_account以外の場合)
# github_owner: "yourorg"
# GitHubリポジトリ名
# github_repo: "yourrepo"
# GitHubエンタープライズ名
# github_enterprise: "yourenterprise"
# カスタム.envファイルの設定
# custom_env: |
# http_proxy=YOUR_URL_HERE
# ftp_proxy=YOUR_URL_HERE
# HTTPS_PROXY=YOUR_URL_HERE
# https_proxy=YOUR_URL_HERE
# no_proxy=localhost,127.0.0.1,127.0.0.2
# HTTP_PROXY=
サンプルプレイブック
この例では、AnsibleロールがGitHub Actions Runnerサービスをインストール(または更新)します(最新の利用可能なバージョン)。ランナーはmy_awesome_repo GitHubリポジトリに登録されます。 ランナーサービスは起動し、AnsibleがSSH接続に使用しているのと同じユーザーで実行されます(ansible)。
---
- name: GitHub Actions Runnerをインストール
hosts: all
user: ansible
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
roles:
- role: monolithprojects.github_actions_runner
上記と同様の例ですが、ランナーは組織に追加され、GitHubエンタープライズサーバーにデプロイされます。
---
- name: GitHub Actions Runnerをインストール
hosts: all
user: ansible
become: yes
vars:
- github_account: my_awesome_org
- runner_org: yes
- runner_on_ghes: yes
roles:
- role: monolithprojects.github_actions_runner
GitHubエンタープライズクラウドライセンスを持っていて、エンタープライズからすべてのセルフホストランナーを管理したい場合:
---
- name: GitHub Actions Runnerをインストール
hosts: all
user: automation
become: yes
vars:
- github_enterprise: my_awesome_enterprise
- runner_org: no
roles:
- role: monolithprojects.github_actions_runner
この例では、AnsibleロールがGitHub Actionsランナーサービス(バージョン2.165.2)をデプロイ(または更新)し、GitHubリポジトリにランナーを登録します。ランナーサービスはユーザーrunner-user
のもとで実行されます。ランナーは2つのラベルで登録されます。
ランナーサービスは停止され、無効化されます。ランナーはカスタム環境変数(セルフホストランナーアプリケーションディレクトリ内の.env
という名前のファイルから)を使用します。
---
- name: GitHub Actions Runnerを停止
hosts: all
become: yes
vars:
- runner_version: "2.165.2"
- runner_user: runner-user
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "stopped"
- runner_labels:
- production
- west
- custom_env: |
HTTP_PROXY=http://proxy.local:8080
http_proxy=http://proxy.local:8080
HTTPS_PROXY=http://proxy.local:8080
https_proxy=http://proxy.local:8080
no_proxy=localhost,127.0.0.1,127.0.0.2
roles:
- role: monolithprojects.github_actions_runner
この例では、Ansibleロールがランナーサービスをアンインストールし、GitHubリポジトリから登録解除します。
---
- name: GitHub Actions Runnerをアンインストール
hosts: all
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "absent"
roles:
- role: monolithprojects.github_actions_runner
Moleculeによるテスト
Moleculeは、Ansibleのためのテストフレームワークです。このセクションはコントリビューター向けです。
前提条件
- Python
- Docker
- Ansible
- Molecule
インストール
- まだインストールしていない場合は、Python、Docker、Ansibleをインストールします。
- pipを使用してMoleculeとそのDockerドライバーをインストールします:
pip install molecule[docker]
以下は、monolithprojects.github_actions_runner
AnsibleロールをMoleculeでテストする方法について説明するREADMEの基本的な例です:
# monolithprojects.github_actions_runner
これはGitHub ActionsランナーをセットアップするためのAnsibleロールです。
## Moleculeによるテスト
[Molecule](https://molecule.readthedocs.io/)はAnsibleのためのテストフレームワークで、`monolithprojects.github_actions_runner`ロールのテストに使用します。
### 前提条件
- Python
- Docker
- Ansible
- Molecule
### インストール
1. まだインストールしていない場合は、Python、Docker、Ansibleをインストールします。
2. pipを使用してMoleculeとそのDockerドライバーをインストールします:
```bash
pip install molecule[docker]
テストの実行
- ロールのディレクトリに移動します:
cd path/to/monolithprojects.github_actions_runner
- 環境変数を設定します
export PERSONAL_ACCESS_TOKEN=your_github_pat # GitHub用のPersonal Access Token
export GITHUB_ACCOUNT=your_account # GitHubアカウント
export GITHUB_REPO=your_repository # ランナーをセットアップするGitHubリポジトリ
- Moleculeを実行します:
molecule test
これにより、Moleculeテストが実行され、Dockerコンテナーが作成され、ロールがその中で実行され、関連するdefault
テスト(molecule/defaultディレクトリ参照)が実行され、その後コンテナーが破棄されます。
Moleculeの使用方法についての詳細は、Moleculeドキュメントを参照してください。
ライセンス
MIT
著者情報
2020年にMichal Muranskyによって作成されました。