Présentation
gitlab-ci-local est un outil permettant de lancer le fichier .gitlab-ci.yml d’un projet sans dépendre ni d’un gitlab-runner ni de Gitlab lui-même.
En somme : on développe sur notre machine et on teste sur notre machine !
Pré-requis
- docker lancé avec une interface sur
tcp://0.0.0.0:2376
Configurer Docker sous ArchLinux
sudo systemctl edit docker.service
On remplit avec :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376
Cela permet à la fois d’utiliser le socket sur notre machine et donner accès via TCP.
Installation
Sous ArchLinux
Disponible dans les dépôts AUR :
yay -S gitlab-ci-local
Configuration
Globale
Il s’agit de créer et remplir le fichier $HOME/.gitlab-ci-local/.env avec les options que vous souhaitez avoir continuellement :
# Overrides .gitlab-ci.yml as the default git ci/cd file
FILE=.gitlab-ci.yml # --file
# Always runs needed jobs, when gitlab-ci-local <job-name> is called
NEEDS=true # --needs
Ceci évite de chaque fois devoir entre les options --file et --needs.
Modifiez avec vos préférences.
Pour chaque dépôt
De temps en temps, dans un dépôt, vous aurez besoin de personnaliser certains éléments. Notamment certaines variables d’environnement nécessaires pour le bon déroulement de votre pipeline. Par exemple CI_REGISTRY_USER, CI_REGISTRY_PASSWORD ou encore CI_REGISTRY.
Pour cela, c’est le fichier .gitlab-ci-local-variables.yml dont vous aurez besoin. Au sein même de votre projet.
Voici un exemple de contenu :
---
# Will be type File, because value is a file path
KNOWN_HOSTS: '~/.ssh/known_hosts'
CI_REGISTRY_USER: your_pseudo
CI_REGISTRY_PASSWORD: glpat-your_personnal_access_token
CI_REGISTRY: registry.gitlab.com
DOCKER_HOST: tcp://my_machine:2376 # complete with YOUR machine and your docker PORT
Utilisation
On liste les jobs disponibles :
gitlab-ci-local --list
Puis on en lance un au choix :
gitlab-ci-local my-job
Autocompletion
L’outil a prévu ce que de droit avec la commande gitlab-ci-local completion.
Pour Bash
gitlab-ci-local completion >> ~/.bashrc
source ~/.bashrc
Pour ZSH
gitlab-ci-local completion >> ~/.zshrc
source ~/.zshrc