├── .gitlab-ci.yml ├── Dockerfile └── README.md /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | image: registry.git.a/pet4adm/images/docker/gitlab-runner:latest 2 | 3 | before_script: 4 | - docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY 5 | 6 | stages: 7 | - build 8 | - test 9 | - release 10 | 11 | variables: 12 | CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG 13 | CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest 14 | #CI_DEBUG_TRACE: "true" 15 | 16 | .common_rules_onTag: &common_rules_onTag 17 | rules: 18 | - if: '$CI_COMMIT_TAG != null' 19 | 20 | build: 21 | stage: build 22 | script: 23 | - docker build --pull -t $CONTAINER_TEST_IMAGE . 24 | - docker push $CONTAINER_TEST_IMAGE 25 | <<: *common_rules_onTag 26 | 27 | run: 28 | stage: test 29 | script: 30 | - docker pull $CONTAINER_TEST_IMAGE 31 | - docker run $CONTAINER_TEST_IMAGE sonar-scanner --version 32 | <<: *common_rules_onTag 33 | 34 | push: 35 | stage: release 36 | script: 37 | - docker pull $CONTAINER_TEST_IMAGE 38 | - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE 39 | - docker push $CONTAINER_RELEASE_IMAGE 40 | rules: 41 | - if: '$CI_COMMIT_TAG != null' 42 | when: manual -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM adoptopenjdk:16-hotspot 2 | 3 | LABEL maintainers = "strizhhh@mail.ru, nixel2007@gmail.com" 4 | 5 | RUN apt-get update \ 6 | && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | curl \ 8 | git \ 9 | openssh-client \ 10 | unzip \ 11 | # git-lfs 12 | && curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash \ 13 | && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 14 | git-lfs \ 15 | && rm -rf \ 16 | /var/lib/apt/lists/* \ 17 | /var/cache/debconf 18 | 19 | ENV TZ=Europe/Moscow \ 20 | SONAR_SCANNER_VERSION="4.6.2.2472" \ 21 | SONAR_SCANNER_HOME=/usr/lib/sonar-scanner 22 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 23 | 24 | WORKDIR /usr/src 25 | 26 | RUN curl --insecure -o ./sonarscanner.zip -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip && \ 27 | unzip sonarscanner.zip && \ 28 | rm sonarscanner.zip && \ 29 | mv sonar-scanner-${SONAR_SCANNER_VERSION} /usr/lib/sonar-scanner && \ 30 | ln -s /usr/lib/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner 31 | 32 | ENTRYPOINT ["sonar-scanner"] 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sonar Scanner for GitLab CI/CD and Jenkins 2 | 3 | Sonar Scanner для GitLab CI/CD и Jenkins. 4 | 5 | ## DOCKER HUB 6 | 7 | `docker pull astrizhachuk/sonar-scanner-cli:latest` 8 | 9 | ## TAGS AND RESPECTIVE DOCKERFILE LINKS 10 | 11 | * [4.6.2.2472, latest](https://github.com/astrizhachuk/sonar-scanner-cli/blob/master/Dockerfile) 12 | 13 | * [4.3.0.2102](https://github.com/astrizhachuk/sonar-scanner-cli/blob/4.3.0.2102/Dockerfile) 14 | 15 | * [4.0.0.1744](https://github.com/astrizhachuk/sonar-scanner-cli/blob/4.0.0.1744/Dockerfile) 16 | 17 | ## DESCRIPTION 18 | 19 | ### FROM 20 | 21 | * adoptopenjdk:16-hotspot 22 | 23 | ### ADD 24 | 25 | * curl 26 | * git 27 | * git-lfs 28 | * openssh-client 29 | * unzip 30 | 31 | ### ENV 32 | 33 | * SONAR_SCANNER_VERSION="4.6.2.2472" - version of Sonar Scanner 34 | 35 | ## EXAMPLE .gitlab-ci.yml 36 | 37 | ```yml 38 | stages: 39 | - sonarqube 40 | 41 | variables: 42 | MAJOR: "10.3.1" 43 | PATH_SRC: "src/" 44 | 45 | merge_request: 46 | stage: sonarqube 47 | image: 48 | name: ${CI_REGISTRY}/devops/sonar-scanner-cli:latest 49 | entrypoint: [""] 50 | variables: 51 | GIT_DEPTH: 0 52 | script: 53 | - keytool -cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias yours.serts.local -file "$SONAR_SSL_CERTIFICATE" 54 | - export PROJECT_VERSION="${MAJOR}.$(grep -oPm1 "(?<=)[^<]+" ${PATH_SRC}VERSION)" 55 | - export SONAR_SCANNER_OPTS="-Xmx16g" 56 | - sonar-scanner 57 | -D"sonar.host.url=${SONAR_SERVER}" 58 | -D"sonar.projectVersion=${PROJECT_VERSION}" 59 | -D"sonar.login=${SONAR_LOGIN}" 60 | -D"sonar.pullrequest.key=${CI_MERGE_REQUEST_IID}" 61 | -D"sonar.pullrequest.branch=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}" 62 | -D"sonar.pullrequest.base=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}" 63 | rules: 64 | - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"' 65 | tags: 66 | - docker 67 | 68 | push: 69 | stage: sonarqube 70 | image: 71 | name: ${CI_REGISTRY}/devops/sonar-scanner-cli:latest 72 | entrypoint: [""] 73 | variables: 74 | GIT_DEPTH: 0 75 | script: 76 | - keytool -cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias yours.serts.local -file "$SONAR_SSL_CERTIFICATE" 77 | - export PROJECT_VERSION="${MAJOR}.$(grep -oPm1 "(?<=)[^<]+" ${PATH_SRC}VERSION)" 78 | - export SONAR_SCANNER_OPTS="-Xmx6g" 79 | - sonar-scanner 80 | -D"sonar.host.url=${SONAR_SERVER}" 81 | -D"sonar.projectVersion=${PROJECT_VERSION}" 82 | -D"sonar.branch.name=master" 83 | -D"sonar.login=${SONAR_LOGIN}" 84 | rules: 85 | - if: '$CI_COMMIT_TAG != null' 86 | tags: 87 | - docker 88 | ``` --------------------------------------------------------------------------------