Gitea in Drone CI

Pred nekaj leti sem pričel uporabljati Gitlab za build Docker imageov. Gitlab sem postavil v Docker kontejner in sem ga vsa ta leta pridno nadgrajeval. Buildane image pusham v Gitlab register in potem naprej v DockerHub, kjer jih ponudim javnosti. Težava Gitlaba je to, da je ogromen, narejen za skupine in tega ne potrebujem. Zato sem se že pred časom pričel spogledovat z Gitea, ki je za moje potrebe povsem dovolj. Končno mi je uspelo postaviti kontejner za Traefikom, ki služi svojim namenom. Za nadaljevanje sem za CI izbral Drone.io, kjer sem uspešno kontejner povezal z Giteo.

Torej na kratko: postavil sem Gitea, Drone Server in Drone Agenta na Docker hostu za Traefikom, ki zaključuje SSL. Uporabil sem sledeče:

Gitea – (domač GIT strežnik)
Drone Server – (strežnik za web, repozitorije, secrtes, uporabnike, …)
Drone Agent – (worker za builde, jobe, …)

Težave: Drone.io in self-signed SSL certifikati za Traefik kontejnerjem (čepraj je SSL od LE, pridobljen ročno)

Odprava težav: dokler ne ugotovim, kako uredit self-signed sem promet med Drone.io in Gitea usmeril preko HTTP (ni varno ampak glede na to, da ni public in je v notranjem omrežju ni nevarnosti – za public teh težav ne bi imel, saj bi uporabil Let’s Encrypt, za katerega je le to urejeno).

To bo še kar nekaj dela …

Yaml datoteka – tu je Gitea povezan še na Traefik, ampak lahko tudi brez tega:

services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
– USER_UID=UID_USERJA
– USER_GID=GID_USERJA
– SSH_DOMAIN=FQDN_strežnika
– SSH_PORT=222
– SSH_LISTEN_PORT=22
– DOMAIN=FQDN_strežnika
– ROOT_URL=https://FQDN_strežnika
– APP_NAME=”GITea”
– RUN_MODE=prod
– DB_TYPE=postgres
– DB_HOST=gitea-db:5432
– DB_NAME=gitea
– DB_USER=postgres
– DB_PASSWD=postgres
restart: always
networks:
– gitea
– proxy
volumes:
– /nfs/docker/gitea:/data
– /home/git/.ssh/:/data/git/.ssh
– /etc/timezone:/etc/timezone:ro
– /etc/localtime:/etc/localtime:ro
ports:
– “3000:3000”
– “222:22”

labels:
– “traefik.enable=true”
– ..
– ..

gitea-db:
image: postgres:alpine
container_name: gitea-db
restart: always
volumes:
– /nfs/docker/gitea-db:/var/lib/postgresql/data
environment:
– POSTGRES_USER=postgres
– POSTGRES_PASSWORD=postgres
– POSTGRES_DB=gitea
networks:
– gitea

drone-server:
image: drone/drone:latest
container_name: drone-server
ports:
– 81:81
– 9000
volumes:
– /nfs/docker/drone:/var/lib/drone/
restart: always
depends_on:
– gitea
environment:
– DRONE_OPEN=true
– DRONE_GITEA=true
– DRONE_NETWORK=gitea
– DRONE_DEBUG=true
– DRONE_ADMIN=admin
– DRONE_USER_CREATE=username:admin,admin:true
– DRONE_SERVER_PORT=:81
– DRONE_DATABASE_DRIVER=postgres
– DRONE_DATABASE_DATASOURCE=postgres://postgres:postgres@gitea-db:5432/postgres?sslmode=disable
– DRONE_GIT_ALWAYS_AUTH=true
– DRONE_RPC_SECRET=kreirajga
– DRONE_GITEA_CLIENT_ID=kreirajga
– DRONE_GITEA_SERVER=http://FQDN_strežnika:3000
– DRONE_GITEA_CLIENT_SECRET=kreirajga
– DRONE_SERVER_HOST=FQDN_strežnika:81
– DRONE_HOST=http://FQDN_strežnika:81
– DRONE_SERVER_PROTO=http
– DRONE_TLS_AUTOCERT=false #- če uporabljaš LE daj na true
– DRONE_AGENTS_ENABLED=true
networks:
– gitea

drone-agent:
image: drone/agent:latest
container_name: drone-agent
command: agent
restart: always
depends_on:
– drone-server
volumes:
– /var/run/docker.sock:/var/run/docker.sock
– /root/docker/drone-agent:/data
environment:
– DRONE_RPC_SERVER=http://FQDN_strežnika:81
– DRONE_GITEA_CLIENT_SECRET=kreirajga
– DRONE_RPC_SECRET=kreirajga
– DRONE_RUNNER_CAPACITY=1
– DRONE_GITEA_CLIENT_ID=kreirajga
– DRONE_RUNNER_NETWORKS=gitea
networks:
– gitea

Spremenljivke DRONE_GITEA_CLIENT_ID, DRONE_GITEA_CLIENT_SECRET dobimo v Gitea -> Settings -> Application in dodamo novo OAuth2 aplikacijo, za spremenljivko DRONE_RPC_SECRET si pa izmislimo sami.

Dodaj odgovor

Vaš e-naslov ne bo objavljen. * označuje zahtevana polja