firq-dev-website/.gitlab-ci.yml

231 lines
6.7 KiB
YAML
Raw Permalink Normal View History

stages:
2023-03-21 10:39:31 +00:00
- validate
2023-03-17 01:01:20 +00:00
- build
2023-03-11 00:15:01 +00:00
- deploy
2023-07-08 21:07:13 +00:00
- benchmark
- post_deploy
- scripts
.ssh_default: &ssh_default
- 'which rsync || ( apk update && apk add rsync )'
- 'which ssh-agent || ( apk update && apk add openssh-client)'
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' >> ~/.ssh/key_firq
- chmod 600 ~/.ssh/key_firq
- echo "Host $DEPLOY_HOST" >> ~/.ssh/config
- echo $'\n\tIdentityFile ~/.ssh/key_firq' >> ~/.ssh/config
- echo $'\n\tStrictHostKeyChecking no\n\tIdentitiesOnly yes\n' >> ~/.ssh/config
- chmod 644 ~/.ssh/config
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- echo "SSH setup completed"
2023-03-21 10:39:31 +00:00
checking:
image: node:lts
stage: validate
before_script:
- npm install
script:
- echo "Running Astro checks"
- npm run astro check
2023-03-17 01:01:20 +00:00
build-site:
image: node:lts
stage: build
2023-03-21 10:39:31 +00:00
when: on_success
2023-03-17 01:01:20 +00:00
cache:
paths:
- node_modules/
script:
- npm install
- npm run build
- rm -r public/assets/data/
- cp serve.json public
artifacts:
paths:
- public
expire_in: 1 day
deploy-site:
stage: deploy
2023-03-21 10:39:31 +00:00
when: on_success
2023-03-17 01:01:20 +00:00
only:
2023-07-06 17:45:00 +00:00
- tags
except:
- branches
before_script:
- *ssh_default
script:
2023-03-17 01:01:20 +00:00
- echo "Getting artifacts"
- ls public
- echo "Stopping screen session, cleaning"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-public kill; rm -r -f firq_dev/public/*;"
2023-03-17 01:01:20 +00:00
- echo "Copying to proxmox machine"
2023-07-27 20:52:35 +00:00
- rsync -az --stats public/* $DEPLOY_USER@$DEPLOY_HOST:~/firq_dev/public
2023-03-17 01:01:20 +00:00
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; cd firq_dev; find maintenance public -maxdepth 1 -printf "%p\n"; screen -S firq_dev-public -dm serve public/ -p 9000'
2023-03-17 01:01:20 +00:00
- echo "Website is up on https://firq.dev/"
2023-07-07 12:17:25 +00:00
deploy-testing:
stage: deploy
when: on_success
except:
- tags
- main
before_script:
- *ssh_default
script:
- echo "Getting artifacts"
- ls public
- echo "Stopping screen session, cleaning"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-staging kill; rm -r -f firq_dev/staging/*;"
2023-07-07 12:17:25 +00:00
- echo "Copying to proxmox machine"
2023-07-27 20:52:35 +00:00
- rsync -az --stats public/* $DEPLOY_USER@$DEPLOY_HOST:~/firq_dev/staging
2023-07-07 12:17:25 +00:00
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; cd firq_dev; find staging -maxdepth 1 -printf "%p\n"; screen -S firq_dev-staging -dm serve staging/ -p 9100'
2023-07-07 12:17:25 +00:00
- echo "Staging environment is up!"
2023-07-08 21:07:13 +00:00
unlighthouse:
image: registry.gitlab.com/gitlab-ci-utils/lighthouse:latest
stage: benchmark
2023-07-08 22:06:17 +00:00
when: manual
2023-07-08 21:07:13 +00:00
except:
- main
- tags
before_script:
2023-07-08 21:30:15 +00:00
- npm install @unlighthouse/cli puppeteer
2023-07-08 21:07:13 +00:00
- mkdir unlighthouse-reports
script:
2023-07-08 21:52:47 +00:00
- node_modules/.bin/unlighthouse-ci
2023-07-08 21:07:13 +00:00
- cp public/serve.json unlighthouse-reports
artifacts:
paths:
- unlighthouse-reports
expire_in: 1 day
2023-07-08 22:06:17 +00:00
unlighthouse-publish:
stage: benchmark
2023-07-08 21:07:13 +00:00
when: on_success
2023-07-08 22:06:17 +00:00
needs:
- unlighthouse
2023-07-08 21:07:13 +00:00
except:
- tags
- main
before_script:
- *ssh_default
script:
- echo "Getting artifacts"
- ls unlighthouse-reports
- echo "Stopping screen session, cleaning"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-unlighthouse kill; rm -r -f firq_dev/unlighthouse/*;"
2023-07-08 21:07:13 +00:00
- echo "Copying to proxmox machine"
2023-07-27 20:52:35 +00:00
- rsync -az --stats unlighthouse-reports/* $DEPLOY_USER@$DEPLOY_HOST:~/firq_dev/unlighthouse
2023-07-08 21:07:13 +00:00
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; cd firq_dev; find unlighthouse -maxdepth 1 -printf "%p\n"; screen -S firq_dev-unlighthouse -dm serve unlighthouse/ -p 9101'
2023-07-08 22:11:15 +00:00
- echo "Unlighthouse results are up!"
2023-07-08 21:07:13 +00:00
success_notification:
stage: post_deploy
2023-03-11 00:04:56 +00:00
before_script:
2023-03-11 00:10:19 +00:00
- apk update
2023-03-17 01:01:20 +00:00
- apk add rsync
2023-03-11 00:10:19 +00:00
- apk add curl
- apk add git
2023-03-11 00:31:48 +00:00
- apk add bash
script:
2023-03-11 00:31:48 +00:00
- 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
2023-03-17 17:56:34 +00:00
failure_notification:
stage: post_deploy
2023-03-11 00:04:56 +00:00
before_script:
2023-03-11 00:10:19 +00:00
- apk update
- apk add curl
- apk add git
2023-03-11 00:31:48 +00:00
- apk add bash
script:
2023-03-11 00:31:48 +00:00
- 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
maintenance-mode:
stage: post_deploy
when: on_failure
before_script:
- *ssh_default
2023-07-07 12:30:38 +00:00
only:
- tags
2023-07-07 12:30:38 +00:00
- main
script:
- echo "Stopping screen session"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-public kill;" || true
- echo "Enabeling maintenance mode"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; screen -S firq_dev-maintenance -dm serve firq_dev/maintenance/ -p 9000'
- echo "Maintenance Website is up on https://firq.dev/"
redeploy-site:
stage: scripts
when: manual
2023-07-06 17:45:00 +00:00
only:
- tags
except:
- branches
2023-04-22 16:51:13 +00:00
before_script:
- *ssh_default
script:
- echo "Stopping screen session"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-public kill" || true
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; screen -S firq_dev-public -dm serve firq_dev/public/ -p 9000'
- echo "Website is up on https://firq.dev/"
2023-07-08 13:44:10 +00:00
redeploy-staging:
stage: scripts
when: manual
except:
- main
- tags
before_script:
- *ssh_default
script:
- echo "Stopping screen session"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-staging kill" || true
2023-07-08 13:44:10 +00:00
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; screen -S firq_dev-staging -dm serve firq_dev/staging/ -p 9100'
2023-07-08 13:44:10 +00:00
- echo "Staging environment is up!"
2023-07-08 21:07:13 +00:00
redeploy-unlighthouse:
stage: scripts
when: manual
except:
- main
- tags
before_script:
- *ssh_default
script:
- echo "Stopping screen session"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-unlighthouse kill" || true
2023-07-08 21:07:13 +00:00
- echo "Restarting screen session"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; screen -S firq_dev-unlighthouse -dm serve firq_dev/unlighthouse/ -p 9101'
2023-07-08 21:07:13 +00:00
- echo "Staging environment is up!"
maintenance-deploy:
stage: scripts
when: manual
only:
- main
- tags
before_script:
- *ssh_default
script:
- echo "Stopping screen session"
- ssh $DEPLOY_USER@$DEPLOY_HOST "screen -X -S firq_dev-public kill;" || true
- echo "Enabeling maintenance mode"
2023-08-04 20:14:50 +00:00
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; screen -S firq_dev-maintenance -dm serve firq_dev/maintenance/ -p 9000'
- echo "Maintenance Website is up on https://firq.dev/"