variables: MIRROR_REPO: git@github.com:thm-projects/arsnova-backend.git WAR_FILE: target/arsnova-backend-*.war stages: - analysis - test - build - deploy - synchronization cache: paths: - .m2/ sync_mirror: stage: synchronization when: always except: - production - staging tags: - git allow_failure: true script: - mkdir ~/.ssh && echo "$GITHUB_HOST_KEY" > ~/.ssh/known_hosts - eval $(ssh-agent -s) && ssh-add <(echo "$GITHUB_DEPLOY_KEY") - git clone --bare "$CI_BUILD_REPO" mirror.git - cd mirror.git - git update-ref -d refs/tags/production - git update-ref -d refs/tags/staging - git push --mirror "$MIRROR_REPO" sonar: stage: analysis only: - master tags: - maven allow_failure: true script: - mvn sonar:sonar checkstyle: stage: analysis tags: - maven script: - mvn checkstyle:checkstyle test: stage: test tags: - maven script: - mvn test package: stage: build tags: - maven artifacts: paths: - $WAR_FILE script: - mvn package -DskipTests tomcat_production: stage: deploy only: - production script: - curl --fail --upload-file $WAR_FILE "https://$PROD_TOMCAT_USER:$PROD_TOMCAT_PASSWORD@$PROD_TOMCAT_HOST/manager/text/deploy?path=%2Fapi&update=true" tomcat_development: stage: deploy only: - staging script: - curl --fail --upload-file $WAR_FILE "https://$DEV_TOMCAT_USER:$DEV_TOMCAT_PASSWORD@$DEV_TOMCAT_HOST/manager/text/deploy?path=%2Fapi&update=true"