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