Rien de plus simple, voici la stack pour forgejo :
services:
forgejo:
image: codeberg.org/forgejo/forgejo:10
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- /docker/forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '3200:3000'
Pensez à adapter les volumes/ports.
Une fois déployé, rendez-vous sur votre instance et finaliser l'installation de Forgejo.
Une fois Forgejo installé, il va falloir récupérer un token pour ajouter le runner de façon global.
Rendez-vous dans Administration du site
=> Actions
=> Executeurs
et le bouton Créer un nouvel executeur
. Copiez le token dans un coin.
sudo apt update && sudo apt install -y jq
A ce jour, la version est en 6.2.2.
export RUNNER_VERSION=$(curl -X 'GET' https://code.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq .name -r | cut -c 2-)
Cette commande va ajouter le runner dans la liste des exécuteurs. Mettez votre token copié précédemment :
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /docker/forgejo/runner:/data \
code.forgejo.org/forgejo/runner:${RUNNER_VERSION} \
forgejo-runner register --no-interactive --token {TOKEN} --name runner-global --instance http://xxx.xxx.xxx.xxx:xxxx
Rafraichissez la page, le runner a bien été ajouté.
Ne pas prendre en compte le Statut Inactif de mon screen, à ce stade il doit être Hors-ligne. Mon container était déjà lancé 🙃
Cette commande va créer le fichier config.yml
ainsi que .runner
dans /docker/forgejo/runner/
:
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /docker/forgejo/runner:/data \
code.forgejo.org/forgejo/runner:${RUNNER_VERSION} \
forgejo-runner generate-config > /docker/forgejo/runner/config.yml
Ensuite, pour éviter les problèmes de permission, on va récupérer l'ID du groupe docker :
id | grep -Po '\d+\(docker\)'
Chez moi ça donne 1001(docker)
. Donc on change l'owner :
sudo chown -R 1000:1001 /docker/forgejo/runner
sudo chmod -R 755 /docker/forgejo/runner
Voici la stack finale tant attendue. Adapter la partie runner. Ici j'ai adapté /docker/forgejo/runner
, il faut bien que le fichier config.yml
ET .runner
soit présent sinon il ne fonctionnera pas.
services:
forgejo:
image: codeberg.org/forgejo/forgejo:10
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- /docker/forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '3200:3000'
runner:
command: ["forgejo-runner", "--config", "/data/config.yml", "daemon"]
container_name: forgejo-runner
image: code.forgejo.org/forgejo/runner:6.2.2
volumes:
- /docker/forgejo/runner:/data
- /var/run/docker.sock:/var/run/docker.sock
user: 1000:1001
Si le container forgejo-runner
est stoppé c'est qu'il y a une erreur, regardez dans les logs. Quand tout se passe bien, on obtient :