Configurer Drone pour Gitea

Gitea est un clone léger de GitHub et GitLab. Gitea n'intégre pas de système de CI mais heureusement Drone.io comble ce besoin.

Voici comment je l'ai configuré.

J'avais déjà installé Gitea sur le port 3000 de mon serveur appelé nas, cette URL sert à configurer le paramètre DRONE_GITEA_URL ci-dessous.

Sur le serveur

J'ai installé Drone via Docker sur le port 3001, c'est pourquoi la partie ports contient 3001:8000 et est différente de la configuration officielle.

Fichier docker-compose.yml :

version: '2'

services:
  drone-server:
    image: drone/drone:0.8

    ports:
      - 3001:8000
      - 9000
    volumes:
      - drone-server-data:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=${DRONE_HOST}
      - DRONE_GITEA=true
      - DRONE_GITEA_URL=http://nas:3000/
      - DRONE_GITEA_SKIP_VERIFY=true
      - DRONE_GITEA_GIT_USERNAME=${DRONE_GITEA_GIT_USERNAME}
      - DRONE_GITEA_GIT_PASSWORD=${DRONE_GITEA_GIT_PASSWORD}
      - DRONE_GITEA_PRIVATE_MODE=true
      - DRONE_SECRET=${DRONE_SECRET}
      - DRONE_ADMIN=alexis

  drone-agent:
    image: drone/agent:0.8

    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=${DRONE_SECRET}

volumes:
  drone-server-data:

Fichier .env :

DRONE_SECRET=toto
DRONE_HOST=http://nas:3001

DRONE_GITEA_GIT_USERNAME=alexis
DRONE_GITEA_GIT_PASSWORD=plop

Puis lancer Drone :

docker-compose up -d

Configuration

Il faut ensuite se rendre sur l'URL de Drone, pour moi http://nas:3001/ puis entrer son identifiant et mot de passe afin que Drone accède à Gitea. Enfin il faut importer les projets et activer le CI sur chaque projet.

Dans le projet

Fichier .drone.yml à placer dans le projet et à commiter :

pipeline:
  install:
    image: alexislefebvre/docker-images:7.2-alpine-composer
    volumes:
      - composer-cache:/root/.composer
    commands:
      - composer install --no-progress
    environment:
      - SYMFONY_ENV=test
  phpunit:
    image: alexislefebvre/docker-images:7.2-alpine-composer
    commands:
      - php vendor/bin/phpunit
    environment:
      - SYMFONY_ENV=test

J'utilise une image Docker alexislefebvre/docker-images:7.2-alpine-composer avec PHP 7.2 et Composer créée pour l'occasion.

Le volume composer-cache est partagé entre les builds ce qui permet à Composer de télécharger les fichiers une fois puis de les placer dans le cache pour ne plus avoir à les télécharger ensuite.

Pour que Drone puisse monter un volume, il faut s'ajouter à la liste des administrateurs puis marquer le dépôt comme trusted dans Drone.

Résultat

Quand tout fonctionne, on voit le résultat des tests à côté de chaque commit dans Gitea.

Et Drone montre les résultats des tests :

drone.png