image: docker:24.0.5

services:
  - name: docker:24.0.5-dind
    command: ["--insecure-registry=registry.leclercqvincent.com"]

stages:
  - build
  - deploy

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  IMAGE_TAG: $CI_REGISTRY_IMAGE:latest

before_script:
  - docker info
  - echo $CI_REGISTRY
  - echo $IMAGE_TAG
  - echo $CI_REGISTRY_USER

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

deploy:
  stage: deploy
  script:
    - echo "Déploiement de l'image pour $CI_PROJECT_NAME..."

    # É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

    # 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
  only:
    - main