monolithprojects.github_actions_runner

GitHub Actions Runner

awesome-runners Role version Role downloads Molecule test License

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ć zakres repo (dla runnera repozytorium), admin:org (dla runnera organizacji), oraz manage_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

  1. Zainstaluj Python, Docker i Ansible, jeśli jeszcze tego nie zrobiłeś.
  2. 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

  1. Przejdź do katalogu roli:
cd path/to/monolithprojects.github_actions_runner
  1. 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
  1. 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

O projekcie

Deploy Github Actions private runner

Zainstaluj
ansible-galaxy install monolithprojects.github_actions_runner
Licencja
mit
Pobrania
304.1k
Właściciel
Full-time Cloud Engineer, part-time adventurer