-
Duijn,S.H.J. (Sivan) authoredDuijn,S.H.J. (Sivan) authored
.gitlab-ci.yml 2.89 KiB
image: golang:1.16
stages:
- test
- build
- docker
- deploy
lint:
stage: test
script:
- make lint
unit_tests:
stage: test
script:
- make dep
- make test
- gocover-cobertura < coverage.txt > coverage.xml
artifacts:
reports:
cobertura: coverage.xml
race:
stage: test
script:
- make race
coverage:
stage: test
script:
- make coverage
after_script:
- mkdir $CI_COMMIT_BRANCH
- cp cover.html $CI_COMMIT_BRANCH
- mv $CI_COMMIT_BRANCH/cover.html $CI_COMMIT_BRANCH/index.html
- if [[ $CI_COMMIT_BRANCH = "develop" || $CI_COMMIT_BRANCH = "main" ]]; then COVERAGE_PATH=""; else COVERAGE_PATH="features"; fi
# install openssh client and add ssh keys
- apt-get install openssh-client curl -y >/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
- scp -r -o StrictHostKeyChecking=no -P 1234 -i ~/.ssh/id_rsa $CI_COMMIT_BRANCH root@localhost:/datadisk/documentation-coverage/home/backend/$CI_PROJECT_NAME/$COVERAGE_PATH
artifacts:
untracked: false
expire_in: 30 days
paths:
- cover.html
build:
stage: build
script:
- make linux
only:
- develop
artifacts:
paths:
- builds/
dependencies: []
docker:
image: docker:stable
tags:
- docker
stage: docker
only:
- develop
before_script:
- docker login datastropheregistry.azurecr.io -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD
script:
- ls
- cd builds
- ls
- cd ..
- docker build --progress plain -t $CI_PROJECT_NAME:latest .
- docker tag $CI_PROJECT_NAME datastropheregistry.azurecr.io/$CI_PROJECT_NAME:latest
- docker push datastropheregistry.azurecr.io/$CI_PROJECT_NAME:latest
dependencies:
- build
deploy:
stage: deploy
only:
- develop
script:
- apt-get install openssh-client curl -y >/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: []