Skip to content

Forgejo-Runner

Podman
  • Nachdem ich ja hier einen Forgejo-Server aufgesetzt habe, den ich mittlerweile auch produktiv nutze, bin ich natürlich sehr schnell über Actions gestolpert.

    Mit Actions kann man verschiedene Prozesse automatisieren. z.B. das Testen seiner Repos, den Build Prozess usw.

    Doch wie macht man das?

    Dafür hat Forgejo ein Tool namens Forgejo-Runner. Die Anleitung für die Installation findet man -> https://forgejo.org/docs/latest/admin/runner-installation/

    97dfddb2-30f4-44a8-94c6-806ab3a47fd1-image.png

    Aus der Anleitung

    The Forgejo Runner is a daemon that fetches workflows to run from a Forgejo instance, executes them, sends back with the logs and ultimately reports its success or failure.

    It needs to be installed separately from the main Forgejo instance. For security reasons it is not recommended to install the runner on the same machine as the main instance.

    Ok, kann ich nicht auf dem Forgejo Server mitlaufen lassen 😞 Das Schöne an dem Runner ist, er kann auch lokal laufen, sprich auf meinem Proxmox 🙂

    Das bin ich dann mal angegangen. Ich wollte jetzt hier nicht wieder eine Anleitung schreiben, dazu gibt es im Netz genügend Informationen. Die Original Anleitung erklärt den Installationsprozess auch ausreichend gut, bis auf eine Kleinigkeit. Die Podman Einbindung habe ich nicht besonders gut hinbekommen, also hatte ich eine anstrengende Sitzung. Es hat lange gedauert, bis ich es hinbekommen habe.

    Systemd

    Im wesentlichen habe ich jetzt einen Debian 13 Trixie Server aufgesetzt, dieser hat Podman verpasst bekommen. Es gibt einen User runner und einen User docker. Zwei SystemD-Dienste habe ich angelegt.

    podman-docker-socket.service

    [Unit]
    Description=Podman Docker API Socket
    Documentation=man:podman-system-service(1)
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/podman system service --time=0 unix:///var/run/docker.sock
    ExecStartPost=/bin/sh -c 'sleep 1 && chown root:docker /var/run/docker.sock && chmod 660 /var/run/docker.sock'
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

    forgejo-runner.service

    [Unit]
    Description=Forgejo Runner
    Documentation=https://forgejo.org/docs/latest/admin/actions/
    After=docker.service
    
    [Service]
    ExecStart=forgejo-runner daemon
    ExecReload=/bin/kill -s HUP $MAINPID
    
    # This user and working directory must already exist
    User=runner
    WorkingDirectory=/home/runner
    Restart=on-failure
    TimeoutSec=0
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

    Der podman-docker-socket.service macht was?

    This command makes Podman listen on the standard Docker socket location (/var/run/docker.sock), which allows Docker clients and tools to communicate with Podman instead of Docker. Essentially, it lets you use Docker-compatible tools with Podman as the backend container engine.
    This is useful in environments where you want to use Podman instead of Docker (for security or other reasons) but still need compatibility with tools that expect to talk to Docker.
    @geklaut von claude.ai

    Ok, damit kann der Forgejo-Runner ganz normal seine Docker Befehle absetzen und Podman übernimmt dann.

    Auf meinem Server sieht das dann so aus

    pstree
    systemd─┬─agetty
            ├─cron
            ├─dbus-daemon
            ├─dhclient
            ├─forgejo-runner───7*[{forgejo-runner}]
            ├─podman───7*[{podman}]
            ├─qemu-ga───{qemu-ga}
            ├─sshd───sshd-session───sshd-session───bash───pstree
            ├─systemd───(sd-pam)
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-timesyn───{systemd-timesyn}
            └─systemd-udevd
    

    Wie man die Actions beim Runner registriert, ist in der Anleitung gut dokumentiert. Den Token dafür bekommt man auf dem Forgejo-Server.

    Token.png

    Wenn dann alles so weit funktioniert, kann man in seine Repos folgendes einbauen. Der Workflow dient zum Testen, ob alles gut funktioniert.

    .forgejo/workflows/test.yaml

    name: Test Runner
    
    on:
      push:
        branches: [ main ]
      workflow_dispatch:
    
    jobs:
      test:
        runs-on: docker
        container:
          image: debian:12
        steps:
          # Package duf installieren
          - name: Install package duf
            run: |
              apt-get update && apt-get install -y duf          
          - name: Test Connection
            run: |
              echo "Hello from Runner!"
              whoami
              hostname
              date
              duf
              echo "Environment is working!"
    

    Wenn man das dann pusht, startet der Workflow / Actions.

    4ac20208-c4f6-467d-b2b6-885956e1639f-image.png

    Am Ende sollte alles grün sein 🙂

    Man kann sich dann die Ausgabe ansehen, ob alles geklappt hat, wie man es erwartet.

    199bbdbd-b833-46af-b4d6-edd796ab28ff-image.png

    So weit bin ich zufrieden und kann mich damit jetzt weiter beschäftigen.

    Anmerkung

    Wie immer, wer Fehler oder Blödsinn findet, mag das bitte hier unten drunter schreiben. Ich ändere das dann gerne.

  • Nextcloud - Upgrade Hub 9 (30.0.0)

    Nextcloud nextcloud linux
    3
    2
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF
    Ich habe dann mal weitergesucht, dank ein paar Tipps aus dem Fediverse, sehe ich jetzt was heller https://chaos.social/@towo/113152384137718991 Nachdem ich dann ein paar Apps gefunden und installiert hatte AppAPI Flow tauchte dann im Benutzermenü, rechts oben, folgendes auf. [image: 1726992766346-bildschirmfoto_20240922_101125.png] Das Interessante ist der Menüpunkt Externe Apps. Nun sollte ich diese Funktion verstanden haben. Das Nextcloud Team integriert also diese Windmill App via Docker Container und greift dann darauf zu. In der Videopräsentation war doch von in Nextcloud integriert die Werbeansprache!? Ein Docker Container ist für mich keine Integration. Ich habe einige rudimentäre Kenntnisse von Docker, ausschließlich lokal. Aber, ich komme nicht auf die Idee das auf einem produktiven Server zu installieren. Somit kann ich das Testen hier beenden und die Apps alle wieder deinstallieren. Jetzt habe ich noch im Kopf, ob man das mal mit einem Nextcloud-AIO testen soll? Natürlich auf einem Testsystem. https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-use-this
  • MSI B650 Tomahawk WiFi

    Allgemeine Diskussionen msi b650 am5 amd linux
    5
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    FrankMF
    @kiwilog Danke für die Antwort. Ich habe mittlerweile ein ASUS Rog Strix B650E-F Gaming Wifi. Auch dieses Board hatte Probleme. Ich habe dann den RAM ausgetauscht und jetzt funktioniert es. Das MSI Board liegt hier aber noch, so das ich deinen Tipp da mal testen kann. Das wartet aber noch auf einen AMD Ryzen 9000 Als Fazit, die AM5 Plattform scheint sehr empfindlich zu sein.
  • Flask Projekt auf einem anderen Rechner installieren

    Python3 python flask linux
    1
    0 Stimmen
    1 Beiträge
    172 Aufrufe
    Niemand hat geantwortet
  • Manjaro - KDE Plasma 6

    Linux manjaro linux plasma6 kde
    3
    3
    0 Stimmen
    3 Beiträge
    835 Aufrufe
    FrankMF
    Da fällt mir heute beim Lesen dieses Beitrages auf das ich damals ja auf unstable gestellt habe. [frank-manjaro ~]# pacman-mirrors --get-branch unstable Anleitung dazu -> https://wiki.manjaro.org/index.php/Switching_Branches Ok, da könnte ja auch mal was schief gehen? Da ich hier aber ein btrfs Filesystem fahre und Timeshift Snapshots anlegt, sollte das Risiko überschaubar sein. [image: 1714893983029-567442e5-80f0-4ce9-9b91-3e8f9a4a94d8-grafik.png] Es werden bei jeder Aktion vorher Snapshots angelegt, auf die man im Grub Menü zugreifen kann und diese wieder installieren lassen kann. Hatte das früher schon mal getestet, ging wirklich gut. Werde ich die Tage auch hier auf dem System, zur Sicherheit, mal testen. Fazit, ich lasse das mal so wie es ist
  • Linux Mint Cinnamon 21.3 Virginia

    Linux linuxmint 21.3 linux wayland
    1
    2
    0 Stimmen
    1 Beiträge
    499 Aufrufe
    Niemand hat geantwortet
  • Vaultwarden auf Debian Bookworm 12 installieren!

    Angeheftet Linux vaultwarden bookworm linux
    6
    5
    0 Stimmen
    6 Beiträge
    4k Aufrufe
    I
    Vielen lieben Dank Nico! Jetzt läuft vaultwarden.
  • EndeavourOS - ein Test

    Linux endeavouros linux
    12
    0 Stimmen
    12 Beiträge
    507 Aufrufe
    FrankMF
    Ich möchte aus Fairness Gründen hier festhalten, das die Probleme mit dem Standby in Endeavour vermutlich kein Problem der Distrubution sind. Bitte dazu folgenden Beitrag von mir lesen. https://linux-nerds.org/topic/1397/debian-bookworm-12-test/3
  • Kopia - APT Repository verfügbar

    Kopia kopia linux
    1
    0 Stimmen
    1 Beiträge
    228 Aufrufe
    Niemand hat geantwortet