github_actions_runner
GitHub Actions Runner
Эта роль устанавливает, переустанавливает, деинсталлирует и регистрирует/аннулирует регистрацию локального GitHub Actions Runner на системах Linux и macOS (см. список совместимых систем). Поддерживаются Runner для Enterprise, организации и репозитория.
Установка роли
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
(при создании runner для репозитория), областьadmin:org
(при создании runner для организации), областьmanage_runners:enterprise
(при создании enterprise runner). Личный токен доступа для учетной записи GitHub можно создать здесь.
Предупреждение
Никогда не храните ваш личный токен доступа в репозитории GitHub. Используйте GitHub Secrets или другой сервис для хранения секретов.
Пользователь runner должен быть заранее создан. Рекомендуемая роль:
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 - под которым работает локальный сервис runner
runner_user: "{{ lookup('env', 'USER') }}"
# Директория, в которой будет установлен локальный runner
runner_dir: /opt/actions-runner
# Версия GitHub Actions Runner
runner_version: "latest"
# Состояние, в котором будет служба runner после завершения роли (запущен, остановлен, отсутствует)
runner_state: "started"
# Если найден на сервере, удалить уже существующий сервис runner и установить его снова
reinstall_runner: false
# Не показывать логи Ansible, которые могут содержать конфиденциальные данные (токен регистрации)
hide_sensitive_logs: true
# Адрес GitHub
github_url: "https://github.com"
# GitHub API
github_api_url: "https://api.github.com"
# Количество runners для отображения на странице
github_api_runners_per_page: 100
# Личный токен доступа для вашей учетной записи GitHub
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# Это runner для организации или нет?
runner_org: false
# Метки, которые необходимо применить к runner
runner_labels: []
# Группа, в которую нужно добавить организационный runner
runner_group: ""
# Репозиторий GitHub Actions Runner (измените его, если хотите использовать кастомный форк Actions Runner)
runner_download_repository: "actions/runner"
# Дополнительные аргументы, которые нужно передать `config.sh`.
# Несколько аргументов должны быть заданы в одной строке (т.е. "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# Имя, которое будет присвоено этому runner в GitHub (имя хоста по умолчанию)
runner_name: "{{ ansible_facts.hostname }}"
# Установите значение false, когда настраиваете runners для более чем одного репозитория в рамках одного плейбука
all_runners_in_same_repo: true
# Имя пользователя учетной записи GitHub или владельца организации, используемое для регистрации runner
# github_account: "youruser"
# Имя владельца репозитория GitHub (если отличное от github_account)
# github_owner: "yourorg"
# Название репозитория GitHub
# github_repo: "yourrepo"
# Имя GitHub Enterprise
# 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 (последняя доступная версия). Runner будет зарегистрирован для репозитория GitHub my_awesome_repo. Служба runner будет запущена и работать под тем же пользователем, который используется 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
Тот же пример, что и выше, но runner будет добавлен в организацию и развернут на GitHub Enterprise Server.
---
- 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 Enterprise Cloud и вы хотите управлять всеми саморазворачиваемыми runners от имени предприятия:
---
- 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) и зарегистрирует runner для репозитория GitHub. Служба runner будет работать под пользователем runner-user
. Runner будет зарегистрирован с двумя метками.
Служба runner будет остановлена и отключена. Runner будет использовать пользовательские переменные окружения (из файла с именем .env
в директории приложения самопровождением runner).
---
- 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 удалит сервис runner и отменит его регистрацию в репозитории 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, если вы этого еще не сделали.
- Установите Molecule и его драйвер Docker с помощью pip:
pip install molecule[docker]
Вот базовый пример того, как вы можете структурировать README, чтобы объяснить, как тестировать роль Ansible monolithprojects.github_actions_runner
с помощью Molecule:
# monolithprojects.github_actions_runner
Это роль Ansible для настройки GitHub Actions runners.
## Тестирование с помощью Molecule
[Molecule](https://molecule.readthedocs.io/) - это фреймворк для тестирования Ansible, который мы используем для тестирования роли `monolithprojects.github_actions_runner`.
### Предварительные условия
- Python
- Docker
- Ansible
- Molecule
### Установка
1. Установите Python, Docker и Ansible, если вы этого еще не сделали.
2. Установите Molecule и его драйвер Docker с помощью pip:
```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, в котором вы хотите настроить Runner
- Запустите Molecule:
molecule test
Это запустит тест Molecule, создаст контейнер Docker, выполнит роль против него, запустит все связанные тесты по умолчанию (см. директорию molecule/default) и затем уничтожит контейнер.
Для получения дополнительной информации о использовании Molecule смотрите документацию Molecule.
Лицензия
MIT
Информация об авторе
Создано в 2020 году Михаилом Мура́нским.
ansible-galaxy install MonolithProjects/ansible-github_actions_runner