I am using GitLab ci to run SonarCloud code analysis on the code.
here is my gitlab-ci.yaml
stages:
  - test
before_script:
  - mkdir -p ~/.ssh &&
    cp $gitlab_private_key ~/.ssh/id_ed25519 &&
    chmod 600 ~/.ssh/id_ed25519 &&
    touch ~/.ssh/known_hosts &&
    ssh-keyscan gitlab.com >> ~/.ssh/``known_hosts
variables:
  SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
  GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
  GITLAB_PROJECT_ID: ${CI_PROJECT_ID} # needed to be exported to the project's environments
  FLASK_APP: manage.py
sonarcloud-check:
  image:
    name: sonarsource/sonar-scanner-cli:latest
    entrypoint: [""]
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - sonar-scanner
  only:
    - merge_requests
    - master
test-merge-request-changes:
  stage: test
  only:
    - merge_requests
  image:
    name: docker:19.03.13-git
  services:
    - name: docker:19.03.0-dind
      entrypoint: ["env", "-u", "DOCKER_HOST"]
      command: ["dockerd-entrypoint.sh"]
  variables:
    DOCKER_HOST: tcp://localhost:2375
    DOCKER_TLS_CERTDIR: ""
    DOCKER_DRIVER: overlay2
    ENV: test
    CI_DEBUG_TRACE: "true"
  before_script:
    - echo $CI_BUILD_TOKEN | docker login -u gitlab-ci-token --password-stdin ${CI_REGISTRY}
  script:
    - echo "Running Tests..."
    - cp ${group_shared_vars} ${CI_PROJECT_DIR}/.env
    - docker build . -f Dockerfile-testing -t test_merge_req --build-arg GITLAB_PROJECT_ID=${GITLAB_PROJECT_ID}
    - docker run --cidfile="my-package.txt" test_merge_req:latest
  after_script:
    - touch text2.txt
    - docker cp $(cat my-package.txt):/app/tests/coverage/coverage.xml coverage.xml
    - docker cp $(cat my-package.txt):/app/tests/coverage/junit.xml junit.xml
  timeout: 2h
  artifacts:
    when: always
    reports:
      cobertura:
        - coverage.xml
      junit:
        - junit.xml
  coverage: '/TOTAL.*\s+(\d+%)$/'
And here is my sonar-project.properties
sonar.projectKey=my_app-key
sonar.organization=my_org
sonar.sources=lib
sonar.tests=tests
sonar.exclusions=tests
sonar.language=python
sonar.python.version=3.8
I want to get the report that is generated in the container analyzed by sonarcloud on each merge request.
Also, when a code is pushed to the master branch, I want to get the coverage percent on sonarcloud of the project to be updated but it just shows 0%.
Is there any way that after the merge requests are run, we get the sonarcloud analysis on the report of the docker container?
And also getting the master branch coverage updated without having to commit the coverage.xml to the repo?
 
    