Skip to content
Extraits de code Groupes Projets
Cette configuration de GitLab CI est valide. En savoir plus
.gitlab-ci.yml 2.81 Kio
stages:
  - build
  - deploy
  - notify_discord


build_test:
  stage: build
  image: node:18
  before_script:
    - apt-get update -y && apt-get install -y libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
  script:
    - npm install
    - npm run build
  only:
    - merge_requests

deploy:
  stage: deploy
  image: docker:20.10.16
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: overlay2
  before_script:
    - mkdir -p ~/.ssh
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa_gitlab_nopass_mc_vps
    - chmod 600 ~/.ssh/id_rsa_gitlab_nopass_mc_vps
    - eval $(ssh-agent -s)
    - ssh-add ~/.ssh/id_rsa_gitlab_nopass_mc_vps
    - ssh-keyscan ${PLESK_HOST_REC} >> ~/.ssh/known_hosts
    - docker info
    - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
  script:
    - echo "Building Docker image..."
    - docker build -t ${DOCKER_IMAGE_PATH}:rec .
    - docker push ${DOCKER_IMAGE_PATH}:rec
    - echo "Creating directory on VPS if it doesn't exist..."
    - ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_gitlab_nopass_mc_vps ${PLESK_USER}@${PLESK_HOST_REC} "mkdir -p /projects/${CONTAINER_NAME}/"
    - echo "Transferring docker-compose.yml and .env files to VPS..."
    - scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_gitlab_nopass_mc_vps docker-compose.yml ${PLESK_USER}@${PLESK_HOST_REC}:/projects/${CONTAINER_NAME}/docker-compose.yml
    - scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_gitlab_nopass_mc_vps .env ${PLESK_USER}@${PLESK_HOST_REC}:/projects/${CONTAINER_NAME}/.env
    - echo -e "DOCKER_IMAGE_PATH=${DOCKER_IMAGE_PATH}\nCONTAINER_NAME=${CONTAINER_NAME}\nHOST_PORT=${HOST_PORT}\nCONTAINER_PORT=${CONTAINER_PORT}" > .env.rec
    - scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_gitlab_nopass_mc_vps .env.rec ${PLESK_USER}@${PLESK_HOST_REC}:/projects/${CONTAINER_NAME}/.env.rec
    - echo "Deploying Docker image to VPS..."
    - |
      ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa_gitlab_nopass_mc_vps ${PLESK_USER}@${PLESK_HOST_REC} "
        cd /projects/${CONTAINER_NAME}/
        echo '$DOCKER_PASSWORD' | docker login -u '$DOCKER_USERNAME' --password-stdin
        docker-compose down
        docker rm -f ${CONTAINER_NAME} || true
        cat .env.rec >> .env 
        docker-compose pull
        docker-compose up -d
      "
  only:
    - develop


notify_discord:
  stage: notify_discord
  script:
    - |
      curl -H "Content-Type: application/json" \
      -X POST \
      -d '{
            "content": ":rocket: **New Release Deployed to Sandbox!** :rocket:\n\n**Project:** `'${CONTAINER_NAME}'`\n**URL:** '${RECIPE_URL}'\n\nThe new version has been successfully deployed to the sandbox environment. Click [here]('${RECIPE_URL}') to access it! :sparkles:"
          }' \
      "${DISCORD_SANDBOX_WEBHOOK_URL}"
  only: