Skip to content

Forgejo-Runner

Podman
1 1 148
  • 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.

  • OpenSource - Donations 2024

    Allgemeine Diskussionen opensource linux donations
    1
    0 Stimmen
    1 Beiträge
    296 Aufrufe
    Niemand hat geantwortet
  • Restic v0.17.0 released

    Restic restic linux
    1
    0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • Manjaro - KDE Plasma 6

    Linux manjaro linux plasma6 kde
    3
    3
    0 Stimmen
    3 Beiträge
    859 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
  • Docker & Redis Datenbank

    Verschoben Linux docker linux redis
    2
    0 Stimmen
    2 Beiträge
    263 Aufrufe
    FrankMF
    @FrankM sagte in Docker & Redis Datenbank: save 60 1 #save 900 1 save 300 10 save 60 10000 Hier kann man auch noch schön sehen, wie ich gekämpft habe, bis ich mal eine dump.rdb gesehen habe. Auch irgendwie logisch, das ich nie eine gesehen hatte, wenn man weiß das save 900 1 bedeutet, das er alle 900 Sekunden speichert, wenn mindestens eine Änderung vorhanden ist. Das kann dann schon was dauern. Ich habe das dann mal verkürzt, damit ich schneller ein Ergebnis habe. save 60 1 Das brachte mich dann dem Ziel näher. Danach konnte ich die dump.rdb auch finden. Bitte keine Redis DB ohne Passwort laufen lassen!
  • Manjaro KDE Plasma 21.2.2

    Linux linux manjaro
    5
    2
    0 Stimmen
    5 Beiträge
    307 Aufrufe
    FrankMF
    Ok, geht nicht. Manjaro und ich werden leider keine Freunde. Da sind zu viele Dinge, die nicht besonders gut umgesetzt sind. Heute mal den Test gemacht und mein geliebtes Linux Mint Cinnamon installiert. Passwort für die Verschlüsselung nimmt anstandslos deutsche Sonderzeichen an WiFi geht auch nicht mit WPA3, man kann aber einfach auf WPA2 umstellen und das funktioniert. Damit endet dieser Versuch jetzt..
  • Ansible - ein kurzer Test

    Linux ansible linux
    1
    0 Stimmen
    1 Beiträge
    180 Aufrufe
    Niemand hat geantwortet
  • Quartz64 - SPDIF Modul

    Verschoben Quartz64 - A quartz64 linux
    2
    3
    0 Stimmen
    2 Beiträge
    330 Aufrufe
    FrankMF
    Für das bequeme Umschalten der Soundkarten kann man das Tool alsamixer benutzen. pacman -S alsa-utils Danach alsamixer [image: 1633791802992-e912744f-8f69-4b28-a50b-7ffc8a3ab399-grafik.png]
  • IPv6 und Subnetze

    Linux linux ipv6
    1
    0 Stimmen
    1 Beiträge
    249 Aufrufe
    Niemand hat geantwortet