Dans le projet de printemps, j'utilise le plugin jacoco pour mesurer la couverture des tests.
Je vois le rapport html comme ci-dessous:
Maintenant, je voudrais ajouter un badge au projet github avec ce pourcentage, quelque chose comme ceci:
Une idée comment puis-je combiner jacoco avec des actions github?
3 Réponses :
Vous devrez publier vos statistiques de couverture sur un service tel que Combinaisons dans le cadre de votre intégration continue. Les serveurs CI tels que CircleCI et TravisCI ont intégré la prise en charge de Github et des combinaisons
Votre projet est-il open source? Les combinaisons, Travis et CircleCI sont tous gratuits pour l'open source. Une fois que vous avez github déclenchant CI et publier sur des combinaisons, vous pouvez intégrer une balise d'image dans votre readme.md
Vous pouvez utiliser codecov car ils prennent en charge tous les fournisseurs CI .
Vous aurez besoin de deux choses:
Après avoir créé votre compte et avoir accès à un jeton, stockez le jeton en tant que secret dans les actions github. Appelez-le CODECOV_TOKEN .
Dans votre flux de travail, créez une étape qui ressemble à ceci et configurez selon vos besoins:
[](https://codecov.io/gh/<your-name>/<project-name>)
Dans votre README, créez le badge de statut au format:
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
Maintenant, avec GitHub Actions semble encore plus facile mais je suis coincé sur une erreur en me plaignant d'un fichier lcov.info qui manque ... Comment puis-je le générer?
Vous pouvez utiliser les actions GitHub pour générer un badge à l'aide de GitHub Workflow (pas besoin d'autres serveurs). Vous pouvez écrire vos propres tâches / étapes ou utiliser l'action que je viens de publier: https://github.com/marketplace/actions/badge-action .
Tout d'abord, vous devez analyser le fichier de résultats de couverture et extraire la valeur ( 81 dans votre exemple). Ici, j'ai utilisé parse-coverage-report comme exemple de commande (vous devrez le créer vous-même). Enfin, enregistrez cette valeur en tant que sortie de flux de travail GitHub:
# Use the output from the `coverage` step
- name: Generate the badge SVG image
uses: emibcn/badge-action@v1
id: badge
with:
label: 'Coverage'
status: ${{ steps.coverage.outputs.coverage }}
path: ./badges/test-coverage.svg
color: ${{
steps.coverage.outputs.coverage > 90 && 'green' ||
steps.coverage.outputs.coverage > 80 && 'yellow,green' ||
steps.coverage.outputs.coverage > 70 && 'yellow' ||
steps.coverage.outputs.coverage > 60 && 'orange,yellow' ||
steps.coverage.outputs.coverage > 50 && 'orange' ||
steps.coverage.outputs.coverage > 40 && 'red,orange' ||
steps.coverage.outputs.coverage > 30 && 'red,red,orange' ||
steps.coverage.outputs.coverage > 20 && 'red,red,red,orange' ||
'red' }}
Cela enregistre le badge sous le nom de fichier badge.svg . Maintenant, vous décidez de télécharger ce badge dans le même référentiel, sur un S3 ou ce que vous préférez. Étant donné qu'il s'agit d'un rapport de couverture, je suppose que vous aimerez le télécharger dans le même repo 1) la même branche dont il a été extrait ou 2) les badges branche dédiés:
- name: Check test coverage
uses: johanvanhelden/gha-clover-test-coverage-check@v1
id: coverage
with:
percentage: "50"
filename: "coverage.xml"
# Use the output from the `coverage` step
- name: Generate the badge SVG image
uses: emibcn/badge-action@v1
id: badge
with:
label: 'Coverage'
status: ${{ steps.coverage.outputs.coverage }}
path: ./badges/test-coverage.svg
color: ${{ steps.coverage.outputs.coveragelines > 75 && 'green' || 'red' }}
L'étape extract_branch de https://stackoverflow.com/a/58035262/2928168 .
badges succursale dédiés Tout d'abord, créez et transférez les badges branche dédiés avec (extrait de StackOverflow ):
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- uses: actions/checkout@v1
with:
ref: 'badges'
- name: Commit badge
env:
BRANCH: ${{ steps.extract_branch.outputs.branch }}
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
mkdir -p "${BRANCH}"
mv badge.svg "${BRANCH}"
git add "${BRANCH}/badge.svg"
git commit -m "Add/Update badge"
- name: Push badge commit
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: badges
git checkout master # Use a fresh start git checkout --orphan badges # Unstage all the files in your working tree. git rm --cached $(git ls-files) # Create a dedicated README file, so it's clear what's going on here echo '# Badges branch' > README.md git add README.md git commit -m 'Add dedicated README' git push origin badges
Si votre rapport de couverture est un fichier de coverage.xml trèfle coverage.xml , vous pouvez utiliser cette action pour analyser et générer la valeur de couverture. Par exemple:
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- uses: actions/checkout@v1
with:
ref: ${{ steps.extract_branch.outputs.branch }}
- name: Commit badge
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add badge.svg
git commit -m "Add/Update badge"
- name: Push badge commit
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ steps.extract_branch.outputs.branch }}
Vous pouvez faire en sorte que votre badge change sa couleur d'arrière-plan en fonction de la valeur de couverture, même en utilisant des dégradés:
on: [push]
jobs:
coverage:
runs-on: ubuntu-latest
name: Generate test coverage badge
steps:
- name: Generate a coverage value
id: coverage
# Generates a GitHub Workflow output named `lines`
run: |
COVERAGE="$( parse-covergae-report )"
echo "##[set-output name=lines;]${COVERAGE}%"
# Use the output from the `coverage` step
- name: Generate the badge SVG image
uses: emibcn/badge-action@v1
with:
label: 'Test coverage'
status: ${{ steps.coverage.outputs.lines }}
color: 'blue,555,daf'
path: badge.svg
Je pense que si vous voulez utiliser JaCoCo mais que vous ne parvenez pas à trouver une action Github capable d'analyser et d'exposer la valeur que vous souhaitez, cela pourrait être un bon début pour voir ce que fait
codecov/codecov-action@v1et le répliquer pour vous-même puis utilisez-le dans votre projet. Je verrai si je peux le faire mais je ne peux malheureusement pas le promettre!