monolithprojects.github_actions_runner

Runner de GitHub Actions

awesome-runners Versión del rol Descargas del rol Prueba de Molecule Licencia

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 alcance repo (al crear un runner de repositorio), el alcance admin:org (al crear un runner para una organización), el alcance manage_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

  1. Instala Python, Docker y Ansible si aún no lo has hecho.
  2. 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

  1. Navega al directorio del rol:
cd path/to/monolithprojects.github_actions_runner
  1. 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
  1. 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

Acerca del proyecto

Deploy Github Actions private runner

Instalar
ansible-galaxy install monolithprojects.github_actions_runner
Licencia
mit
Descargas
304.1k
Propietario
Full-time Cloud Engineer, part-time adventurer