Gitea : Gitea Actions (intégration continue)
Gitea Actions exécute des workflows (tests, compilation, déploiement) déclenchés par les événements d’un dépôt. La syntaxe est proche de celle de GitHub Actions. Les tâches sont exécutées par un runner (act_runner), installé sur une machine à part ou sur le serveur. Les exemples utilisent des noms génériques.
Principe
Section intitulée « Principe »| Élément | Rôle |
|---|---|
| Workflow | Fichier YAML dans .gitea/workflows/ du dépôt |
| Runner | Programme act_runner qui récupère les tâches et les exécute |
| Étiquette (label) | Associe runs-on: d’un workflow à une image Docker du runner |
Prérequis
Section intitulée « Prérequis »- Gitea avec Actions activé (section
[actions] ENABLED = truedansapp.inisi nécessaire, puis redémarrage). - Docker sur la machine du runner (voir Installer Docker sur Ubuntu).
Installer le runner
Section intitulée « Installer le runner »Version courante : voir dl.gitea.com/act_runner (exemple : 0.6.1).
VERSION=0.6.1cd /tmpcurl -fsSLO "https://dl.gitea.com/act_runner/${VERSION}/act_runner-${VERSION}-linux-amd64"sudo install -m 755 "act_runner-${VERSION}-linux-amd64" /usr/local/bin/act_runneract_runner --versionCréer un utilisateur dédié qui a accès à Docker, et son dossier :
sudo adduser --system --group --home /var/lib/act_runner --shell /bin/bash runnersudo usermod -aG docker runnerObtenir un jeton d’enregistrement
Section intitulée « Obtenir un jeton d’enregistrement »| Origine | Où |
|---|---|
| Interface (instance) | Administration du site, Actions, Runners, Créer un nouveau runner |
| Interface (organisation ou dépôt) | Paramètres, Actions, Runners |
| Ligne de commande (sur le serveur Gitea) | sudo -u git gitea --config /etc/gitea/app.ini --work-path /var/lib/gitea actions generate-runner-token |
Le jeton est secret : ne pas le conserver dans l’historique ni dans un dépôt.
Configurer et enregistrer le runner
Section intitulée « Configurer et enregistrer le runner »sudo -u runner mkdir -p /var/lib/act_runner && cd /var/lib/act_runnersudo -u runner act_runner generate-config > config.yamlLe fichier config.yaml règle notamment le nombre de tâches parallèles (runner.capacity), les étiquettes et le réseau des conteneurs. Enregistrer le runner auprès de l’instance :
sudo -u runner act_runner register --no-interactive \ --instance https://git.exemple.com \ --token <jeton> \ --name runner-1 \ --labels "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"| Option | Rôle |
|---|---|
--instance |
URL de Gitea (accessible depuis le runner) |
--token |
Jeton d’enregistrement |
--name |
Nom affiché dans l’interface |
--labels |
Étiquettes nom:docker://image (plusieurs séparées par des virgules) |
--ephemeral |
Le runner ne traite qu’une tâche puis s’arrête |
L’enregistrement crée le fichier .runner dans le dossier courant.
Service systemd
Section intitulée « Service systemd »sudo tee /etc/systemd/system/act_runner.service <<'CONF'[Unit]Description=Gitea Actions runnerAfter=network.target docker.service
[Service]Type=simpleUser=runnerGroup=runnerWorkingDirectory=/var/lib/act_runnerExecStart=/usr/local/bin/act_runner daemon --config /var/lib/act_runner/config.yamlRestart=on-failureRestartSec=5s
[Install]WantedBy=multi-user.targetCONFsudo systemctl daemon-reloadsudo systemctl enable --now act_runnersystemctl status act_runnerLe runner apparaît ensuite comme « Inactif » (disponible) dans l’interface Gitea.
Écrire un workflow
Section intitulée « Écrire un workflow »Fichier .gitea/workflows/ci.yml dans le dépôt :
name: CIon: push: branches: [main] pull_request:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 24 - run: npm ci - run: npm teston: événements déclencheurs (push,pull_request,schedule,workflow_dispatch).runs-on: étiquette du runner (iciubuntu-latest).uses: action réutilisable (téléchargée depuisgithub.compar défaut ; l’URL d’un dépôt Gitea est aussi possible).run: commande du shell.
Après un git push, l’exécution se suit dans l’onglet Actions du dépôt.
Secrets et variables
Section intitulée « Secrets et variables »Paramètres du dépôt (ou de l’organisation), Actions, Secrets et Variables :
steps: - run: ./deploy.sh env: DEPLOY_HOST: ${{ vars.DEPLOY_HOST }} DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}Les secrets sont chiffrés, masqués dans les journaux et non transmis aux workflows déclenchés par des demandes de fusion issues de forks.
Tester un workflow en local
Section intitulée « Tester un workflow en local »act_runner exec -W .gitea/workflows/ci.yml # exécute le workflow sans passer par le serveurMaintenance du runner
Section intitulée « Maintenance du runner »sudo journalctl -u act_runner -fsudo systemctl restart act_runnerdocker system prune -f # libère l'espace des conteneurs et images inutilisésMise à jour : télécharger la nouvelle version, remplacer /usr/local/bin/act_runner, sudo systemctl restart act_runner.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
| Le runner reste « Hors ligne » | sudo journalctl -u act_runner : adresse de l’instance injoignable, jeton invalide ou Docker arrêté |
Cannot connect to the Docker daemon |
L’utilisateur du runner n’est pas dans le groupe docker (ou session non rouverte) |
| Un job reste en attente | Aucune étiquette ne correspond à runs-on: : --labels et config.yaml |
Les actions uses: ne se téléchargent pas |
Accès sortant vers github.com bloqué, ou configurer une URL d’actions par défaut dans app.ini ([actions] DEFAULT_ACTIONS_URL) |
| Beaucoup d’anciens runs | Régler RUN_RETENTION_DAYS (Gitea 28), supprimer les artefacts |
| Un job échoue sur la mémoire ou le disque | Limiter runner.capacity, docker system prune |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »L’installation du runner est identique sur les deux versions.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Documentation : Gitea Actions
- Dépôt du runner : gitea.com/gitea/act_runner