diff --git a/README.md b/README.md index 4f4e646..cd49be5 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Create the data directories (`/data`) for persisting Forgejo runner configuratio ```sh sudo mkdir -p /data/.cache /data/.config +sudo touch /data/.runner sudo chown -R $UID:$UID /data sudo chmod -R 700 /data @@ -41,72 +42,40 @@ Clone this repository: git clone https://git.poire.dev/aramperes/forgejo-runner-podman.git ``` -For the first-time set-up, you will need to stop the Forgejo Runner from starting up so you can configure the token with your Forgejo server. +For the first-time set-up, you will need to stop the Forgejo Runner from starting to register with the Forgejo server. ```diff -# vim forgejo-runner-quadlet/quadlets/forgejo-runner.container +# vim docker-compose.yml -- Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" -- # Exec=/bin/sh -c "while : ; do sleep 1 ; done ;" -+ # Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" -+ Exec=/bin/sh -c "while : ; do sleep 1 ; done ;" +- command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" +- # command: /bin/sh -c "while : ; do sleep 1 ; done ;" ++ # command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" ++ command: /bin/sh -c "while : ; do sleep 1 ; done ;" ``` -Create the directory for the quadlets. SystemD will be looking for the quadlets here, and we can use symbolic links to keep them in sync with this repo. +Start the services: ```sh -mkdir -p $HOME/.config/containers/systemd - -for f in forgejo-runner-quadlet/quadlets/*; do ln -s $(realpath $f) $HOME/.config/containers/systemd/$(basename $f); done -``` - -Confirm: - -```sh -ls -l $HOME/.config/containers/systemd/ - -# forgejo-runner.container -> /home/user/forgejo-runner-quadlet/quadlets/forgejo-runner.container -# podman-runtime.container -> /home/user/forgejo-runner-quadlet/quadlets/podman-runtime.container -# runner.network -> /home/user/forgejo-runner-quadlet/quadlets/runner.network -``` - -Run SystemD generator dry-run to validate the quadlets: - -```sh -/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun && echo 'Validated!' -``` - -Reload SystemD daemon and start the Runner. This will automatically create the Podman Runtime container and the bridge network. - -```sh -systemctl --user daemon-reload -systemctl --user start forgejo-runner.service +podman-compose up -d ``` Confirm the containers are running. This might take a few seconds. ```sh podman ps - # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -# b2e57b02edea quay.io/podman/stable:latest podman system ser... 6 minutes ago Up 6 minutes systemd-podman-runtime -# 7521cab26b80 data.forgejo.org/forgejo/runner:9 /bin/sh -c while ... 14 seconds ago Up 15 seconds systemd-forgejo-runner -``` - -To enable automatic start-up on boot, your user needs to have "lingering" enabled in SystemD: - -```sh -sudo loginctl enable-linger $USER +# 71cb0d2af329 quay.io/podman/stable:latest podman system ser... 12 minutes ago Up 12 minutes podman-runtime +# 9b29fcb10113 data.forgejo.org/forgejo/runner:9 /bin/sh -c while ... 12 minutes ago Up 12 minutes forgejo-runner ``` ## Register the Runner -On your Forgejo server's `Site administration` page, go to `Action` then `Runners`. Click `Create a new runner` and copy the token. +On your Forgejo server's `Site administration` page, go to `Actions`, `Runners`. Click `Create a new runner` and copy the token. Back on your Forgejo Runner host, run: ```sh -podman exec -it systemd-forgejo-runner /bin/sh +podman exec -it forgejo-runner /bin/sh # Run inside the container and follow the instructions: # (I recommend setting the label 'docker') @@ -133,22 +102,21 @@ container: + privileged: true ``` -Revert the runner's quadlet to launch the daemon: +Revert the runner's `command` to launch the daemon: ```diff -# vim forgejo-runner-quadlet/quadlets/forgejo-runner.container +# vim docker-compose.yml -- # Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" -- Exec=/bin/sh -c "while : ; do sleep 1 ; done ;" -+ Exec=/bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" -+ # Exec=/bin/sh -c "while : ; do sleep 1 ; done ;" +- # command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" +- command: /bin/sh -c "while : ; do sleep 1 ; done ;" ++ command: /bin/sh -c "sleep 5; forgejo-runner daemon -c .config/config.yml" ++ # command: /bin/sh -c "while : ; do sleep 1 ; done ;" ``` -Reload the quadlet and restart it: +Update the services: -```sh -systemctl --user daemon-reload -systemctl --user restart forgejo-runner.service +``` +podman-compose up -d ``` Now, in the Forgejo server Runners page, you should see your new runner as "Idle". @@ -192,14 +160,3 @@ jobs: username: ${{ env.FORGEJO_ACTOR }} password: ${{ secrets.PACKAGE_TOKEN }} ``` - -## Making Changes - -If you would like to modify the quadlet configurations, you will need to run these commands to validate, apply, and restart: - -```sh -/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun && echo 'Validated!' -systemctl --user daemon-reload -systemctl --user restart podman-runtime.service -systemctl --user restart forgejo-runner.service -```