Working generator & added whole site
This commit is contained in:
167
raws/blog/2021-01-15_drone.md
Normal file
167
raws/blog/2021-01-15_drone.md
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
title: Setup Gitea / Drone / Docker
|
||||
description: gitea drone cicd docker
|
||||
date: 2021-01-15
|
||||
yearonly: false
|
||||
url: giteadronedocker.html
|
||||
---
|
||||
|
||||
Je suis un grand fan du selfhosted. J'essais d'avoir un maximum de services directement dans mon chez moi. Le but n'est pas de s'isoler d'internet mais de
|
||||
reprendre le contrôle sur ce qui peut l'être.
|
||||
|
||||
# Gitea, Drone, Docker & You
|
||||
|
||||
Le plan est simple: avoir tout le pipeline d'intégration en local. Exit les coûts du ci/cd et de l'hébergement.
|
||||
|
||||
## Docker
|
||||
|
||||
Tout repose sur Docker pour simplifier un maximum la gestion / installation de l'ensemble de nos composants.
|
||||
Les commandes sont pour un système basé sur Debian, tout se base sur la [documentation officielle de Docker](https://docs.docker.com/engine/install/debian/).
|
||||
|
||||
On commence par ajouter le repo de Docker avec ses dépendances:
|
||||
|
||||
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
|
||||
|
||||
On install Docker lui même:
|
||||
|
||||
apt-get update
|
||||
apt-get install docker-ce docker-ce-cli containerd.io
|
||||
systemctl enable docker
|
||||
|
||||
Puis Docker-compose:
|
||||
|
||||
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
chmod +x /usr/local/bin/docker-compose
|
||||
|
||||
|
||||
Enfin, on créé un registre docker local qui nous servira de cible pour drone.
|
||||
|
||||
Dans un fichier docker-compose.yml:
|
||||
|
||||
---
|
||||
version: "2"
|
||||
|
||||
networks:
|
||||
gitea:
|
||||
external: false
|
||||
|
||||
services:
|
||||
registry:
|
||||
image: registry:2
|
||||
container_name: registry
|
||||
environment:
|
||||
- REGISTRY_HTTP_RELATIVEURLS=true
|
||||
volumes:
|
||||
- /docker_data/registry:/var/lib/registry
|
||||
ports:
|
||||
- 5000:5000
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
|
||||
## Gitea
|
||||
|
||||
C'est ici que le fun commence. On ajoute dans notre docker-compose sous services:
|
||||
|
||||
services:
|
||||
...
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
restart: always
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- /docker_data/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- 3000:3000
|
||||
- 222:22
|
||||
restart: unless-stopped
|
||||
|
||||
Sous volumes, /docker_data/gitea, est une préférence personnel pour ranger les fichiers de config des conteneurs Docker.
|
||||
|
||||
On lance le tout avec 'docker-compose up -d', et on va sur 'serveurIP:3000' pour configurer Gitea.
|
||||
|
||||
|
||||
## Drone
|
||||
|
||||
Même combat qu'avec Gitea, on ajoute Drone et un runner de base a notre docker-compose:
|
||||
|
||||
services:
|
||||
...
|
||||
drone:
|
||||
image: drone/drone
|
||||
container_name: drone
|
||||
depends_on:
|
||||
- gitea
|
||||
volumes:
|
||||
- /docker_data/drone:/var/lib/drone/
|
||||
environment:
|
||||
- DRONE_GITEA_SERVER=git.monsite
|
||||
- DRONE_GITEA_CLIENT_ID=...
|
||||
- DRONE_GITEA_CLIENT_SECRET=...
|
||||
- DRONE_RPC_SECRET=...
|
||||
- DRONE_SERVER_HOST=...
|
||||
- DRONE_SERVER_PROTO=http
|
||||
ports:
|
||||
- 8383:80
|
||||
- 8484:443
|
||||
restart: unless-stopped
|
||||
|
||||
drone-runner-docker:
|
||||
image: drone/drone-runner-docker
|
||||
container_name: drone-runner-docker
|
||||
depends_on:
|
||||
- drone
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- DRONE_RPC_PROTO=http
|
||||
- DRONE_RPC_HOST=...
|
||||
- DRONE_RPC_SECRET=...
|
||||
- DRONE_RUNNER_CAPACITY=2
|
||||
- DRONE_RUNNER_NAME=DefaultDockerRunner
|
||||
ports:
|
||||
- 8585:3000
|
||||
restart: unless-stopped
|
||||
|
||||
La on a plus de choses a configurer avant de lancer. Depuis Gitea, ajoutez une application et récupéré toutes les clé nécessaire a Drone. Avoir la [documentation de Drone](https://docs.drone.io/server/provider/gitea/#install-runners) avec soit ne fait pas de mal.
|
||||
|
||||
|
||||
## Utilisation du tout
|
||||
|
||||
Sur votre projet git favorit, par exemple superProjet, ajoutez un '.drone.yml':
|
||||
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
steps:
|
||||
- name: build
|
||||
image: plugins/docker
|
||||
settings:
|
||||
registry: dockerreg.monsite
|
||||
repo: dockerreg.monsite/superProjet
|
||||
- name: deploy
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host:
|
||||
from_secret: deploy_host
|
||||
username:
|
||||
from_secret: deploy_user
|
||||
password:
|
||||
from_secret: deploy_password
|
||||
port: 22
|
||||
script:
|
||||
- docker-compose pull superProjet
|
||||
- docker-compose up -d superProjet
|
||||
|
||||
Depuis l'interface de Drone, on active le repo de superProjet et on ajoute les secrets nécessaire.
|
||||
|
||||
Et maintenant on profite et abuse de notre super pipeline qui nous fait gagner du temps.
|
||||
Reference in New Issue
Block a user