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

Configurer Docker sous ArchLinux

Cette procédure met à disposition du reste du monde votre Docker. À utiliser avec précaution donc ! Cf. https://wiki.archlinux.org/title/Docker#Daemon_socket
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

Liens utiles