monolithprojects.github_actions_runner

GitHub Actions Runner

awesome-runners Rollenversion Rollen-Downloads Molekül-Test Lizenz

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 den repo Scope haben (beim Erstellen eines Repo-Runners), den admin:org Scope (beim Erstellen eines Runners für eine Organisation), den manage_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

  1. Installieren Sie Python, Docker und Ansible, falls dies noch nicht geschehen ist.
  2. 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

  1. Navigieren Sie zum Verzeichnis der Rolle:
cd path/to/monolithprojects.github_actions_runner
  1. 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
  1. 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

Über das Projekt

Deploy Github Actions private runner

Installieren
ansible-galaxy install monolithprojects.github_actions_runner
Lizenz
mit
Downloads
304.1k
Besitzer
Full-time Cloud Engineer, part-time adventurer