image: node:16-alpine stages: - setup - test - docker - deploy install-dependencies: stage: setup interruptible: true only: - main - merge_requests cache: key: files: - yarn.lock paths: - node_modules - .yarn script: - yarn install --pure-lockfile --cache-folder .yarn artifacts: paths: - node_modules .distributed: interruptible: true only: - main - merge_requests needs: - install-dependencies artifacts: paths: - node_modules/.cache/nx build: stage: test extends: .distributed script: - yarn nx affected --base=HEAD~1 --target=build --parallel --max-parallel=3 test: stage: test extends: .distributed script: - yarn nx affected --base=HEAD~1 --target=test --parallel --max-parallel=2 docker: image: docker:stable stage: docker tags: - docker only: - main - develop script: - docker build --progress plain -f ./apps/frontend/Dockerfile . -t $CI_PROJECT_NAME:latest after_script: - docker login datastropheregistry.azurecr.io -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD - if [[ ! -z $CI_COMMIT_BRANCH+x ]]; then DOCKER_TAG=$CI_COMMIT_BRANCH; else DOCKER_TAG=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME; fi - docker tag $CI_PROJECT_NAME datastropheregistry.azurecr.io/$CI_PROJECT_NAME:$DOCKER_TAG - docker push datastropheregistry.azurecr.io/$CI_PROJECT_NAME:$DOCKER_TAG dependencies: - build deploy: stage: deploy only: - main - develop script: - apk add --update --no-cache openssh-client >/dev/null - mkdir ~/.ssh/ - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-add ~/.ssh/id_rsa - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - ssh -fN -L 1234:science-vs260.science.uu.nl:22 sivan@up.science.uu.nl # Copy kubernetes files over - scp -r -o StrictHostKeyChecking=no -P 1234 -i ~/.ssh/id_rsa deployments/* root@localhost:/root/kubernetes/$CI_PROJECT_NAME # Deploy all yml files - ssh -p 1234 -i ~/.ssh/id_rsa root@localhost "for i in kubernetes/$CI_PROJECT_NAME/*.yml; do kubectl apply -f \$i; done" # Perform rolling update for deployment - ssh -p 1234 -i ~/.ssh/id_rsa root@localhost "kubectl rollout restart -f kubernetes/$CI_PROJECT_NAME/deployment.yml" dependencies: []