Installation De Drone.io avec docker sur debian

Installation de docker

En root,

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg > docker.key
apt-key add docker.key

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

apt update

apt install docker-ce docker-ce-cli containerd.io

Installation

drone.io

docker pull drone/drone:1

Documentation drone.io

#!/bin/bash

DRONE_GITEA_SERVER=https://nom.de.domaine.de.gitea
DRONE_SERVER_HOST=nom.de.domaine.de.drone
DRONE_SERVER_PROTO=https
DRONE_GIT_ALWAYS_AUTH=false
DRONE_DATA_VOLUME=/var/lib/drone
DRONE_ADMIN_USER=user.gitea.qui.sera.admin.drone
DRONE_GITEA_CLIENT_ID=<id_client>
# lancer la commande : openssl rand -hex 16 et remplacer <RPC-SECRET>
DRONE_RPC_SECRET=<RPC-SECRET>
DRONE_GITEA_CLIENT_SECRET=<secret>

docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_AGENTS_ENABLED=true \
  --env=DRONE_GITEA_SERVER=${DRONE_GITEA_SERVER} \
  --env=DRONE_GITEA_CLIENT_ID=${DRONE_GITEA_CLIENT_ID} \
  --env=DRONE_GITEA_CLIENT_SECRET=${DRONE_GITEA_CLIENT_SECRET} \
  --env=DRONE_RPC_SECRET=${DRONE_RPC_SECRET} \
  --env=DRONE_SERVER_HOST=${DRONE_SERVER_HOST} \
  --env=DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO} \
  --publish=80:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:1

<id_client> et <secret> sont issue de gitea dans la configuration de l’utilisateur, onglet application, partie oauth. On crée une application qui pointe vers https://nom.de.domaine.de.drone/login ce qui donnera les informations nécessaire.

On va se logger sur https://nom.de.domaine.de.drone ce qui nous renvoie sur le gitea qui demande une validation de lapplication.

On retourne sur drone, ce qui va nous donner un affichage avec tout les dépôts du lab…

La base de donnée sera disponible dans /var/lib/drone

drone-agent

drone-agent est un runner pour drone.io. C’est lui qui va executerles action décrite dans le fichier .drone du dépôt.

On télécharge l’agent:

docker pull drone/agent:1

Ensuite on lance le container :

#!/bin/bash

DRONE_RPC_PROTO=<DRONE_SERVER_PROTO>
DRONE_RPC_HOST=<DRONE_SERVER_HOST>
DRONE_RPC_SECRET=<la clef généré pour drone.io>
DRONE_RUNNER_NAME=${HOSTNAME} # ou autre chose =)

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=${DRONE_RPC_PROTO} \
  -e DRONE_RPC_HOST=${DRONE_RPC_HOST} \
  -e DRONE_RPC_SECRET=${DRONE_RPC_SECRET} \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=${DRONE_RUNNER_NAME} \
  -p 3000:3000 \
  --restart always \
  --name runner \
  drone/agent:1

drone-cli

apt install wget
wget https://github.com/drone/drone-cli/releases/download/v1.0.7/drone_linux_amd64.tar.gz
tar -zxvf drone_linux_amd64.tar.gz
sudo install -t /usr/local/bin drone

On insert dans ~/.bashrc les informations issues de la page de paramètre du compte dans drone.

export DRONE_SERVER=https://nom.de.domaine.de.drone
export DRONE_TOKEN=msodihEVsohdFs231fSdfT13s51f03s

et on lance

drone info