Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • addianto/sonar-scanner-cli-flutter-image
  • ichlasul.affan/sonar-scanner-cli-flutter-image
  • pmpl/sonar-scanner-cli-image
3 results
Select Git revision
  • chore/upgrade-sonar-cli
  • master
2 results
Show changes
Commits on Source (20)
---
image: docker:19-git
# Quickhack based on https://forum.gitlab.com/t/docker-dind-stops-working-after-12-1-0-update/28664/2
services:
- name: docker:19-dind
entrypoint: ["env", "-u", "DOCKER_HOST"]
command: ["dockerd-entrypoint.sh"]
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
stages:
- test
- deploy
SonarScanner Analysis Dev:
image: $SONARQUBE_CLI_IMAGE
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
-X
except:
- master
- staging
SonarScanner Analysis:
image: addianto/sonar-scanner-cli:latest
image: $SONARQUBE_CLI_IMAGE
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
-X
only:
- master
- staging
Publish to Docker Hub:
stage: deploy
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
CONTEXT: $CI_PROJECT_DIR
IMAGE_NAME: "$CI_REGISTRY_IMAGE"
script:
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- 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
- echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"username\":\"$DOCKERHUB_USERNAME\",\"password\":\"$DOCKERHUB_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor
--build-arg IMAGE_CREATED="$(date --utc -Iseconds)"
--build-arg IMAGE_REVISION="${CI_COMMIT_SHA}"
--build-arg IMAGE_AUTHOR="${IMAGE_AUTHOR}"
--destination $IMAGE_NAMESPACE/sonar-scanner-flutter-cli:latest
when: manual
allow_failure: true
tags:
- docker
only:
- master
......@@ -2,3 +2,4 @@
## Default owners
* @addianto
* @ichlasul.affan
FROM debian:10-slim
FROM jro7/flutter_lcov:latest
# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# Or your actual UID, GID on Linux if not the default 1000
ARG USERNAME=sonar
ARG USER_UID=1000
ARG USER_GID=$USER_UID
# Setup workspace folder
RUN mkdir -p /workspace && chown -R $(whoami):$(whoami) /workspace
WORKDIR /workspace
# Install packages
RUN apt-get update \
&& apt-get -y install --no-install-recommends ca-certificates git nodejs unzip wget xz-utils \
# Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.
&& groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
# Clean up
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
# Configure Sonar Scanner CLI
ARG SONAR_SCANNER_CLI_VERSION=4.0.0.1744
ARG SONAR_SCANNER_CLI_VERSION=4.6.0.2311
RUN wget -qO sonar-scanner-cli.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_CLI_VERSION-linux.zip \
&& unzip sonar-scanner-cli.zip -d /opt \
&& chown -R $(whoami):$(whoami) /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux \
&& rm sonar-scanner-cli.zip \
&& chmod +x /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux/bin/sonar-scanner \
&& ln -s /opt/sonar-scanner-$SONAR_SCANNER_CLI_VERSION-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner
......@@ -32,6 +29,7 @@ ARG SHELLCHECK_VERSION=latest
RUN wget -qO /opt/shellcheck-${SHELLCHECK_VERSION}.tar.xz https://shellcheck.storage.googleapis.com/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz \
&& cd /opt \
&& tar -xf shellcheck-${SHELLCHECK_VERSION}.tar.xz \
&& chown -R $(whoami):$(whoami) /opt/shellcheck-${SHELLCHECK_VERSION} \
&& rm shellcheck-${SHELLCHECK_VERSION}.tar.xz \
&& chmod +x /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck \
&& ln -s /opt/shellcheck-${SHELLCHECK_VERSION}/shellcheck /usr/local/bin/shellcheck
......@@ -39,10 +37,7 @@ RUN wget -qO /opt/shellcheck-${SHELLCHECK_VERSION}.tar.xz https://shellcheck.sto
# 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
# Define default command to be run
CMD ["sonar-scanner"]
# Container image metadata
......@@ -50,14 +45,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/sonar-scanner-cli-flutter-image"
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} \
......
# 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
......
......@@ -19,7 +19,7 @@ if ! [ -x "$(command -v awk)" ]; then
exit 1
fi
if ! [ -n "$1" ]; then
if [ -z "$1" ]; then
echo "Error: missing 1st argument of $0, i.e. namespace of the container image." >&2
exit 1
fi
......
......@@ -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]