This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
  • Daniel Rainer's avatar
    Put the sonar-analyze job into a separate stage · e4008efa
    Daniel Rainer authored
    This job requires artifacts from other jobs,
    namely test results, which were generated in by jobs in the same stage.
    Gitlab does not support passing artifacts within a stage, so the
    sonar-analyze job needs to be done in a later stage.
    e4008efa
This GitLab CI configuration is valid. Learn more
.gitlab-ci.yml 5.94 KiB
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:
  services:
    - docker:20-dind
  variables:
    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:
    <<: *global_cache
    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

docker-build:
  stage: release
  cache: []
  only:
    refs:
      - development
  dependencies:
    - 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
  variables:
    REGISTRY_URL: sharing-codeability.uibk.ac.at:5051
    IMAGE_TAG: sharing-codeability.uibk.ac.at:5051/sharing/codeability-sharing-platform/gitsearch
  script:
    - ssh contDeploy@codeability-austria -p 1022 "cd gitsearch2/gitsearch && git pull && ./mvnw package -DskipTests jib:build -Djib.to.image=$IMAGE_TAG -Djib.to.auth.username=gitlab-ci-token  -Djib.to.auth.password=$CI_BUILD_TOKEN -Dmaven.repo.local=$MAVEN_USER_HOME"
  when: on_success

deploy:
  stage: deploy
  cache: []
  only:
    refs:
      - development
  dependencies:
    - docker-build
  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 gitsearch2/gitsearch && git pull && cd src/main/docker/ && docker pull sharing-codeability.uibk.ac.at:5051/sharing/codeability-sharing-platform/gitsearch && 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
  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 gitsearch2/gitsearch && git pull && npm install && export E2E_PASSWORD=$E2E_PASSWORD && npm run e2e:ci --host=selenium__standalone-chrome && exit"
    # - 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
    # - npm run e2e:ci --host=selenium__standalone-chrome
  when: on_success

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