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

87 lines
2.8 KiB
Markdown

---
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
```