diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..d362592b38f98a34671b8c6603561b5430b380f4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,119 @@ +image: node:15 + +stages: + - build + - deploy + +################################################################################ +##### BUILD STAGE ##### +################################################################################ + +build-front: + stage: build + only: + - master + - staging + script: + - cd ./front + - npm install --only=prod + - CI=false npm run build + artifacts: + paths: + - front/node_modules/ + - front/build/ + +################################################################################ +##### PREPROD-DEPLOY STAGE ##### +################################################################################ + +back-preprod-deploy: + stage: deploy + only: + - staging + script: + - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" + - eval $(ssh-agent -s) + - ssh-add <(echo "$SSH_PRIVATE_KEY") + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - echo ${PREPROD_SECRETS} > secrets.js + - scp secrets.js root@humaviron.cs-campus.fr:~/leaderboard/back/src/secrets.js + - > + ssh root@humaviron.cs-campus.fr + "cd leaderboard/back && + git stash && + git checkout staging && + git stash && + git pull && + npm install --only=prod && + pm2 delete back-preprod && + pm2 start src/index.js --name back-preprod && + exit" + +front-preprod-deploy: + stage: deploy + only: + - staging + dependencies: + - build-front + script: + - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" + - eval $(ssh-agent -s) + - ssh-add <(echo "$SSH_PRIVATE_KEY") + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - > + ssh root@humaviron.cs-campus.fr + "sudo rm -rf /var/www/preprod/* && + exit" + - "scp -r ./front/build/* root@humaviron.cs-campus.fr:/var/www/preprod" + +################################################################################ +##### PROD-DEPLOY STAGE ##### +################################################################################ + +back-prod-deploy: + stage: deploy + only: + - master + script: + - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" + - eval $(ssh-agent -s) + - ssh-add <(echo "$SSH_PRIVATE_KEY") + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - echo ${PROD_SECRETS} > secrets.js + - scp secrets.js root@humaviron.cs-campus.fr:~/leaderboard/back/src/secrets.js + - > + ssh root@humaviron.cs-campus.fr + "cd leaderboard/back && + git stash && + git checkout master && + git stash && + git pull && + npm install --only=prod && + pm2 delete back-prod && + PROD=true pm2 start src/index.js --name back-prod && + exit" + +front-prod-deploy: + stage: deploy + only: + - master + dependencies: + - build-front + script: + - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" + - eval $(ssh-agent -s) + - ssh-add <(echo "$SSH_PRIVATE_KEY") + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' + - > + ssh root@humaviron.cs-campus.fr + "sudo rm -rf /var/www/prod/* && + exit" + - "scp -r ./front/build/* root@humaviron.cs-campus.fr:/var/www/prod"