jenkin jacoco alignment
This commit is contained in:
parent
18402a9af8
commit
ab1b5e2e0a
@ -0,0 +1,16 @@
|
|||||||
|
# LSN-0039: Jenkins + JaCoCo Integration with Multi-Module Gradle
|
||||||
|
|
||||||
|
- **Problem:** O Jenkinsfile estava desatualizado, tentando rodar uma task de cobertura inexistente (`testCodeCoverageReport`) em um subprojeto específico, ignorando a cobertura global e causando falhas no pipeline.
|
||||||
|
- **Decision:** Alinhar o `Jenkinsfile` com a task de agregação customizada no root project (`jacocoTestReport`), removendo a dependência de subprojetos específicos para métricas globais.
|
||||||
|
- **Implementation:**
|
||||||
|
- Atualizado o comando de execução no Jenkins: `./gradlew clean test jacocoTestReport`.
|
||||||
|
- Ajustado o `recordCoverage` para ler o XML consolidado em `build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml`.
|
||||||
|
- Ajustado o `publishHTML` para exibir o relatório consolidado em `build/reports/jacoco/jacocoTestReport/html`.
|
||||||
|
- **Example:**
|
||||||
|
- Antes: `SRS_APP/build/reports/...` (específico por app).
|
||||||
|
- Depois: `build/reports/...` (global do projeto).
|
||||||
|
- **Pitfalls:**
|
||||||
|
- Ao usar relatórios consolidados no root, deve-se garantir que o Gradle rode a task de agregação *após* os testes de todos os subprojetos.
|
||||||
|
- O Jenkins precisa de acesso ao workspace root para encontrar esses arquivos; caminhos relativos no `Jenkinsfile` geralmente partem do root do checkout.
|
||||||
|
- **References:**
|
||||||
|
- `DSC-0024`, `DEC-0025`, `PLN-0048`.
|
||||||
49
files/config/Jenkinsfile
vendored
Normal file
49
files/config/Jenkinsfile
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
pipeline {
|
||||||
|
agent any
|
||||||
|
|
||||||
|
environment {
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Build') {
|
||||||
|
steps {
|
||||||
|
withChecks(name: 'Test', includeStage: true) {
|
||||||
|
withGradle {
|
||||||
|
sh """
|
||||||
|
./gradlew clean test jacocoTestReport --no-daemon
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
recordCoverage(tools: [[parser: 'JACOCO', pattern: "build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"]],
|
||||||
|
id: 'jacoco',
|
||||||
|
name: 'JaCoCo Coverage',
|
||||||
|
sourceCodeRetention: 'EVERY_BUILD',
|
||||||
|
qualityGates: [
|
||||||
|
[threshold: 50.0, metric: 'CLASS', baseline: 'PROJECT', unstable: true],
|
||||||
|
[threshold: 50.0, metric: 'METHOD', baseline: 'PROJECT', unstable: true],
|
||||||
|
[threshold: 50.0, metric: 'LINE', baseline: 'PROJECT', unstable: true],
|
||||||
|
[threshold: 50.0, metric: 'INSTRUCTION', baseline: 'PROJECT', unstable: true],
|
||||||
|
[threshold: 40.0, metric: 'BRANCH', baseline: 'PROJECT', unstable: true]])
|
||||||
|
junit testResults: '**/build/test-results/test/TEST-*.xml'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // Test
|
||||||
|
|
||||||
|
stage('Reports') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
// archiveArtifacts artifacts: '**/coverage-sources.zip', allowEmptyArchive: false, fingerprint: false, onlyIfSuccessful: false
|
||||||
|
publishHTML (target: [
|
||||||
|
allowMissing: true,
|
||||||
|
alwaysLinkToLastBuild: false,
|
||||||
|
keepAll: true,
|
||||||
|
reportDir: "build/reports/jacoco/jacocoTestReport/html",
|
||||||
|
reportFiles: 'index.html',
|
||||||
|
reportName: 'Coverage Report'
|
||||||
|
])
|
||||||
|
// def pmd = scanForIssues tool: [$class: 'Pmd'], pattern: 'lib/build/reports/pmd/*.xml'
|
||||||
|
// publishIssues issues: [pmd]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // Reports
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user