私は、開発コミュニティ、特にDevOpsプラクティスにかなり慣れており、SonarQubeをGitlabと統合しようとしているプロジェクトの一環として、SonarQubeとGit CI(継続的統合)でR&Dを行い、GithubとSonarQubeのプラグインがリリースされているように見えます一方、Gitlab用ではありません。
すべてのプルリクエストのコード品質を検査するためにSonarQubeを使用してGitLabを構成するのは現実的であり、これらの2つの部分を統合するためのベストプラクティスは何ですか。
ありがとう
プラグインは本当に必要ありません。あなたの.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プロジェクト...)
現在、私が知っている限りでは、GitLabとMR分析/統合を提供することを目的とした2つのコミュニティ主導のプラグインがあります。
どちらも現在、次のリリースのためにフィードバックフェーズを通過しており、どちらもそのリリースでアップデートセンターに到達することを目指しています。
両方を使用すると、新しく検出された違反をGitLabでコメントするビルドを実行できます。どちらも、SonarSourceのGitHubプラグインから大きな影響を受けています。
しかし、私は開発者であるため、2つのうちどちらを使用するかについてアドバイスする立場にないため、偏っています。
私は同じ要件にあったので、実装方法は次のとおりです。
タグを指定せずに共有タイプのランナーを作成します。次のコマンドでファイル.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
以下は、私が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>