image: sharing-codeability.uibk.ac.at:5051/sharing/codeability-sharing-platform/root-jhipster cache: &global_cache key: '$CI_COMMIT_REF_SLUG' paths: - .maven/ - .npm/ policy: pull-push stages: - lint - build - test - analyze - release - deploy - e2e before_script: - export NG_CLI_ANALYTICS="false" - export MAVEN_USER_HOME=`pwd`/.maven pmdCheckstylePrettierLint: stage: lint cache: [] when: always script: - 'export VERSION="6.40.0"' - 'wget "https://github.com/pmd/pmd/releases/download/pmd_releases%2F$VERSION/pmd-bin-$VERSION.zip"' - 'jar -xf "pmd-bin-$VERSION.zip"' - 'chmod u+x "pmd-bin-$VERSION/bin/run.sh"' - SUCCESS=true - echo "Running PMD" - '"pmd-bin-$VERSION/bin/run.sh" pmd -d src/main/java -f textcolor -R pmd_rules.xml 2>&1 | tee pmd.log || SUCCESS=false' - echo "Running checkstyle" - ./mvnw -ntp checkstyle:check -Dmaven.repo.local=$MAVEN_USER_HOME || SUCCESS=false - echo "Running prettier" - npm install - npm run prettier:check - echo "Running eslint" - 'npm run lint | tee lint.log' - "! grep -qE '✖ [0-9]+ problem' lint.log || SUCCESS=false" - $SUCCESS needs: [] artifacts: when: on_failure expire_in: 30 days paths: - pmd.log maven-compile: stage: build script: - ./mvnw -ntp compile -P-webapp -Dmaven.repo.local=$MAVEN_USER_HOME artifacts: paths: - target/classes/ - target/generated-sources/ expire_in: 15 days needs: [] cache: [] maven-test: # DinD service is required for Testcontainers services: - docker:20-dind variables: # Instruct Testcontainers to use the daemon of DinD. DOCKER_HOST: 'tcp://docker:2375' DOCKER_TLS_CERTDIR: '' stage: test cache: # inherit all global cache settings <<: *global_cache # override the policy policy: pull script: - ./mvnw -ntp verify -P-webapp -Dmaven.repo.local=$MAVEN_USER_HOME -Dspring.profiles.active=testcontainers allow_failure: true artifacts: reports: junit: - target/surefire-reports/TEST-*.xml - target/failsafe-reports/TEST-*.xml paths: - target/surefire-reports - target/failsafe-reports - target/site when: always expire_in: 15 days needs: [] frontend-test: stage: test cache: # inherit all global cache settings <<: *global_cache # override the policy policy: pull script: - npm test artifacts: reports: junit: target/test-results/TESTS-results-jest.xml paths: - target/test-results - target/jacoco when: always expire_in: 15 days needs: [] before_script: - export NG_CLI_ANALYTICS="false" - export MAVEN_USER_HOME=`pwd`/.maven - npm ci --cache .npm --prefer-offline sonar-analyze: stage: analyze cache: # inherit all global cache settings <<: *global_cache # override the policy policy: pull dependencies: - maven-test - frontend-test script: - ./mvnw -ntp org.jacoco:jacoco-maven-plugin:prepare-agent initialize sonar:sonar -Dsonar.organization=codeAbility -Dsonar.host.url=https://qe-sonarqube.uibk.ac.at/ -Dsonar.login=${SONAR_TOKEN_QE} -Dmaven.repo.local=$MAVEN_USER_HOME # - ./mvnw -ntp org.jacoco:jacoco-maven-plugin:prepare-agent initialize sonar:sonar -Dsonar.organization=codeAbility -Dsonar.host.url=https://server.arctis.at/sonar/ -Dsonar.login=${SONAR_TOKEN} -Dmaven.repo.local=$MAVEN_USER_HOME allow_failure: true before_script: - export NG_CLI_ANALYTICS="false" - export MAVEN_USER_HOME=`pwd`/.maven - npm ci --cache .npm --prefer-offline # Uncomment the following line to use gitlabs container registry. You need to adapt the REGISTRY_URL in case you are not using gitlab.com docker-push: stage: release cache: [] # only: # refs: # - development variables: REGISTRY_URL: sharing-codeability.uibk.ac.at:5051 IMAGE_TAG: sharing-codeability.uibk.ac.at:5051/sharing/codeability-sharing-platform script: - npm install - npm cache clean - ./mvnw package -Pprod verify -DskipTests jib:build -Djib.to.image=$IMAGE_TAG -Djib.to.auth.username=gitlab-ci-token -Djib.to.auth.password=$CI_BUILD_TOKEN when: on_success deploy: stage: deploy cache: [] # only: # refs: # - development dependencies: - docker-push - maven-test - frontend-test before_script: - mkdir -p ~/.ssh - echo "${SSH_BKY_DEPLOY}" > ~/.ssh/id_rsa - chmod 700 ~/.ssh/id_rsa - eval "$(ssh-agent -s)" - ssh-add ~/.ssh/id_rsa - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config script: - ssh contDeploy@codeability-austria -p 1022 "cd /home/michael/gitsearch && git pull && cd src/main/docker/ && docker pull sharing-codeability.uibk.ac.at:5051/sharing/codeability-sharing-platform && GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` COMMIT_ID=`git rev-parse HEAD` SPRING_PROFILES_ACTIVE=staging,swagger docker-compose -f gitsearch.yml up -d --no-deps --build --force-recreate gitsearch-app && exit" when: on_success e2e-test: stage: e2e cache: # inherit all global cache settings <<: *global_cache # override the policy policy: pull # only: # refs: # - development services: - selenium/standalone-chrome dependencies: - deploy script: - npm install - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - dpkg -i google-chrome*.deb - export JHI_E2E_HEADLESS=true - export E2E_PASSWORD=$E2E_PASSWORD - npm run e2e --host=selenium__standalone-chrome when: on_success