monolithprojects.github_actions_runner
GitHub Actions Runner
Ta rola zainstaluje, ponownie zainstaluje lub odinstaluje lokalnego GitHub Actions Runnera na systemach Linux i macOS (zobacz listę zgodności). Obsługuje Runnery dla Enterprise, Organizacji oraz Repozytoriów.
Instalacja Roli
requirements.yml
roles:
- name: monolithprojects.github_actions_runner
version: 1.21.1
src: https://github.com/MonolithProjects/ansible-github_actions_runner
Wymagania
System musi mieć dostęp do API GitHub.
Rola wymaga Personal Access Token do dostępu do GitHub. Token można ustawić jako zmienną środowiskową
PERSONAL_ACCESS_TOKEN
.
Uwaga
Token musi mieć zakresrepo
(dla runnera repozytorium),admin:org
(dla runnera organizacji), orazmanage_runners:enterprise
(dla runnera enterprise). Personal Access Token dla konta GitHub można stworzyć tutaj.
Ostrzeżenie
Nigdy nie przechowuj swojego tokena dostępu osobistego w repozytorium GitHub. Użyj GitHub Secrets lub innej usługi do przechowywania sekretów.
Użytkownik, który będzie uruchamiał runnera, musi być wcześniej stworzony. Zalecana rola:
monolithprojects.user_management
Systemy CentOS wymagają repozytorium EPEL. Zalecana rola:
robertdebock.epel
Wspierane architektury CPU
- ARM, ARM64 (instalacja zależności nie jest objęta tą rolą)
- AMD64, x86_64
Wspierane systemy operacyjne
- Red Hat Enterprise Linux 7
- CentOS 7
- Rocky Linux 8+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- MacOS High Sierra +
Cotygodniowe testowanie:
- Debian 11
- Fedora 39
- Rocky Linux 9
- Ubuntu 20,22
Zmienne Roli
Oto kopia z defaults/main.yml
---
# Użytkownik runnera - użytkownik, pod którym działa usługa lokalnego runnera
runner_user: "{{ lookup('env', 'USER') }}"
# Katalog, w którym zainstalowany będzie lokalny runner
runner_dir: /opt/actions-runner
# Wersja GitHub Actions Runnera
runner_version: "latest"
# Stan, w jakim usługa runnera będzie po zakończeniu roli (uruchomiona, zatrzymana, nieobecna)
runner_state: "started"
# Jeśli znajdzie już istniejąca usługę runnera, usuń ją i zainstaluj ponownie
reinstall_runner: false
# Nie pokazuj logów Ansible, które mogą zawierać dane wrażliwe (token rejestracji)
hide_sensitive_logs: true
# Adres GitHub
github_url: "https://github.com"
# API GitHub
github_api_url: "https://api.github.com"
# Liczba runnerów do wyświetlenia na stronie
github_api_runners_per_page: 100
# Personal Access Token dla twojego konta GitHub
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# Czy to jest runner dla organizacji?
runner_org: false
# Etykiety do przypisania do runnera
runner_labels: []
# Grupa, do której dodać runnera organizacji
runner_group: ""
# Repozytorium runnera GitHub Actions (zmień, jeśli chcesz używać własnego fork)
runner_download_repository: "actions/runner"
# Dodatkowe argumenty do przekazania do `config.sh`.
# Kilka argumentów musi być ustawione jako jeden ciąg (np. "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# Nazwa przypisana do tego runnera w GitHub (hostname systemu jako domyślnie)
runner_name: "{{ ansible_facts.hostname }}"
# Ustaw na false, gdy tworzone są runnery dla więcej niż jednego repozytorium w jednym play
all_runners_in_same_repo: true
# Użytkownik repozytorium GitHub lub właściciel organizacji używany do rejestracji runnera
# github_account: "twojużytkownik"
# Nazwa właściciela repozytorium GitHub (jeśli inny niż github_account)
# github_owner: "twojaorganizacja"
# Nazwa repozytorium GitHub
# github_repo: "twoje_repo"
# Nazwa GitHub Enterprise
# github_enterprise: "twoja_firma"
# Konfiguracja niestandardowego pliku .env
# custom_env: |
# http_proxy=TWOJ_ADRES_TUTAJ
# ftp_proxy=TWÓJ_ADRES_TUTAJ
# HTTPS_PROXY=TWÓJ_ADRES_TUTAJ
# https_proxy=TWÓJ_ADRES_TUTAJ
# no_proxy=localhost,127.0.0.1,127.0.0.2
# HTTP_PROXY=
Przykłady Playbooków
W tym przykładzie rola Ansible zainstaluje (lub zaktualizuje) usługę GitHub Actions Runner (najnowsza dostępna wersja). Runner zostanie zarejestrowany w repozytorium GitHub my_awesome_repo. Usługa runnera będzie uruchomiona pod tym samym użytkownikiem, którego Ansible używa do połączenia ssh (ansible).
---
- name: Instalacja 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
Ten sam przykład, co powyżej, ale runner zostanie dodany do organizacji i wdrożony na GitHub Enterprise Server.
---
- name: Instalacja 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
Jeśli masz licencję na GitHub Enterprise Cloud i chcesz zarządzać wszystkimi samodzielnie hostowanymi runnerami z poziomu firmy:
---
- name: Instalacja GitHub Actions Runner
hosts: all
user: automation
become: yes
vars:
- github_enterprise: my_awesome_enterprise
- runner_org: no
roles:
- role: monolithprojects.github_actions_runner
W tym przykładzie rola Ansible zainstaluje (lub zaktualizuje) usługę GitHub Actions runner (wersja 2.165.2) i zarejestruje runnera w repozytorium GitHub. Usługa runnera będzie działać pod użytkownikiem runner-user
. Runner będzie zarejestrowany z dwiema etykietami.
Usługa runnera będzie zatrzymana i wyłączona. Runner będzie używać niestandardowych zmiennych środowiskowych (z pliku o nazwie .env
w katalogu aplikacji samodzielnie hostowanego runnera).
---
- name: Zatrzymaj 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
W tym przykładzie rola Ansible odinstaluje usługę runnera i wyrejestruje ją z repozytorium GitHub.
---
- name: Odinstaluj 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
Testowanie za pomocą Molecule
Molecule to framework do testowania Ansible. Ta sekcja jest dla współtwórców kodu.
Wymagania wstępne
- Python
- Docker
- Ansible
- Molecule
Instalacja
- Zainstaluj Python, Docker i Ansible, jeśli jeszcze tego nie zrobiłeś.
- Zainstaluj Molecule i jego sterownik Docker za pomocą pip:
pip install molecule[docker]
Oto prosty przykład, jak możesz zorganizować dokumentację, aby wyjaśnić, jak testować rolę Ansible monolithprojects.github_actions_runner
za pomocą Molecule:
# monolithprojects.github_actions_runner
To jest rola Ansible do konfigurowania runnerów GitHub Actions.
## Testowanie za pomocą Molecule
[Molecule](https://molecule.readthedocs.io/) to framework do testowania Ansible, który używamy do testowania roli `monolithprojects.github_actions_runner`.
### Wymagania wstępne
- Python
- Docker
- Ansible
- Molecule
### Instalacja
1. Zainstaluj Python, Docker i Ansible, jeśli jeszcze tego nie zrobiłeś.
2. Zainstaluj Molecule i jego sterownik Docker za pomocą pip:
```bash
pip install molecule[docker]
Uruchamianie testów
- Przejdź do katalogu roli:
cd path/to/monolithprojects.github_actions_runner
- Ustaw zmienne środowiskowe:
export PERSONAL_ACCESS_TOKEN=twoj_github_pat # Twój Token dostępu osobistego do GitHub
export GITHUB_ACCOUNT=twoje_konto # Twoje konto GitHub
export GITHUB_REPO=twoje_repo # Repozytorium GitHub, w którym chcesz skonfigurować runnera
- Uruchom Molecule:
molecule test
To uruchomi test molekułowy, stworzy kontener Docker, uruchomi rolę w tym kontenerze, przeprowadzi powiązane testy default
(zobacz molecule/default katalog) i następnie zniszczy kontener.
Aby uzyskać więcej informacji na temat korzystania z Molecule, zapoznaj się z dokumentacją Molecule.
Licencja
MIT
Informacje o autorze
Stworzone w 2020 roku przez Michala Muranskiego
ansible-galaxy install monolithprojects.github_actions_runner