Trabajar con Actions Runner Controller (ARC)
Note
La compatibilidad de ARC con Dependabot en GitHub Actions está actualmente en versión preliminar pública y sujeta a cambios.
En este artículo se proporcionan instrucciones paso a paso para configurar ARC en un clúster de Kubernetes y configurar Dependabot para ejecutarse en ejecutores de acciones autohospedados. El artículo:
- Contiene información general sobre la integración de ARC y Dependabot.
- Proporciona pasos detallados de instalación y configuración mediante scripts de Helm.
¿Qué es ARC?
Actions Runner Controller es un controlador de Kubernetes que administra GitHub Actions autohospedadas como pods de Kubernetes. Permite escalar y organizar dinámicamente los ejecutores en función de los flujos de trabajo, lo que proporciona un mejor uso de recursos e integración con entornos de Kubernetes. Consulta Acerca de Actions Runner Controller.
Dependabot en ARC
Puedes ejecutar Dependabot en ejecutores de GitHub Actions autohospedados administrados en un clúster de Kubernetes a través de ARC. Esto permite el escalado automático, el aislamiento de cargas de trabajo y una mejor administración de recursos para los trabajos de Dependabot, lo que garantiza que las actualizaciones de dependencia se puedan ejecutar de forma eficaz dentro de la infraestructura controlada de una organización al integrarse sin problemas con GitHub Actions.
Configuración de ARC para Dependabot en el entorno local
Requisitos previos
- Un clúster de Kubernetes
- Para un entorno de nube administrado, puedes usar Azure Kubernetes Service (AKS).
- Para una configuración local, puedes usar minikube.
- Helm
- Un administrador de paquetes para Kubernetes.
Configuración de ARC
-
Instala ARC. Para más información, consulta Inicio rápido para Actions Runner Controller.
-
Crea un directorio de trabajo para la instalación de ARC y crea un archivo de script de shell (por ejemplo,
helm_install_arc.sh
) para instalar la versión más reciente de ARC.Bash mkdir ARC touch helm_install_arc.sh chmod 755 helm_install_arc.sh
mkdir ARC touch helm_install_arc.sh chmod 755 helm_install_arc.sh
-
Edita
helm_install_arc.sh
con este script de Bash para instalar ARC.Text NAMESPACE="arc-systems" helm install arc \ --namespace "${NAMESPACE}" \ --create-namespace \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
NAMESPACE="arc-systems" helm install arc \ --namespace "${NAMESPACE}" \ --create-namespace \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
-
Ejecuta el archivo de script
helm_install_arc.sh
../helm_install_arc.sh
-
Ahora, debes configurar el conjunto de escalado del ejecutor. Para ello, vamos a empezar creando y editando un archivo con el siguiente script de Bash.
Bash touch arc-runner-set.sh chmod 755 arc-runner-set.sh
touch arc-runner-set.sh chmod 755 arc-runner-set.sh
Text INSTALLATION_NAME="dependabot" NAMESPACE="arc-runners" GITHUB_CONFIG_URL=REPO_URL GITHUB_PAT=PAT helm install "${INSTALLATION_NAME}" \ --namespace "${NAMESPACE}" \ --create-namespace \ --set githubConfigUrl="${GITHUB_CONFIG_URL}" \ --set githubConfigSecret.github_token="${GITHUB_PAT}" \ --set containerMode.type="dind" \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
INSTALLATION_NAME="dependabot" NAMESPACE="arc-runners" GITHUB_CONFIG_URL=REPO_URL GITHUB_PAT=PAT helm install "${INSTALLATION_NAME}" \ --namespace "${NAMESPACE}" \ --create-namespace \ --set githubConfigUrl="${GITHUB_CONFIG_URL}" \ --set githubConfigSecret.github_token="${GITHUB_PAT}" \ --set containerMode.type="dind" \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
-
Ejecuta el archivo de script
arc-runner-set.sh
.Bash ./arc-runner-set.sh
./arc-runner-set.sh
Note
- El nombre de instalación del conjunto de escalado del ejecutor debe ser
dependabot
para orientar el trabajo dependabot al ejecutor. - La configuración
containerMode.type="dind"
es necesaria para permitir que el ejecutor se conecte al demonio de Docker. - Si se crea un ejecutor de nivel de organización o de nivel empresarial, se deben proporcionar los ámbitos adecuados a Personal Access Token (PAT).
- Se puede crear un personal access token (classic) (PAT). El token debe tener los siguientes ámbitos en función de si va a crear un repositorio, una organización o un conjunto de escalado de ejecutores de nivel empresarial.
- Nivel de repositorio: repo
- Nivel de organización: admin:org
- Nivel de empresa: admin:enterprise
Para obtener más información sobre la creación de un personal access token (classic), consulta Administración de tokens de acceso personal.
Adición de grupos de ejecutores
Los grupos de ejecutores se usan para controlar qué organizaciones o repositorios tienen acceso a los conjuntos de escalado de ejecutores. Para agregar un conjunto de escalado de ejecutor a un grupo de ejecutores, ya debes tener un grupo de ejecutores creado.
Para obtener información sobre cómo crear grupos de ejecutores, consulta Administración del acceso a los ejecutores autohospedados mediante grupos.
No olvides agregar la siguiente configuración al conjunto de escalado del ejecutor en el gráfico de Helm.
--set runnerGroup="<Runner group name>" \
--set runnerGroup="<Runner group name>" \
Comprobación de la instalación
-
Comprueba la instalación.
Bash helm list -A
helm list -A
Salida:
➜ ARC git:(master) ✗ helm list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION arc arc-systems 1 2025-04-11 14:41:53.70893 -0500 CDT deployed gha-runner-scale-set-controller-0.11.0 0.11.0 arc-runner-set arc-runners 1 2025-04-11 15:08:12.58119 -0500 CDT deployed gha-runner-scale-set-0.11.0 0.11.0 dependabot arc-runners 1 2025-04-16 21:53:40.080772 -0500 CDT deployed gha-runner-scale-set-0.11.0
-
Comprueba el pod del administrador mediante este comando.
Bash kubectl get pods -n arc-systems
kubectl get pods -n arc-systems
Salida:
➜ ARC git:(master) ✗ kubectl get pods -n arc-systems NAME READY STATUS RESTARTS AGE arc-gha-rs-controller-57c67d4c7-zjmw2 1/1 Running 8 (36h ago) 6d9h arc-runner-set-754b578d-listener 1/1 Running 0 11h dependabot-754b578d-listener 1/1 Running 0 14h
Configuración de Dependabot
-
En GitHub, navegue hasta la página principal del repositorio.
-
En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.
-
En la sección "Seguridad" de la barra lateral, haga clic en Advanced Security.
-
En "Dependabot", desplázate hasta "Dependabot en Ejecutores de acciones" y selecciona Habilitar para "Dependabot en ejecutores autohospedados".
Desencadenar una ejecución de Dependabot
Ahora que has configurado ARC, puedes iniciar una ejecución de Dependabot.
-
En GitHub, navegue hasta la página principal del repositorio.
-
En el nombre del repositorio, haz clic en la pestaña Insights.
-
En la barra lateral izquierda, haga clic en Gráfico de dependencias.
-
En "Gráfico de dependencias", haga clic en Dependabot .
-
A la derecha del nombre del archivo de manifiesto que te interesa, haz clic en Trabajos de actualización recientes.
-
Si no hay ningún trabajo de actualización reciente para el archivo de manifiesto, haz clic en Buscar actualizaciones para volver a ejecutar un trabajo de Dependabot version updates y buscar nuevas actualizaciones en las dependencias de ese ecosistema.
Visualización de los ejecutores de ARC generados
Puedes ver los ejecutores de ARC que se han creado para el trabajo de Dependabot.
-
En GitHub, navegue hasta la página principal del repositorio.
-
En el nombre del repositorio, haz clic en Acciones.
-
En la barra lateral izquierda, haz clic en Ejecutores.
-
En "Ejecutores", haz clic en Ejecutores autohospedados para ver la lista de todos los ejecutores disponibles en el repositorio. Puede ver el ejecutor de dependabot efímero que se ha creado.
También puedes ver el mismo pod del ejecutor de dependabot creado en el clúster de Kubernetes desde el terminal ejecutando este comando.
Text ➜ ARC git:(master) ✗ kubectl get pods -n arc-runners NAME READY STATUS RESTARTS AGE dependabot-sw8zn-runner-4mbc7 2/2 Running 0 46s
➜ ARC git:(master) ✗ kubectl get pods -n arc-runners NAME READY STATUS RESTARTS AGE dependabot-sw8zn-runner-4mbc7 2/2 Running 0 46s
Además, puedes comprobar lo siguiente:
-
Los registros, comprobando el ejecutor y el nombre de la máquina. Consulta Visualización de registros de trabajos de Dependabot.
-
Las solicitudes de incorporación de cambios de actualización de versión creadas por el trabajo dependabot en la pestaña Solicitudes de incorporación de cambios del repositorio.