monolithprojects.github_actions_runner

Exécuteur d'Actions GitHub

awesome-runners Version du rôle Téléchargements du rôle Test Molecule Licence

Ce rôle déploie, redéploie, désinstalle et enregistre/désenregistre un Exécuteur d'Actions GitHub local sur des systèmes Linux et macOS (voir liste de compatibilité). Il prend en charge les Exécuteurs d'Entreprises, d'Organisations et de Dépôts.

Installation du Rôle

requirements.yml

roles:
  - name: monolithprojects.github_actions_runner
    version: 1.21.1
    src: https://github.com/MonolithProjects/ansible-github_actions_runner

Exigences

  • Le système doit avoir accès à l'API GitHub.

  • Le rôle nécessite un Token d'Accès Personnel pour accéder à GitHub. Le token peut être défini comme une variable d'environnement PERSONAL_ACCESS_TOKEN.

Remarque
Le token doit avoir la portée repo (lors de la création d'un exécuteur de dépôt), la portée admin:org (lors de la création d'un exécuteur pour une organisation), la portée manage_runners:enterprise (lors de la création d'un exécuteur d'entreprise). Un Token d'Accès Personnel pour un compte GitHub peut être créé ici.

Avertissement
Ne jamais stocker votre token d'accès personnel dans le dépôt GitHub. Utilisez Secrets GitHub ou un autre service de secrets.

  • L'utilisateur de l'exécuteur doit être pré-créé. Rôle recommandé : monolithprojects.user_management

  • Les systèmes CentOS nécessitent le dépôt EPEL. Rôle recommandé : robertdebock.epel

Architecture CPU prise en charge

  • ARM, ARM64 (l'installation des dépendances n'est pas couverte par ce rôle)
  • AMD64, x86_64

Systèmes d'exploitation pris en charge

  • Red Hat Enterprise Linux 7
  • CentOS 7
  • Rocky Linux 8+
  • Fedora 29+
  • Debian 9+
  • Ubuntu 16.04+
  • MacOS High Sierra +

Testé chaque semaine sur :

  • Debian 11
  • Fedora 39
  • Rocky Linux 9
  • Ubuntu 20, 22

Variables du Rôle

Ceci est une copie de defaults/main.yml

---
# Utilisateur de l'exécuteur - utilisateur sous lequel le service de l'exécuteur local fonctionne
runner_user: "{{ lookup('env', 'USER') }}"

# Répertoire où l'exécuteur local sera installé
runner_dir: /opt/actions-runner

# Version de l'Exécuteur d'Actions GitHub
runner_version: "latest"

# État dans lequel sera le service de l'exécuteur après le traitement du rôle (démarré, arrêté, absent)
runner_state: "started"

# Si trouvé sur le serveur, supprimer le service d'exécuteur existant et l'installer à nouveau
reinstall_runner: false

# Ne pas afficher les journaux Ansible qui peuvent contenir des données sensibles (token d'enregistrement)
hide_sensitive_logs: true

# Adresse GitHub
github_url: "https://github.com"

# API GitHub
github_api_url: "https://api.github.com"

# Nombre d'exécuteurs à lister par page
github_api_runners_per_page: 100

# Token d'Accès Personnel pour votre compte GitHub
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"

# Est-ce l'exécuteur d'une organisation ou non ?
runner_org: false

# Étiquettes à appliquer à l'exécuteur
runner_labels: []

# Groupe auquel ajouter l'exécuteur d'organisation
runner_group: ""

# Dépôt de l'Exécuteur d'Actions GitHub (changez-le si vous souhaitez utiliser un fork d'Actions Runner personnalisé)
runner_download_repository: "actions/runner"

# Arguments supplémentaires à passer à `config.sh`.
# Plusieurs arguments doivent être déclarés en une seule chaîne (c'est-à-dire "--ephemeral --my_special_fork")
runner_extra_config_args: ""

# Nom à attribuer à cet exécuteur dans GitHub (Nom d'hôte système par défaut)
runner_name: "{{ ansible_facts.hostname }}"

# Définissez sur faux lors de la provision d'exécuteurs pour plusieurs dépôts dans une seule exécution
all_runners_in_same_repo: true

# Utilisateur du dépôt GitHub ou propriétaire de l'organisation utilisé pour l'enregistrement de l'Exécuteur
# github_account: "youruser"

# Nom du propriétaire du dépôt GitHub (si autre que github_account)
# github_owner: "yourorg"

# Nom du dépôt GitHub
# github_repo: "yourrepo"

# Nom de l'entreprise GitHub
# github_enterprise: "yourenterprise"

