-
Mohsine a rédigé75efbb59
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: