Skip to content

Instantly share code, notes, and snippets.

@ncatallo
Created May 19, 2025 08:38
Show Gist options
  • Save ncatallo/db76af302232f6069e64c0eedd99b3b0 to your computer and use it in GitHub Desktop.
Save ncatallo/db76af302232f6069e64c0eedd99b3b0 to your computer and use it in GitHub Desktop.
stages:
- test
- build
- deploy
build:
stage: build
script:
- docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- docker build -t $CI_REGISTRY/mygroup/myapp:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY/mygroup/myapp:$CI_COMMIT_SHA
deploy:
stage: deploy
only:
- main
script:
- echo "$SSH_PRIVATE_KEY" > id_rsa && chmod 600 id_rsa
- ssh -i id_rsa -o StrictHostKeyChecking=no [email protected] "
docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD &&
docker pull $CI_REGISTRY/mygroup/myapp:$CI_COMMIT_SHA &&
docker stack deploy -c docker-compose.yml myapp
"
#!/bin/bash
# Nom de l'utilisateur à créer
USER="deploy"
# Chemin public de ta clé SSH GitLab CI (ou ta clé publique personnelle)
CI_SSH_PUBKEY="ssh-rsa AAAA..."
# Crée l'utilisateur sans mot de passe
sudo adduser --disabled-password --gecos "" $USER
# Crée le dossier .ssh et autorise la clé publique
sudo mkdir -p /home/$USER/.ssh
echo "$CI_SSH_PUBKEY" | sudo tee /home/$USER/.ssh/authorized_keys > /dev/null
sudo chmod 600 /home/$USER/.ssh/authorized_keys
sudo chmod 700 /home/$USER/.ssh
sudo chown -R $USER:$USER /home/$USER/.ssh
# Donne accès au groupe docker (méthode simple)
# sudo usermod -aG docker $USER
# OU : méthode plus sécurisée - via sudoers pour commandes Docker limitées
DOCKER_BIN=$(which docker)
JOURNALCTL_BIN=$(which journalctl)
# Ajout à la fin du fichier sudoers (automatisé en toute sécurité)
SUDOERS_ENTRY="$USER ALL=(ALL) NOPASSWD: $DOCKER_BIN, $JOURNALCTL_BIN, $DOCKER_BIN stack *, $DOCKER_BIN service *"
echo "$SUDOERS_ENTRY" | sudo tee /etc/sudoers.d/90-deploy-user > /dev/null
sudo chmod 440 /etc/sudoers.d/90-deploy-user
echo "✅ Utilisateur '$USER' prêt pour les déploiements CI/CD"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment