--- Title: Gitea und Drone Description: Einrichtung einer CI/CD-Lösung auf der Diskstation Author: Christian Seyfferth Date: 2020-05-07 01:00 Categories: - DevOps Template: templates/blogitem hasCode: 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. ```bash 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. ```bash 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. ```bash 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: ```bash 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 ```