Tabla de contenido
- 1 Datos del sistema
- 2 Instalar docker
- 3 Instalar docker-compose
- 4 Descargar el fichero de docker-compose
- 5 Configurar RPC secret
- 6 Levantar contenedores
- 7 Configuración de inicio de GITEA
- 8
- 9 Añadir usuario a gitea
- 10 Añadir repositorio de prueba en gitea
- 11 Añadir fichero de drone al repo
- 12 Hacer login en drone
- 13 Activar CI/CD en el repo
- 14 Ejecutar un merge de prueba
- 15 Troubleshotting
Llevo un tiempo haciendo pruebas con Gitea y Drone para montar un Gitea con CI/CD para tener posibilidad de hacer los test como se puede hacer con GitLab.
En nuestro repositorio de GitHub hemos dejado el docker-compose.yml y las instrucciones.
Datos del sistema
Distribución: Ubuntu 20.04
IP del sistema anfitrion: 10.1.6.100/24
Instalar docker
Desde la URL https://docs.docker.com/get-docker/ podemos ver las diferentes instalaciones para cada sistema operativo. Para este caso como tenemos Ubuntu (Linux) seguimos la guia oficial https://docs.docker.com/engine/install/ubuntu/
Instalar docker-compose
Otro requisito para desplegar según esta gui es Docker-compose.
Se puede instalar según la guia de instalación de docker-compose https://docs.docker.com/compose/install/ aunque si tienes python y pip instalado solo debes ejecutar pip install docker-compose
en tu sistema y lo tendrás instalado.
Descargar el fichero de docker-compose
Para descargar el fichero de docker-compose que vamos a ejecutar, podemos ejecutar lo siguiente en el sistema donde hemos instalado docker y docker-compose:
git clone https://github.com/AprendeIT/Gitea_Drone_deploy.git cd Gitea_Drone_deploy
Configurar RPC secret
Para generarlo debes ejecutar:
root@dockertesting:~# openssl rand -hex 16 55f24eb3d61ef6ac5e83d550178638dc
En este caso 55f24eb3d61ef6ac5e83d550178638dc
es el código.
# Configurar
Para configurar correctamente drone debemos modificar el fichero docker-compose.yml
y debemos incluir el *secreto* generado anteriormente en la clave:
- DRONE_RPC_SECRET=55f24eb3d61ef6ac5e83d550178638dc
Por otro lado debemos seleccionar el usuario administrador:
- DRONE_ADMIN=gerardo.garcia - DRONE_USER_CREATE=username:gerardo.garcia,admin:true
Debemos modificar las claves
- DRONE_SERVER_HOST=10.1.6.100 - DRONE_HOST=http://10.1.6.100:8080
Y el usuario admin, que esn mi caso es:
- DRONE_USER_CREATE=username:gerardo.garcia,admin:true
Levantar contenedores
Levantamos los contenedores usando docker-compose up -d como se puede ver a continuación:
root@dockertesting:~/gitea-drone-mysql# docker-compose up -d Creating network "giteanet" with the default driver Creating volume "gitea-drone-mysql_gitea" with default driver Creating volume "gitea-drone-mysql_db" with default driver Creating volume "gitea-drone-mysql_drone" with default driver Creating volume "gitea-drone-mysql_drone-agent" with default driver Pulling db (mysql:5.7)... 5.7: Pulling from library/mysql 6ec7b7d162b2: Pull complete fedd960d3481: Pull complete 7ab947313861: Pull complete 64f92f19e638: Pull complete 3e80b17bff96: Pull complete 014e976799f9: Pull complete 59ae84fee1b3: Pull complete 7d1da2a18e2e: Pull complete 301a28b700b9: Pull complete 979b389fc71f: Pull complete 403f729b1bad: Pull complete Digest: sha256:d4ca82cee68dce98aa72a1c48b5ef5ce9f1538265831132187871b78e768aed1 Status: Downloaded newer image for mysql:5.7 Pulling gitea (gitea/gitea:latest)... latest: Pulling from gitea/gitea 05e7bc50f07f: Pull complete 4d5756e732c2: Pull complete 41d094eec6a2: Pull complete bdba2d120201: Pull complete a563aa38e376: Pull complete b3dc31533e3c: Pull complete Digest: sha256:e2ce238836d32cd5be4586dbcec7541ccbfaf8e4840d8b761518bf8538234af1 Status: Downloaded newer image for gitea/gitea:latest Pulling drone-server (drone/drone:1.2.1)... 1.2.1: Pulling from drone/drone e7c96db7181b: Pull complete de231fbdcaac: Pull complete 343cd29402df: Pull complete Digest: sha256:9073d1aa1ef30e25e048c4b4d309c0abd16d3fed6d2eb258f9eb8e89b4085001 Status: Downloaded newer image for drone/drone:1.2.1 Pulling drone-agent (drone/agent:1.2.1)... 1.2.1: Pulling from drone/agent e7c96db7181b: Already exists 3d5cf113237f: Pull complete 7c2212960ee8: Pull complete Digest: sha256:f1fea9affd6a48626f7eb17b9cdf41f04d71881fd671c372129a488fa0438a96 Status: Downloaded newer image for drone/agent:1.2.1 Creating gitea ... done Creating db ... done Creating drone-server ... done Creating drone-agent ... done root@dockertesting:~/gitea-drone-mysql#
Configuración de inicio de GITEA
Solamente debemos seguir el asistente inicial supervisando que los datos sean correctos:
Parámetro a tener en cuenta en este punto, por un lado, el titulo del sitio. Por otro lado que al ser un contenedor docker, debemos configurar las IPs que tendrán los puertos expuestos, es decir en este caso 10.1.6.100:
Después solo tenemos que fijarnos que tengamos la ruta de logs bien configurada (si no hemos cambiado nada debería estarlo) y pinchamos en Instalar Gitea:
Añadir usuario a gitea
Tras realizar los pasos anteriores nos aparecerá una pantalla de login, en ella debemos dirigirnos a registrar nuevo usuario:
Nos registramos en gitea para poder crear repos y autenticar desde *drone*:
Después hacemos login con el para comprobar que accedemos bien:
Es importante crear el usuario que hemos especificado que será admin en la config de *Drone*, en las siguientes lineas de docker-compose.yml:
- DRONE_ADMIN=gerardo.garcia - DRONE_USER_CREATE=username:gerardo.garcia,admin:true
Añadir repositorio de prueba en gitea
Añadimos un repo de prueba en gitea para verificar que podemos añadir repositorios y sincronizar drone.
Para hacerlo realizamos los siguientes pasos:
- Desde GITEA ya dentro del panel de nuestro usuario, pinchamos en el «+» de arriba a la derecha:
Despues introducimos el nombre, lo inicializamos y pinchamos en crear repositorio:
Una vez hecho eso veremos nuestro repositorio creado:
Añadir fichero de drone al repo
Para que mas adelante podamos probar el funcionamiento de drone debemos definir el fichero de pipeline de drone en el repositorio. Para ellos creamos el fichero de prueba .drone.yml
:
kind: pipeline name: hello-world type: docker steps: - name: say-hello image: busybox commands: - echo hello-world
Podéis ver la sintaxis en https://docs.drone.io/pipeline/environment/syntax/
Para crearlo realizamos los siguientes pasos:
Hacer login en drone
El siguiente paso es hacer login en drone con el usuario que hemos creado en GITEA:
Activar CI/CD en el repo
Al hacer login veremos el listado de repos. Desde drone activamos el CI/CD en el repo
Añadir al Readme.md
el código que te facilita drone durante la activación del repo:
Para ello copiamos el codigo anterior y volvemos a gitea, a nuestro repo para editar el README.md:
Una vez editado el fichero ya veremos el badge en el readme:
Sin Sin darnos cuenta hemos ejecutado un pipeline y lo podemos ver desde las tareas de drone:
Ejecutar un merge de prueba
Aunque ya hemos ejecutado un pipeline, para verificar que los pipelines funcionan bien, puedes ejecutar un merge de una rama a master o crea en master un fichero desde GITEA, si todo está bien se ejecutará el pipeline y se realizará el merge o bien se creará el fichero. Una vez hecho esto se ejecutará en el pipeline lo que tengas definido en el fichero .drone.yml
Troubleshotting
Problemas al hacer login en Drone: Eliminar token desde el usuario que falla en el panel de gitea, para ello:
- Accede a GITEA con el usuario que falla
- Dirígete a configuración de usuario
- Pincha en aplicaciones y borra el token *Drone*