# Configuration d'un fichier .env personnalisé
# 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=

Exemples de Playbooks

Dans cet exemple, le rôle Ansible installera (ou mettra à jour) le service de l'Exécuteur d'Actions GitHub (dernière version disponible). L'exécuteur sera enregistré pour le dépôt GitHub my_awesome_repo. Le service d'exécuteur sera en état actif et fonctionnera sous le même utilisateur que celui utilisé par Ansible pour la connexion ssh (ansible).

---
- name: Installer l'Exécuteur d'Actions GitHub
  hosts: all
  user: ansible
  become: yes
  vars:
    - github_account: github-access-user
    - github_repo: my_awesome_repo
  roles:
    - role: monolithprojects.github_actions_runner

Même exemple que ci-dessus, mais l'exécuteur sera ajouté à une organisation et déployé sur GitHub Enterprise Server.

---
- name: Installer l'Exécuteur d'Actions GitHub
  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

Si vous avez une licence GitHub Enterprise Cloud et que vous souhaitez gérer tous les exécutants auto-hébergés de l'entreprise :

---
- name: Installer l'Exécuteur d'Actions GitHub
  hosts: all
  user: automation
  become: yes
  vars:
    - github_enterprise: my_awesome_enterprise
    - runner_org: no
  roles:
    - role: monolithprojects.github_actions_runner

Dans cet exemple, le rôle Ansible déploiera (ou mettra à jour) le service de l'Exécuteur d'Actions GitHub (version 2.165.2) et enregistrera l'exécuteur pour le dépôt GitHub. Le service d'exécuteur fonctionnera sous l'utilisateur runner-user. L'exécuteur sera enregistré avec deux étiquettes. Le service d'exécuteur sera arrêté et désactivé. L'exécuteur utilisera des variables d'environnement personnalisées (à partir d'un fichier nommé .env dans le répertoire de l'application d'exécuteur auto-hébergé).

---
- name: Arrêter l'Exécuteur d'Actions GitHub
  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

Dans cet exemple, le rôle Ansible désinstallera le service d'exécuteur et le désenregistrera du dépôt GitHub.

---
- name: Désinstaller l'Exécuteur d'Actions GitHub
  hosts: all
  become: yes
  vars:
    - github_account: github-access-user
    - github_repo: my_awesome_repo
    - runner_state: "absent"
  roles:
    - role: monolithprojects.github_actions_runner

Tests avec Molecule

Molecule est un framework de test pour Ansible. Cette section est pour les contributeurs de code.

Prérequis

  • Python
  • Docker
  • Ansible
  • Molecule

Installation

  1. Installez Python, Docker et Ansible si ce n'est pas déjà fait.
  2. Installez Molecule et son pilote Docker avec pip :
pip install molecule[docker]

Voici un exemple de la structure d'un README pour expliquer comment tester le rôle Ansible monolithprojects.github_actions_runner avec Molecule :

# monolithprojects.github_actions_runner

Ceci est un rôle Ansible pour configurer les exécuteurs d'Actions GitHub.

## Tests avec Molecule

[Molecule](https://molecule.readthedocs.io/) est un cadre de test pour Ansible que nous utilisons pour tester le rôle `monolithprojects.github_actions_runner`.

### Prérequis

- Python
- Docker
- Ansible
- Molecule

### Installation

1. Installez Python, Docker et Ansible si ce n'est pas déjà fait.
2. Installez Molecule et son pilote Docker avec pip :

```bash
pip install molecule[docker]

Exécution des Tests

  1. Allez dans le répertoire du rôle :
cd path/to/monolithprojects.github_actions_runner
  1. Définissez les variables d'environnement :
export PERSONAL_ACCESS_TOKEN=your_github_pat # Votre Token d'Accès Personnel pour GitHub
export GITHUB_ACCOUNT=your_account # Votre Compte GitHub
export GITHUB_REPO=your_repository # Dépôt GitHub où vous souhaitez configurer l'Exécuteur
  1. Exécutez Molecule :
molecule test

Cela exécutera le test de molécule, créera un conteneur Docker, exécutera le rôle contre celui-ci, effectuera tous les tests default associés (voir le répertoire molecule/default), puis détruira le conteneur.

Pour plus d'informations sur l'utilisation de Molecule, consultez la documentation de Molecule.

Licence

MIT

Informations sur l'Auteur

Créé en 2020 par Michal Muransky ```

À propos du projet

Deploy Github Actions private runner

Installer
ansible-galaxy install monolithprojects.github_actions_runner
Licence
mit
Téléchargements
304.1k
Propriétaire
Full-time Cloud Engineer, part-time adventurer