Created
May 19, 2025 08:38
-
-
Save ncatallo/db76af302232f6069e64c0eedd99b3b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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