monolithprojects.github_actions_runner
GitHub Actions Runner
此角色将在Linux和macOS系统上部署/重新部署/卸载并注册/注销本地GitHub Actions Runner(请参见兼容性列表)。
支持企业、组织和代码库的Runner。
角色安装
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
环境变量。
注意
令牌必须具有repo
作用域(当创建代码库运行器时)、admin:org
(当为组织创建运行器时)、manage_runners:enterprise
(当创建企业运行器时)。可以在这里创建GitHub帐户的个人访问令牌。
警告
切勿将个人访问令牌存储在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 +
每周测试:
- 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"
# 每页列出的运行器数量
github_api_runners_per_page: 100
# 您的GitHub帐户的个人访问令牌
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`的额外参数。
# 多个参数必须作为一个字符串设置(即"--ephemeral --my_special_fork")
runner_extra_config_args: ""
# 在GitHub中分配给此运行器的名称(系统主机名为默认值)
runner_name: "{{ ansible_facts.hostname }}"
# 如果在单个角色中为多个代码库配置运行器,则设置为false
all_runners_in_same_repo: true
# GitHub Repository用户或组织所有者,用于注册运行器
# 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 Runner服务(版本2.165.2)并注册用于GitHub代码库的运行器。
运行器服务将在用户runner-user
下运行。运行器将注册两个标签。
运行器服务将被停止并禁用。运行器将使用自定义环境变量(来自自托管运行器应用程序目录中的.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]
好的,这里有一个基本示例,说明您如何构建README以解释如何使用Molecule测试monolithprojects.github_actions_runner
Ansible角色:
# 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个人访问令牌
export GITHUB_ACCOUNT=your_account # 您的GitHub帐户
export GITHUB_REPO=your_repository # 您希望设置运行器的GitHub代码库
- 运行Molecule:
molecule test
这将运行Molecule测试,创建一个Docker容器,在其中运行角色,运行任何相关的default
测试(请参阅molecule/default目录),然后销毁容器。
有关使用Molecule的更多信息,请参见Molecule文档。
许可证
MIT
作者信息
由Michal Muransky于2020年创建