variables: DOCKER_HOST: $DOCKER_HOST_BIO PROJECT_NAME: "gateway" cache: key: $CI_COMMIT_REF_NAME paths: - build/ stages: - analyse - build - verification - publish - deploy # =========================================================================== # Stage: analyse # =========================================================================== include: - template: Code-Quality.gitlab-ci.yml code_quality: stage: analyse services: [] # Shut off Docker-in-Docker variables: REPORT_FORMAT: html artifacts: paths: [gl-code-quality-report.html] # second job has to be run to create both artefacts code_quality_json: extends: code_quality variables: REPORT_FORMAT: json artifacts: paths: [gl-code-quality-report.json] # =========================================================================== # Stage: build # =========================================================================== gradlew-bootJar: stage: build image: eclipse-temurin:17-jdk-alpine script: - ./gradlew bootJar docker-build-latest: stage: build image: docker:git only: refs: - main - 1-extrahovat-gateway-z-projketu-dna-analyser except: variables: - $CI_COMMIT_TAG before_script: - mkdir -p build script: - docker build -t $DOCKER_NAMESPACE/$PROJECT_NAME:latest . - docker save -o build/image.tar $DOCKER_NAMESPACE/$PROJECT_NAME:latest docker-build-tag: stage: build image: docker:git only: variables: - $CI_COMMIT_TAG before_script: - mkdir -p build script: - docker build -t $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG . - docker save -o build/image.tar $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG # =========================================================================== # Stage: test # =========================================================================== verification-unit: stage: verification image: eclipse-temurin:17-jdk-alpine allow_failure: true script: - ./gradlew test artifacts: when: always reports: junit: build/test-results/test/**/TEST-*.xml # =========================================================================== # Stage: publish # =========================================================================== docker-push-latest: stage: publish image: docker only: - main - 1-extrahovat-gateway-z-projketu-dna-analyser before_script: - docker login -u $DOCKER_USERNAME -p $DOCKER_TOKEN $DOCKER_REGISTRY script: - docker load -i build/image.tar - docker push $DOCKER_NAMESPACE/$PROJECT_NAME:latest docker-push-tag: stage: publish image: docker only: variables: - $CI_COMMIT_TAG before_script: - docker login -u $DOCKER_USERNAME -p $DOCKER_TOKEN $DOCKER_REGISTRY script: - docker load -i build/image.tar - docker push $DOCKER_NAMESPACE/$PROJECT_NAME:$CI_COMMIT_TAG # =========================================================================== # Stage: deploy # =========================================================================== deploy-bioinformatika.pef.mendelu.cz: stage: deploy only: - main - 1-extrahovat-gateway-z-projketu-dna-analyser script: - cp .env /home/bioinformatics/ - cd /home/bioinformatics/ - docker-compose config > docker-swarm.yml # - docker stack deploy -c docker-compose.yml test_stack # after_script: # - docker system prune -f deploy-bioinformatics.ibp.cz: stage: deploy only: variables: - $CI_COMMIT_TAG script: - scp .env root@bioinformatics.ibp.cz:/opt/ - scp docker-compose.yml root@bioinformatics.ibp.cz:/opt/ - ssh root@bioinformatics.ibp.cz "cd /opt && export $(xargs < .env) && docker stack deploy dna-analyser -c docker-compose.yml"