From f8e4f42cc27a25f9e8f13aa7824fd72df33bdf98 Mon Sep 17 00:00:00 2001 From: Simon C Date: Tue, 19 May 2020 17:00:15 +0200 Subject: [PATCH] Ajout du service Drone CI --- drone/.env | 37 ++++++++++++++++++++++++++++ drone/README.md | 20 ++++++++++++++++ drone/docker-compose.gitea.yml | 10 ++++++++ drone/docker-compose.traefik.yml | 22 +++++++++++++++++ drone/docker-compose.yml | 41 ++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 drone/.env create mode 100644 drone/README.md create mode 100644 drone/docker-compose.gitea.yml create mode 100644 drone/docker-compose.traefik.yml create mode 100644 drone/docker-compose.yml diff --git a/drone/.env b/drone/.env new file mode 100644 index 0000000..a698659 --- /dev/null +++ b/drone/.env @@ -0,0 +1,37 @@ +## DOCKER + +COMPOSE_FILE=./docker-compose.yml:./docker-compose.gitea.yml:./docker-compose.traefik.yml +TRAEFIK_NETWORK_NAME=kifeart + + +## DRONE SERVER + +# https://hub.docker.com/r/drone/drone/tags +DRONE_SERVER_IMAGE=drone/drone:1.7.0 + +DRONE_SERVER_VOLUME_NAME=drone-server +DRONE_SERVER_CONTAINER_NAME=drone-server + +# https://docs.drone.io/server/reference/ +DRONE_GIT_ALWAYS_AUTH=true +DRONE_RPC_SECRET=9VjG2Dj34Kdo2JYvn5iVxd7JjT5 +DRONE_SERVER_HOST=ci.cool.life +DRONE_SERVER_PROTO=https + +# https://docs.drone.io/server/provider/gitea/ +DRONE_GITEA_SERVER=gitea.cool.life +DRONE_GITEA_CLIENT_ID=UI76T78G-HDZ8-7CSD-6SDZ-YUIDG8Z7DSQ8 +DRONE_GITEA_CLIENT_SECRET=y9ruXnEqluXjKUcfs5yIFlH83yb1OpP32NCf0h5YJwg= + + + +## DRONE RUNNER + +# https://hub.docker.com/r/drone/drone-runner-docker/tags +DRONE_RUNNER_IMAGE=drone/drone-runner-docker:1.3.0 +DRONE_RUNNER_CONTAINER_NAME=drone-runner +DRONE_RUNNER_CAPACITY=2 +DRONE_RUNNER_HOST=ci-runner.cool.life +DRONE_RUNNER_NAME=ci-runner.cool.life +DRONE_RUNNER_UI_USERNAME=kosssi +DRONE_RUNNER_UI_PASSWORD=$not$a$password diff --git a/drone/README.md b/drone/README.md new file mode 100644 index 0000000..89f45ee --- /dev/null +++ b/drone/README.md @@ -0,0 +1,20 @@ +# Drone CI + +> Drone est construit avec Go et utilise Docker. Il peut être exécuté à l’intérieur d’un conteneur même avec très peu de configuration. +> +> [Codeflow][article] + +## Liens + +- [Site internet][site] +- [Code source][source] +- [Docker Hub][dockerhub] + +## TODO + +- Création d'un script de sauvegarde et restauration + +[article]: https://www.codeflow.site/fr/article/how-to-perform-continuous-integration-testing-with-drone-io-on-coreos-and-docker +[site]: https://drone.io/ +[source]: https://github.com/drone/drone +[dockerhub]: https://hub.docker.com/r/drone/drone diff --git a/drone/docker-compose.gitea.yml b/drone/docker-compose.gitea.yml new file mode 100644 index 0000000..4c4a925 --- /dev/null +++ b/drone/docker-compose.gitea.yml @@ -0,0 +1,10 @@ +version: "3.8" + +# https://docs.drone.io/server/provider/gitea/ + +services: + drone-server: + environment: + DRONE_GITEA_SERVER: ${DRONE_GITEA_SERVER} + DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID} + DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET} diff --git a/drone/docker-compose.traefik.yml b/drone/docker-compose.traefik.yml new file mode 100644 index 0000000..5a03918 --- /dev/null +++ b/drone/docker-compose.traefik.yml @@ -0,0 +1,22 @@ +version: "3.8" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME} + +services: + drone-server: + labels: + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME} + + traefik.http.routers.drone-server.rule: 'Host(`${DRONE_SERVER_HOST}`)' + traefik.http.routers.drone-server.entrypoints: 'web' + + drone-runner: + labels: + traefik.enable: 'true' + traefik.docker.network: ${TRAEFIK_NETWORK_NAME} + + traefik.http.routers.drone-runner.rule: 'Host(`${DRONE_RUNNER_HOST}`)' + traefik.http.routers.drone-runner.entrypoints: 'web' diff --git a/drone/docker-compose.yml b/drone/docker-compose.yml new file mode 100644 index 0000000..78bd9b6 --- /dev/null +++ b/drone/docker-compose.yml @@ -0,0 +1,41 @@ +version: "3.8" + +volumes: + drone-server: + name: ${DRONE_SERVER_VOLUME_NAME} + +services: + drone-server: + container_name: ${DRONE_SERVER_CONTAINER_NAME} + image: ${DRONE_SERVER_IMAGE} + restart: always + environment: + DRONE_GIT_ALWAYS_AUTH: ${DRONE_GIT_ALWAYS_AUTH} + DRONE_RPC_SECRET: ${DRONE_RPC_SECRET} + DRONE_SERVER_HOST: ${DRONE_SERVER_HOST} + DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO} + DRONE_LOGS_DEBUG: 'true' + volumes: + - drone-server:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + + drone-runner: + container_name: ${DRONE_RUNNER_CONTAINER_NAME} + image: ${DRONE_RUNNER_IMAGE} + restart: always + depends_on: + - drone-server + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + environment: + DRONE_RPC_PROTO: http + DRONE_RPC_HOST: ${DRONE_SERVER_CONTAINER_NAME} + DRONE_RPC_SECRET: ${DRONE_RPC_SECRET} + DRONE_RUNNER_CAPACITY: ${DRONE_RUNNER_CAPACITY} + DRONE_RUNNER_NAME: ${DRONE_RUNNER_NAME} + DRONE_UI_USERNAME: ${DRONE_RUNNER_UI_USERNAME} + DRONE_UI_PASSWORD: ${DRONE_RUNNER_UI_PASSWORD} + DRONE_DEBUG: 'true'