monolithprojects.github_actions_runner
GitHub Actions Runner
Diese Rolle installiert/aktualisiert/entfernt und registriert/deregistriert einen lokalen GitHub Actions Runner auf Linux- und macOS-Systemen (siehe Kompatibilitätsliste). Sie unterstützt Unternehmens-, Organisations- und Repository-Runners.
Rolleninstallation
requirements.yml
roles:
- name: monolithprojects.github_actions_runner
version: 1.21.1
src: https://github.com/MonolithProjects/ansible-github_actions_runner
Anforderungen
Das System muss Zugriff auf die GitHub API haben.
Die Rolle benötigt ein Personal Access Token für den Zugriff auf GitHub. Das Token kann als Umgebungsvariable
PERSONAL_ACCESS_TOKEN
gesetzt werden.
Hinweis
Das Token muss denrepo
Scope haben (beim Erstellen eines Repo-Runners), denadmin:org
Scope (beim Erstellen eines Runners für eine Organisation), denmanage_runners:enterprise
Scope (beim Erstellen eines Unternehmens-Runners). Ein Personal Access Token für einen GitHub-Account kann hier erstellt werden.
Warnung
Speichern Sie Ihr persönliches Zugriffstoken niemals im GitHub-Repository. Verwenden Sie GitHub Secrets oder einen anderen Geheimdienst.
Der Runner-Benutzer muss bereits erstellt werden. Empfohlene Rolle:
monolithprojects.user_management
CentOS-Systeme erfordern das EPEL-Repository. Empfohlene Rolle:
robertdebock.epel
Unterstützte CPU-Architektur
- ARM, ARM64 (Installationsabhängigkeiten werden in dieser Rolle nicht abgedeckt)
- AMD64, x86_64
Unterstützte Betriebssysteme
- Red Hat Enterprise Linux 7
- CentOS 7
- Rocky Linux 8+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- MacOS High Sierra +
Wöchentlich getestet auf:
- Debian 11
- Fedora 39
- Rocky Linux 9
- Ubuntu 20,22
Rollenvariablen
Dies ist eine Kopie von defaults/main.yml
---
# Runner-Benutzer - Benutzer, unter dem der lokale Runner-Dienst läuft
runner_user: "{{ lookup('env', 'USER') }}"
# Verzeichnis, in dem der lokale Runner installiert wird
runner_dir: /opt/actions-runner
# Version des GitHub Actions Runners
runner_version: "latest"
# Status, in dem der Runner-Dienst nach dem Abschluss der Rolle ist (gestart, gestoppt, nicht vorhanden)
runner_state: "started"
# Falls auf dem Server gefunden, den bereits vorhandenen Runner-Dienst löschen und erneut installieren
reinstall_runner: false
# Ansible-Protokolle nicht anzeigen, die sensible Daten enthalten könnten (Registrierungstoken)
hide_sensitive_logs: true
# GitHub-Adresse
github_url: "https://github.com"
# GitHub API
github_api_url: "https://api.github.com"
# Anzahl der Runner, die pro Seite aufgelistet werden
github_api_runners_per_page: 100
# Personal Access Token für Ihr GitHub-Konto
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# Ist es der Runner für die Organisation oder nicht?
runner_org: false
# Labels, die dem Runner zugewiesen werden
runner_labels: []
# Gruppe, der der Organisations-Runner hinzugefügt werden soll
runner_group: ""
# GitHub Actions Runner Repository (ändern Sie es, wenn Sie einen benutzerdefinierten Actions Runner Fork verwenden möchten)
runner_download_repository: "actions/runner"
# Zusätzliche Argumente, die an `config.sh` übergeben werden sollen.
# Mehrere Argumente müssen als ein String zusammengefasst werden (d.h. "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# Name, der diesem Runner in GitHub zugewiesen werden soll (System-Hostname als Standard)
runner_name: "{{ ansible_facts.hostname }}"
# Auf false setzen, wenn Runner für mehr als ein Repository innerhalb eines Spielplans bereitgestellt werden
all_runners_in_same_repo: true
# GitHub Repository Benutzer oder Organisationsbesitzer, der für die Runner-Registrierung verwendet wird
# github_account: "youruser"
# GitHub Repository Eigentümername (wenn anders als github_account)
# github_owner: "yourorg"
# GitHub Repository Name
# github_repo: "yourrepo"
# GitHub Enterprise Name
# github_enterprise: "yourenterprise"
# Konfiguration einer benutzerdefinierten .env-Datei
# 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=
Beispiel-Playbooks
Im folgenden Beispiel installiert (oder aktualisiert) die Ansible-Rolle den GitHub Actions Runner-Dienst (neueste verfügbare Version). Der Runner wird für das GitHub-Repo my_awesome_repo registriert. Der Runner-Dienst wird gestartet und läuft unter demselben Benutzer wie der Ansible, der für die SSH-Verbindung verwendet wird (ansible).
---
- name: GitHub Actions Runner installieren
hosts: all
user: ansible
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
roles:
- role: monolithprojects.github_actions_runner
Dasselbe Beispiel wie oben, aber der Runner wird einer Organisation hinzugefügt und auf einem GitHub Enterprise Server bereitgestellt.
---
- name: GitHub Actions Runner installieren
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
Wenn Sie eine GitHub Enterprise Cloud-Lizenz haben und alle selbst gehosteten Runner von der Enterprise verwalten möchten:
---
- name: GitHub Actions Runner installieren
hosts: all
user: automation
become: yes
vars:
- github_enterprise: my_awesome_enterprise
- runner_org: no
roles:
- role: monolithprojects.github_actions_runner
In diesem Beispiel wird die Ansible-Rolle den GitHub Actions Runner-Dienst bereitstellen (oder aktualisieren) (Version 2.165.2) und den Runner für das GitHub-Repo registrieren. Der Runner-Dienst wird unter dem Benutzer runner-user
ausgeführt. Der Runner wird mit zwei Labels registriert.
Der Runner-Dienst wird gestoppt und deaktiviert. Der Runner verwendet benutzerdefinierte Umgebungsvariablen (aus einer Datei mit dem Namen .env
im Verzeichnis der selbst gehosteten Runner-Anwendung).
---
- name: GitHub Actions Runner stoppen
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
In diesem Beispiel wird die Ansible-Rolle den Runner-Dienst deinstallieren und ihn aus dem GitHub-Repository deregistrieren.
---
- name: GitHub Actions Runner deinstallieren
hosts: all
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "absent"
roles:
- role: monolithprojects.github_actions_runner
Testen mit Molecule
Molecule ist ein Testframework für Ansible. Dieser Abschnitt ist für Codebeiträge gedacht.
Voraussetzungen
- Python
- Docker
- Ansible
- Molecule
Installation
- Installieren Sie Python, Docker und Ansible, falls dies noch nicht geschehen ist.
- Installieren Sie Molecule und dessen Docker-Treiber mit pip:
pip install molecule[docker]
Hier ist ein einfaches Beispiel, wie Sie eine README strukturieren können, um zu erklären, wie Sie die monolithprojects.github_actions_runner
Ansible-Rolle mit Molecule testen können:
# monolithprojects.github_actions_runner
Dies ist eine Ansible-Rolle zum Einrichten von GitHub Actions Runners.
## Testen mit Molecule
[Molecule](https://molecule.readthedocs.io/) ist ein Testframework für Ansible, das wir verwenden, um die Rolle `monolithprojects.github_actions_runner` zu testen.
### Voraussetzungen
- Python
- Docker
- Ansible
- Molecule
### Installation
1. Installieren Sie Python, Docker und Ansible, falls dies noch nicht geschehen ist.
2. Installieren Sie Molecule und seinen Docker-Treiber mit pip:
```bash
pip install molecule[docker]
Tests ausführen
- Navigieren Sie zum Verzeichnis der Rolle:
cd path/to/monolithprojects.github_actions_runner
- Umgebungsvariablen setzen
export PERSONAL_ACCESS_TOKEN=your_github_pat # Ihr Personal Access Token für GitHub
export GITHUB_ACCOUNT=your_account # Ihr GitHub-Konto
export GITHUB_REPO=your_repository # GitHub-Repository, in dem Sie den Runner einrichten möchten
- Molecule ausführen:
molecule test
Dies führt den Molecule-Test aus, erstellt einen Docker-Container, führt die Rolle dagegen aus, führt alle zugehörigen default
-Tests durch (siehe Verzeichnis molecule/default), und zerstört dann den Container.
Für weitere Informationen zur Verwendung von Molecule siehe die Molecule-Dokumentation.
Lizenz
MIT
Autoreninformation
Erstellt 2020 von Michal Muransky
ansible-galaxy install monolithprojects.github_actions_runner