github_actions_runner

GitHub Actions Runner

awesome-runners Role version Role downloads Molecule test License

Эта роль устанавливает, переустанавливает, деинсталлирует и регистрирует/аннулирует регистрацию локального 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

Установка

  1. Установите Python, Docker и Ansible, если вы этого еще не сделали.
  2. Установите 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]

Запуск тестов

  1. Перейдите в директорию роли:
cd path/to/monolithprojects.github_actions_runner
  1. Установите переменные окружения:
export PERSONAL_ACCESS_TOKEN=your_github_pat # Ваш личный токен доступа к Github
export GITHUB_ACCOUNT=your_account # Ваша учетная запись GitHub
export GITHUB_REPO=your_repository # Репозиторий Github, в котором вы хотите настроить Runner
  1. Запустите Molecule:
molecule test

Это запустит тест Molecule, создаст контейнер Docker, выполнит роль против него, запустит все связанные тесты по умолчанию (см. директорию molecule/default) и затем уничтожит контейнер.

Для получения дополнительной информации о использовании Molecule смотрите документацию Molecule.

Лицензия

MIT

Информация об авторе

Создано в 2020 году Михаилом Мура́нским.

О проекте

Deploy Github Actions private runner

Установить
ansible-galaxy install MonolithProjects/ansible-github_actions_runner
Лицензия
mit
Загрузки
253312
Владелец
Full-time Cloud Engineer, part-time adventurer