From 8642032529e443454adf2b87b44c4eff14d1b15e Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Sun, 16 Feb 2020 22:57:07 +0700 Subject: [PATCH] Add Flutter dependencies on SonarScanner CLI Image --- .gitlab-ci.yml | 23 ++++++++++++++++++--- .gitlab/CODEOWNERS | 1 + Dockerfile | 24 +++++++++++++++------- README.md | 44 ++++++++++++++++++++++++++++++++-------- sonar-project.properties | 5 ++--- 5 files changed, 76 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 39f1d7b..b27ce96 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,15 +15,32 @@ stages: - test - deploy +SonarScanner Analysis Dev: + image: ichlaffterlalu/sonar-scanner-flutter-cli:latest + stage: test + script: + - sonar-scanner + -Dsonar.host.url=$SONARQUBE_HOST + -Dsonar.login=$SONARQUBE_TOKEN + -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY + -Dsonar.branch.name=$CI_COMMIT_REF_NAME + -Dsonar.branch.target=staging + except: + - master + - staging + SonarScanner Analysis: - image: addianto/sonar-scanner-cli:latest + image: ichlaffterlalu/sonar-scanner-flutter-cli:latest stage: test script: - sonar-scanner -Dsonar.host.url=$SONARQUBE_HOST -Dsonar.login=$SONARQUBE_TOKEN + -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY + -Dsonar.branch.name=$CI_COMMIT_REF_NAME only: - master + - staging Publish to Docker Hub: stage: deploy @@ -32,8 +49,8 @@ Publish to Docker Hub: - docker build --build-arg=IMAGE_CREATED="$(date --utc -Iseconds)" --build-arg=IMAGE_REVISION="$(git show --pretty=oneline | tac | tail -n 1 | awk '{print $1}')" - --tag $IMAGE_NAMESPACE/sonar-scanner-cli:latest . - - docker push $IMAGE_NAMESPACE/sonar-scanner-cli:latest + --tag $IMAGE_NAMESPACE/sonar-scanner-flutter-cli:latest . + - docker push $IMAGE_NAMESPACE/sonar-scanner-flutter-cli:latest when: manual allow_failure: true tags: diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index aa65218..28a805a 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -2,3 +2,4 @@ ## Default owners * @addianto +* @ichlasul.affan diff --git a/Dockerfile b/Dockerfile index ebd8361..520bbe4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:10-slim +FROM runmymind/docker-android-sdk:latest # Avoid warnings by switching to noninteractive ENV DEBIAN_FRONTEND=noninteractive @@ -36,13 +36,23 @@ RUN wget -qO /opt/shellcheck-${SHELLCHECK_VERSION}.tar.xz https://shellcheck.sto && chmod +x /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck \ && ln -s /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck /usr/local/bin/shellcheck +# Install Flutter +ARG FLUTTER_VERSION="https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.12.13+hotfix.8-stable.tar.xz" +ENV PATH="$PATH:/usr/lib/dart/bin:/flutter/bin" +RUN wget --quiet --output-document=flutter.tar.xz $FLUTTER_VERSION && tar xf flutter.tar.xz -C / \ + && apt-get install apt-transport-https \ + && sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' \ + && sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' \ + && apt-get update \ + && apt-get install -y dart + # Switch back to dialog for any ad-hoc use of apt-get ENV DEBIAN_FRONTEND='' ## Note to editors: Make sure name of USER and its WORKDIR path matches with ## the value of USERNAME above -USER sonar -WORKDIR /home/sonar/workspace +USER $USERNAME +WORKDIR /home/$USERNAME/workspace CMD ["sonar-scanner"] # Container image metadata @@ -50,14 +60,14 @@ CMD ["sonar-scanner"] ## keys must be provided during build process, i.e. `docker build` invocation. ## It is also possible to pass other metadata values via build arguments. ARG IMAGE_CREATED="" -ARG IMAGE_SOURCE="https://gitlab.cs.ui.ac.id/pmpl/sonar-scanner-cli-image" +ARG IMAGE_SOURCE="https://gitlab.cs.ui.ac.id/ichlasul.affan/" ARG IMAGE_VERSION=${SONAR_SCANNER_CLI_VERSION} ARG IMAGE_REVISION="" ARG IMAGE_VENDOR="Faculty of Computer Science Universitas Indonesia" -ARG IMAGE_TITLE="Sonar Scanner CLI Image" -ARG IMAGE_DESCRIPTION="Sonar Scanner CLI bundled in a container image." +ARG IMAGE_TITLE="Sonar Scanner CLI Image for Flutter" +ARG IMAGE_DESCRIPTION="Sonar Scanner CLI with Flutter dependencies bundled in a container image." LABEL org.opencontainers.image.created=${IMAGE_CREATED} \ - org.opencontainers.image.authors="Daya Adianto <dayaadianto@cs.ui.ac.id>" \ + org.opencontainers.image.authors=${IMAGE_AUTHOR} \ org.opencontainers.image.source=${IMAGE_SOURCE} \ org.opencontainers.image.version=${IMAGE_VERSION} \ org.opencontainers.image.revision=${IMAGE_REVISION} \ diff --git a/README.md b/README.md index 35b1c4b..aa1b1f0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Sonar Scanner CLI Image +# Sonar Scanner CLI Image for Flutter -> Sonar Scanner CLI bundled in a container image. +> Sonar Scanner CLI with Flutter dependencies bundled in a container image. ## Usage @@ -13,7 +13,7 @@ into SonarScanner via CLI prompt. To run the container image locally using Docker: ```bash -docker run -it -v $(pwd):/home/sonar/workspace addianto/sonar-scanner-cli:latest bash +docker run -it -v $(pwd):/home/sonar/workspace ichlaffterlalu/sonar-scanner-flutter-cli:latest bash sonar-scanner [sonar-scanner options] ``` @@ -23,15 +23,38 @@ sonar-scanner [sonar-scanner options] Example: ```bash -docker run -it -v $(pwd):/home/sonar/workspace addianto/sonar-scanner-cli:latest bash +docker run -it -v $(pwd):/home/sonar/workspace ichlaffterlalu/sonar-scanner-flutter-cli:latest bash sonar-scanner -Dsonar.host.url=https://pmpl.cs.ui.ac.id/sonarqube -Dsonar.login=[YOUR TOKEN] ``` -To use the container image as a base image for a CI job on GitLab CI/CD: +To use the container image as a base image for a CI job on GitLab CI/CD (sample includes multi-branch +analysis support): ```yaml +SonarScanner Analysis Dev: + image: ichlaffterlalu/sonar-scanner-flutter-cli:latest + # Ideally you want to run SonarScanner after the test suite has generated + # test & coverage report. The following is only an example to run + # SonarScanner concurrently with CI job(s) in `test` stage. + stage: test + script: + # Obtain the host and token from GitLab CI environment variables + # Short-lived branches has a target (parent) branch, which in this case + # is `staging`. + - sonar-scanner + -Dsonar.host.url=$SONARQUBE_HOST + -Dsonar.login=$SONARQUBE_TOKEN + -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY + -Dsonar.branch.name=$CI_COMMIT_REF_NAME + -Dsonar.branch.target=staging + except: + # Perform SonarScanner analysis for short-lived branches + # (exclude `master` and `staging`) + - master + - staging + SonarScanner Analysis: - image: addianto/sonar-scanner-cli:latest + image: ichlaffterlalu/sonar-scanner-flutter-cli:latest # Ideally you want to run SonarScanner after the test suite has generated # test & coverage report. The following is only an example to run # SonarScanner concurrently with CI job(s) in `test` stage. @@ -41,14 +64,19 @@ SonarScanner Analysis: - sonar-scanner -Dsonar.host.url=$SONARQUBE_HOST -Dsonar.login=$SONARQUBE_TOKEN + -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY + -Dsonar.branch.name=$CI_COMMIT_REF_NAME only: - # Perform SonarScanner analysis only on `master` branch + # Perform SonarScanner analysis for long-lived branches only on + # `master` and `staging` branch - master + - staging ``` ## Maintainers -- [Daya Adianto](https://gitlab.com/addianto) +- [Daya Adianto](https://gitlab.com/addianto): Original maintainer of SonarScanner CLI Image +- [Ichlasul Affan](https://gitlab.com/ichlasul.affan) ## License diff --git a/sonar-project.properties b/sonar-project.properties index 6154ca5..5ac46cc 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -4,13 +4,12 @@ ### sonar.host.url=[pass URL via CLI] ## Project Configuration -sonar.projectKey=to.adian:sonar-scanner-cli-image sonar.exclusions=/.devcontainer/,/.gitlab/ sonar.scm.provider=git ## Project Identity -sonar.projectName=SonarQube Scanner CLI Image +sonar.projectName=SonarQube Scanner CLI Image for Flutter sonar.projectVersion=latest ## Authentication -### sonar.login=[pass token via CLI] \ No newline at end of file +### sonar.login=[pass token via CLI] -- GitLab