monolithprojects.github_actions_runner
Runner de GitHub Actions
Este rol desplegará/re-desplegará/desinstalará y registrará/desregistrará el Runner de GitHub Actions local en sistemas Linux y macOS (ver lista de compatibilidad). Soporta Runners para Empresas, Organizaciones y Repositorios.
Instalación del rol
requirements.yml
roles:
- name: monolithprojects.github_actions_runner
version: 1.21.1
src: https://github.com/MonolithProjects/ansible-github_actions_runner
Requisitos
El sistema debe tener acceso a la API de GitHub.
El rol requiere un Token de Acceso Personal para acceder a GitHub. El token se puede establecer como una variable de entorno
PERSONAL_ACCESS_TOKEN
.
Nota
El token debe tener el alcancerepo
(al crear un runner de repositorio), el alcanceadmin:org
(al crear un runner para una organización), el alcancemanage_runners:enterprise
(al crear un runner para una empresa). Puedes crear un Token de Acceso Personal para tu cuenta de GitHub aquí.
Advertencia
Nunca almacenes tu token de acceso personal en el repositorio de GitHub. Usa GitHub Secrets o algún otro servicio de secretos.
El usuario del runner debe estar pre-creado. Rol recomendado:
monolithprojects.user_management
Los sistemas CentOS requieren el repositorio EPEL. Rol recomendado:
robertdebock.epel
Arquitectura de CPU soportada
- ARM, ARM64 (la instalación de dependencias no está cubierta por este rol)
- AMD64, x86_64
Sistemas Operativos Soportados
- Red Hat Enterprise Linux 7
- CentOS 7
- Rocky Linux 8+
- Fedora 29+
- Debian 9+
- Ubuntu 16.04+
- MacOS High Sierra +
Probado semanalmente en:
- Debian 11
- Fedora 39
- Rocky Linux 9
- Ubuntu 20,22
Variables del Rol
Esta es una copia de defaults/main.yml
---
# Usuario del runner - usuario bajo el cual se ejecuta el servicio del runner local
runner_user: "{{ lookup('env', 'USER') }}"
# Directorio donde se instalará el runner local
runner_dir: /opt/actions-runner
# Versión del Runner de GitHub Actions
runner_version: "latest"
# Estado en el que estará el servicio del runner después de que el rol haya terminado (iniciado, detenido, ausente)
runner_state: "started"
# Si se encuentra en el servidor, eliminar el servicio del runner ya existente e instalarlo nuevamente
reinstall_runner: false
# No mostrar logs de Ansible que pueden contener datos sensibles (token de registro)
hide_sensitive_logs: true
# Dirección de GitHub
github_url: "https://github.com"
# API de GitHub
github_api_url: "https://api.github.com"
# Número de runners para listar por página
github_api_runners_per_page: 100
# Token de Acceso Personal para tu cuenta de GitHub
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"
# ¿Es el runner para organización o no?
runner_org: false
# Etiquetas para aplicar al runner
runner_labels: []
# Grupo para agregar el runner de organización
runner_group: ""
# Repositorio del runner de GitHub Actions (cámbialo si deseas usar un fork personalizado del Actions Runner)
runner_download_repository: "actions/runner"
# Argumentos adicionales para pasar a `config.sh`.
# Varios argumentos deben establecerse como una sola cadena (es decir, "--ephemeral --my_special_fork")
runner_extra_config_args: ""
# Nombre para asignar a este runner en GitHub (hostname del sistema por defecto)
runner_name: "{{ ansible_facts.hostname }}"
# Establecer en falso al aprovisionar runners para más de un repositorio dentro de un solo play
all_runners_in_same_repo: true
# Usuario de la cuenta de GitHub o propietario de la organización utilizado para el registro del Runner
# github_account: "tuusuario"
# Nombre del propietario del repositorio de GitHub (si es diferente del github_account)
# github_owner: "tuorganizacion"
# Nombre del repositorio de GitHub
# github_repo: "turepositorio"
# Nombre de GitHub Enterprise
# github_enterprise: "tuentreprise"
# Configurando un archivo .env personalizado
# custom_env: |
# http_proxy=TU_URL_AQUI
# ftp_proxy=TU_URL_AQUI
# HTTPS_PROXY=TU_URL_AQUI
# https_proxy=TU_URL_AQUI
# no_proxy=localhost,127.0.0.1,127.0.0.2
# HTTP_PROXY=
Ejemplo de Playbooks
En este ejemplo, el rol de Ansible instalará (o actualizará) el servicio del Runner de GitHub Actions (última versión disponible). El runner será registrado para el repositorio de GitHub my_awesome_repo. El servicio del runner estará iniciado y se ejecutará bajo el mismo usuario que utiliza Ansible para la conexión ssh (ansible).
---
- name: Instalar Runner de GitHub Actions
hosts: all
user: ansible
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
roles:
- role: monolithprojects.github_actions_runner
El mismo ejemplo que el anterior, pero el runner se añadirá a una organización y se desplegará en GitHub Enterprise Server.
---
- name: Instalar Runner de GitHub Actions
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 tienes una licencia de GitHub Enterprise Cloud y deseas gestionar todos los runners auto-hospedados de la empresa:
---
- name: Instalar Runner de GitHub Actions
hosts: all
user: automation
become: yes
vars:
- github_enterprise: my_awesome_enterprise
- runner_org: no
roles:
- role: monolithprojects.github_actions_runner
En este ejemplo, el rol de Ansible desplegará (o actualizará) el servicio del runner de GitHub Actions (versión 2.165.2) y registrará el runner para el repositorio de GitHub. El servicio del runner se ejecutará bajo el usuario runner-user
. El runner será registrado con dos etiquetas.
El servicio del runner estará detenido y deshabilitado. El runner utilizará variables de entorno personalizadas (de un archivo llamado .env
en el directorio de la aplicación del runner auto-hospedado).
---
- name: Detener Runner de GitHub Actions
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
En este ejemplo, el rol de Ansible desinstalará el servicio del runner y lo desregistrará del repositorio de GitHub.
---
- name: Desinstalar Runner de GitHub Actions
hosts: all
become: yes
vars:
- github_account: github-access-user
- github_repo: my_awesome_repo
- runner_state: "absent"
roles:
- role: monolithprojects.github_actions_runner
Pruebas con Molecule
Molecule es un marco de pruebas para Ansible. Esta sección está destinada a los contribuyentes de código.
Requisitos previos
- Python
- Docker
- Ansible
- Molecule
Instalación
- Instala Python, Docker y Ansible si aún no lo has hecho.
- Instala Molecule y su controlador de Docker con pip:
pip install molecule[docker]
A continuación, se muestra un ejemplo básico de cómo estructurar un README para explicar cómo probar el rol de Ansible monolithprojects.github_actions_runner
con Molecule:
# monolithprojects.github_actions_runner
Este es un rol de Ansible para configurar los runners de GitHub Actions.
## Pruebas con Molecule
[Molecule](https://molecule.readthedocs.io/) es un marco de pruebas para Ansible que utilizamos para probar el rol `monolithprojects.github_actions_runner`.
### Requisitos previos
- Python
- Docker
- Ansible
- Molecule
### Instalación
1. Instala Python, Docker y Ansible si aún no lo has hecho.
2. Instala Molecule y su controlador de Docker con pip:
```bash
pip install molecule[docker]
Ejecutando Pruebas
- Navega al directorio del rol:
cd path/to/monolithprojects.github_actions_runner
- Establece las variables de entorno:
export PERSONAL_ACCESS_TOKEN=tu_token_de_acceso_personal # Tu Token de Acceso Personal a GitHub
export GITHUB_ACCOUNT=tu_cuenta # Tu Cuenta de GitHub
export GITHUB_REPO=tu_repositorio # Repositorio de GitHub donde quieres configurar el Runner
- Ejecuta Molecule:
molecule test
Esto ejecutará la prueba de Molecule, creará un contenedor Docker, ejecutará el rol en él, ejecutará cualquier prueba default
asociada (ver molecule/default directorio), y luego destruirá el contenedor.
Para más información sobre cómo usar Molecule, consulta la documentación de Molecule.
Licencia
MIT
Información del Autor
Creado en 2020 por Michal Muransky
Deploy Github Actions private runner
ansible-galaxy install monolithprojects.github_actions_runner