web-dev-qa-db-ja.com

SonarQubeとGitlabの統合

私は、開発コミュニティ、特にDevOpsプラクティスにかなり慣れており、SonarQubeをGitlabと統合しようとしているプロジェクトの一環として、SonarQubeとGit CI(継続的統合)でR&Dを行い、GithubとSonarQubeのプラグインがリリースされているように見えます一方、Gitlab用ではありません。

すべてのプルリクエストのコード品質を検査するためにSonarQubeを使用してGitLabを構成するのは現実的であり、これらの2つの部分を統合するためのベストプラクティスは何ですか。

ありがとう

19
Adi

プラグインは本当に必要ありません。あなたの.gitlab-ci.yml

stages: 
- build 
build_master:
  image: maven
  stage: build
  artifacts:
    paths:
    - target/*.jar
  script:
  - mvn package sonar:sonar -Dsonar.Host.url=https://sonar.yourdomain.tld/ 
  only:
  - master

すべてのマスタープッシュがテストされます! (これはJavaプロジェクト...)

22
Joerg

現在、私が知っている限りでは、GitLabとMR分析/統合を提供することを目的とした2つのコミュニティ主導のプラグインがあります。

どちらも現在、次のリリースのためにフィードバックフェーズを通過しており、どちらもそのリリースでアップデートセンターに到達することを目指しています。

両方を使用すると、新しく検出された違反をGitLabでコメントするビルドを実行できます。どちらも、SonarSourceのGitHubプラグインから大きな影響を受けています。

しかし、私は開発者であるため、2つのうちどちらを使用するかについてアドバイスする立場にないため、偏っています。

15
Johnnei

私は同じ要件にあったので、実装方法は次のとおりです。

タグを指定せずに共有タイプのランナーを作成します。次のコマンドでファイル.gitlab-ci.ymlファイルを作成します。

variables:
  SONAR_URL: "http://your_sonar_url"
  SONAR_LOGIN: "sonar_user_id"
  SONAR_PASSWORD: "sonar_password"

sonarqube_master_job:
  stage: test
  only:
    - master
  image: maven:3.3.9-jdk-8-Alpine
  script:
    - mvn --batch-mode verify sonar:sonar -Dsonar.Host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.password=$SONAR_PASSWORD

特定のタグを使用してランナーを作成する場合、.gitlab-ci.ymlファイルでタグに言及する必要があります

このリンクでのタグの追加に関する詳細情報を取得できます https://forum.gitlab.com/t/activated-specific-runner-is-not-working/7002

4
Nithyananth

以下は、私がMVPのためにしたことです。

.gitlab-ci.yml

stages:
 - sonarqube_test

sonarqube_test:
  tags:
  - your-tag-attached-to-gitlab-runner
  stage: sonarqube_test
  script:
  - .cicd/sonarqube.sh

sonarqube.shファイル

#!/bin/bash
#
# Args: deploy.sh
#

cd ~

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.Zip

unzip sonar-scanner-cli-3.3.0.1492-linux.Zip

rm sonar-scanner-cli-3.3.0.1492-linux.Zip

chmod 777 sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

echo 'sonar.Host.url=http://<your_sonarqube_server_url>' >> sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

chmod +x sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner

sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner \
  -Dsonar.projectKey=<project_name> \
  -Dsonar.sources=. \
  -Dsonar.Host.url=http://<your_sonarqube_server_url> \
  -Dsonar.login=<token_from_gitlab_UI>

1
rahuljain1311