homepage-picocms/content/blog/2020/20200507.synology-docker-gitea-drone.md
2020-11-21 15:18:11 +01:00

2.8 KiB

Title, Description, Author, Date, Categories, Template, hasCode
Title Description Author Date Categories Template hasCode
Gitea und Drone Einrichtung einer CI/CD-Lösung auf der Diskstation Christian Seyfferth 2020-05-07 01:00
DevOps
templates/blogitem true

Task-Automatisierung mit der Diskstation

Einige haben ja, wie ich, zu Hause eine Diskstation von Synology stehen. Da ich selbst auch einige kleine Sachen programmiere, wollte ich mir auch den Komfort wie auf Arbeit gönnen und automatisiert Pipelines starten.

Da ich aber nicht gleich eine Enterprise-Lösung wie GitLab einsetzen wollte, habe ich mir alternativen gesucht.

Und da die DS218+ ja genug Power für ein paar Docker-Container hat sieht diese Alternative folgendermaßen aus:

  • Docker

    • Gitea
    • Drone-Server
    • Drone-Runner
  • Oauth

  • Webhook

  • Admin

Gitea-Setup

Zuerst brauchen wir einen User unter dem Gitea laufen soll. Also legen wir im DSM einen Benutzer und eine Gruppe an. Den User richten wir direkt als Mitglied der Gruppe ein.

In meinem Fall habe ich beide git genannt.

Nun brauchen wir die IDs von beiden. Dafür gehe ich per SSH auf die Diskstation und suche mir die IDs zu beiden und das Homeverzeichnis des Users heraus. Letzteres brauchen wir später um gitea über ssh ansprechen zu können.

id git
#uid=1034(git) gid=100(users) groups=100(users),65540(git)
cat /etc/passwd | grep git
#git:x:1034:100:Gitea-Benutzer:/var/services/homes/git:/sbin/nologin

Hieraus habe ich folgende Infos erhalten:

Name Wert
UID 1034
GID 65540
Home /var/services/homes/git

Wenn wir einmal beim User sind, richten wir direkt die möglichkeit für git-per-ssh ein.

HOMEDIR=/var/services/git
mkdir $GIT_HOMEDIR/.ssh
chown git:git $HOMEDIR/.ssh

Um GitCommandos an Gitea weiterzugeben, legen wir die Datei /app/gitea/gitea an und füllen sie.

mkdir -p /app/gitea
echo "#!/bin/sh" > /app/gitea/gitea
echo "ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND"=\$SSH_ORIGINAL_COMMAND\" $0 @0" >> /app/gitea/gitea

Weiterhin brauchen wir eine Datenbank. Ich arbeite hier mit der MariaDB v10, die eh auf der Diskstation läuft. Also legen wir uns einen DB-User an und geben diesem Rechte auf eine ebenso anzulegende Datenbank.

Nun können wir Gitea im Docker starten:

docker run -d --name gitea \
    -e DB_TYPE=mysql \
    -e DB_HOST=127.20.0.1:3307 \
    -e DB_NAME=gitea \
    -e DB_PASSWD=passwort \
    -e TZ=Europe/Berlin \
    -e USER_UID=1034 \
    -e USER_GID=65540 \
    -e ROOT_URL=https://git.example.com/ \
    -e SSH_DOMAIN=git.example.com \
    -p 2222:22 \
    -p 30180:3000 \
    -v /var/services/homes/git/.ssh:/data/git/.ssh \
    -v /volume1/docker/gitea/data:/data \
    gitea/gitea