Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.75 KiB
Newer Older
image: docker:24.0.5
Leclercq Vincent's avatar
Leclercq Vincent committed

services:
Leclercq Vincent's avatar
Leclercq Vincent committed
  - name: docker:24.0.5-dind
    command: ["--insecure-registry=registry.leclercqvincent.com"]
Leclercq Vincent's avatar
Leclercq Vincent committed

stages:
Leclercq Vincent's avatar
Leclercq Vincent committed
  - build
Leclercq Vincent's avatar
Leclercq Vincent committed
  - deploy
Leclercq Vincent's avatar
Leclercq Vincent committed

Leclercq Vincent's avatar
Leclercq Vincent committed
variables:
Leclercq Vincent's avatar
Leclercq Vincent committed
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
Leclercq Vincent's avatar
Leclercq Vincent committed
  IMAGE_TAG: $CI_REGISTRY_IMAGE:latest
Leclercq Vincent's avatar
Leclercq Vincent committed

before_script:
  - docker info
Leclercq Vincent's avatar
Leclercq Vincent committed
  - echo $CI_REGISTRY
  - echo $IMAGE_TAG
Leclercq Vincent's avatar
Leclercq Vincent committed
  - echo $CI_REGISTRY_USER
Leclercq Vincent's avatar
Leclercq Vincent committed

Leclercq Vincent's avatar
Leclercq Vincent committed
build-image:
Leclercq Vincent's avatar
Leclercq Vincent committed
  stage: build
  script:
Leclercq Vincent's avatar
Leclercq Vincent committed
    - echo "Connexion au registre GitLab"
    - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
Leclercq Vincent's avatar
Leclercq Vincent committed
    - echo "Build de l'image"
Leclercq Vincent's avatar
Leclercq Vincent committed
    - docker build -t $IMAGE_TAG .
Leclercq Vincent's avatar
Leclercq Vincent committed
    - echo "Pousser l'image vers le registre GitLab"
Leclercq Vincent's avatar
Leclercq Vincent committed
    - docker push $IMAGE_TAG
Leclercq Vincent's avatar
Leclercq Vincent committed
  only:
Leclercq Vincent's avatar
Leclercq Vincent committed
    - main
Leclercq Vincent's avatar
Leclercq Vincent committed

deploy:
  stage: deploy
  script:
    - echo "Déploiement de l'image pour $CI_PROJECT_NAME..."
Leclercq Vincent's avatar
Leclercq Vincent committed

    # Écrire manuellement le contenu de la variable dans un fichier temporaire
    - echo "$SSH_PRIVATE_KEY" > private_key.pem
    - chmod 600 private_key.pem

    # Vérification du fichier créé
    - ls -l private_key.pem
    - cat private_key.pem
Leclercq Vincent's avatar
Leclercq Vincent committed

    # Connexion SSH en utilisant le fichier temporaire
    - ssh -i private_key.pem -o StrictHostKeyChecking=no $DEVOPS_USER@$DEV_SERVER_IP "sudo docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY"
    - ssh -i private_key.pem -o StrictHostKeyChecking=no $DEVOPS_USER@$DEV_SERVER_IP "sudo docker pull $IMAGE_TAG"
    - ssh -i private_key.pem -o StrictHostKeyChecking=no $DEVOPS_USER@$DEV_SERVER_IP "sudo docker container rm -f $CI_PROJECT_NAME || true"
    - ssh -i private_key.pem -o StrictHostKeyChecking=no $DEVOPS_USER@$DEV_SERVER_IP "sudo docker run -d -p $HOST_PORT:$CONTAINER_PORT --name $CI_PROJECT_NAME $IMAGE_TAG"

    # Nettoyage du fichier temporaire
    - rm -f private_key.pem
Leclercq Vincent's avatar
Leclercq Vincent committed
  only:
Leclercq Vincent's avatar
Leclercq Vincent committed
    - main
Leclercq Vincent's avatar
Leclercq Vincent committed