stages: - build - deploy - notification build-site: image: node:lts stage: build cache: paths: - node_modules/ only: - main script: - npm install - npm run build - rm -r public/assets/data/ - cp serve.json public artifacts: paths: - public expire_in: 1 day deploy-site: image: node:lts stage: deploy only: - main before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts script: - echo "Getting artifacts" - ls public - echo "Stopping screen session and cleaning" - ssh $DEPLOY_USER@$DEPLOY_HOST -o StrictHostKeyChecking=no IdentitiesOnly=yes "screen -X -S website-firq-npx kill; rm -r -f public/*;" - echo "Copying to proxmox machine" - rsync -e "ssh -o StrictHostKeyChecking=no IdentitiesOnly=yes" -a --progress public/ $DEPLOY_USER@$DEPLOY_HOST:~/public - echo "Restarting screen session" - ssh $DEPLOY_USER@$DEPLOY_HOST -o StrictHostKeyChecking=no IdentitiesOnly=yes "screen -S website-firq-npx -dm npx serve public/ -p 9000 -c serve.json" - echo "Website is up on https://firq.dev/" success_notification: stage: notification before_script: - apk update - apk add rsync - apk add curl - apk add git - apk add bash script: - wget https://raw.githubusercontent.com/DiscordHooks/gitlab-ci-discord-webhook/master/send.sh - chmod +x send.sh - ./send.sh success $WEBHOOK_URL when: on_success failure_notification: stage: notification before_script: - apk update - apk add curl - apk add git - apk add bash script: - wget https://raw.githubusercontent.com/DiscordHooks/gitlab-ci-discord-webhook/master/send.sh - chmod +x send.sh - ./send.sh failure $WEBHOOK_URL when: on_failure