Sonarqube a une porte de code de qualité de fonctionnalité, mais cela ne fonctionne pas pour Community Edition. Ainsi, ce plugin sera intergate avec CI / CD, obtenez du code de qualité et push le rapport pour fusionner la demande lorsque le changement a modifié.
La qualité de qualité est une interface de ligne de commande pour la porte de code de qualité.
sonar-scanner dans le code analytique, signalez et poussez les problèmes vers les serveurs de sonar.Pour github et gitlab
Résultat:
$ npm install -g sonar-quality-gate
# Show help
$ quality-gate --helpRésultat:
__ _ _ _ __ _ | | (_) | | _ _ _ __ _ __ _ | | _ ___
/ _ ` | | | | | / _ ` | | | | | | __ | | | | | _____ / _ ` | / _ ` | | __ | / _
| (_ | | | | _ | | | (_ | | | | | | | | _ | | _ | | | _____ | | (_ | | | (_ | | | | _ | __/
_ _, | _ _,_ | _ _,_ | | _ | | _ | _ _ | _ _, | _ _, | _ _,_ | _ _ | _ __ |
| _ | | ___/ | ___/
Usage: quality-gate [options]
Global Options:
-h, --help [boolean]
-D, --define Define sonar property
Authentication:
sonar.login The authentication token or login of a SonarQube user with Execute Analysis permission on
the project.
More parameters:
- https://docs.sonarqube.org/latest/analysis/analysis-parameters/ [array]
--git Config git
--git.url Git server URL. Default: $GIT_URL
--git.token Git token. Default: $GIT_TOKEN
--git.project_id Gitlab project ID or Github repository. Default: $CI_PROJECt_ID or $GITHUB_REPOSITORY
--git.merge_id Git merge request IID. Default: $CI_MERGE_REQUEST_IID
[default: {}]
--sonar Config sonar
--sonar.url Sonarqube server URL. Default: $SONAR_URL or sonar.host.url in file
sonar-project.properties.
--sonar.token The authentication token of a SonarQube user with Execute Analysis permission on the
project. Default: $SONAR_TOKEN
--sonar.project_key Sonar project key. Default: sonar.projectKey in file sonar-project.properties
[default: {}]
-v, --version Show version [boolean]
-X, --debug Produce execution debug output [boolean] [default: false]
-p, --provide [default: " gitlab " ]Pour exécuter la porte du code de qualité de vérification:
quality-gate -p=github -D sonar.login= " <token> " --sonar.url= " <sonar url> " --sonar.token= " <sonar token> " --sonar.project_key= " <sonar token> " --git.url= " https://gitlab.com " --git.token= " xxx " --git.project_id=123 --git.merge_id=345Si définissez Env pour les paramètres ci-dessous:
GIT_URL= " "
GIT_TOKEN= " "
CI_PROJECt_ID= " "
CI_MERGE_REQUEST_IID= " "
SONAR_URL= " "
SONAR_TOKEN= " " et a un fichier sonar-project.properties :
sonar.host.url=
sonar.projectKey=
Nous pouvons utiliser une courte commande:
quality-gate -Dsonar.login= " " Ajouter un nouveau fichier sonar-project.properties comme le contenu ci-dessous:
# sonar.organization=dieuhd # if use sonarcloud, uncomment this line
sonar.host.url=[SONAR_HOST]
sonar.projectKey=[SONAR_PROJECT_KEY]
sonar.qualitygate.wait=true
Réf: sonar-project.properties
Utilisez quality-gate au lieu de sonar-scanner .
Exemple:
quality-gate -Dsonar.login= $SONAR_KEYEt config pour gitlab-ci:
stages :
- CheckSonar
.CheckSonarqube : &CheckSonarqube |
quality-gate -Dsonar.login=$SONAR_KEY
Sonar :
stage : CheckSonar
image : dieuhd/sonar-quality-gate
rules :
- if : ' $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master" '
script :
- *CheckSonarqubeP / S: Travaillez uniquement pour la demande de fusion. Becase, le plugin a besoin de demande de fusion iid.
Exemple:
name : Check sonarqube
on : [pull_request]
jobs :
build :
name : Build
runs-on : ubuntu-latest
steps :
- name : Checkout
uses : actions/[email protected]
with :
fetch-depth : 0 # Shallow clones should be disabled for a better relevancy of analysis
- name : Set up Sonar Quality Gate
uses : dieuhd/sonar-quality-gate@v1
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
GIT_URL : " https://api.github.com "
GIT_TOKEN : ${{ secrets.GIT_TOKEN }}
SONAR_URL : ${{ secrets.SONAR_URL }}
SONAR_TOKEN : ${{ secrets.SONAR_TOKEN }}
SONAR_PROJECT_KEY : ${{ secrets.SONAR_PROJECT_KEY }}
with :
login : ${{ secrets.SONAR_TOKEN }}
url : ${{ secrets.SONAR_URL }}
projectKey : ${{ secrets.SONAR_PROJECT_KEY }} $ git clone https://github.com/dieuhd/sonar-quality-gate.git
$ cd sonar-quality-gate
$ npm install
$ husky install && chmod ug+x .husky/ *
$ npm run start:devMit. Voir licence.txt.