Réutilisation des éléments probants dans les pipelines de relations publiques et de communication d'entreprise
Par défaut, lorsqu’un pipeline PR ou CI s’exécute, toutes les analyses et tous les tests configurés sont systématiquement lancés, même si le contenu du référentiel ou l’image faisant l’objet de l’analyse ou du test n’a pas changé depuis la dernière analyse ou le dernier test De ce fait, de nouvelles données sont collectées à chaque exécution. Cela représente une perte de temps et de ressources.
Les pipelines DevSecOps proposent une fonctionnalité optionnelle appelée Evidence Reuse (réutilisation des preuves) qui permet de sauter l’analyse ou le test à certaines étapes du pipeline lorsque le contenu du référentiel ou l’image en cours d’analyse ou de test n’a pas changé depuis la dernière analyse ou le dernier test Dans ce cas, aucune analyse ni aucun test n'est effectué, donc aucune nouvelle preuve n'est recueillie. À la place, les données précédemment collectées pour l'analyse ou le test sont récupérées et réutilisées dans les résumés CI, CD et CC. Cela accélère les pipelines PR et CI et optimise l'utilisation des ressources Lorsque cette fonctionnalité est activée, le pipeline vérifie que l'élément testé ou analysé n'a pas changé depuis l'exécution précédente. Si la validation aboutit, les étapes du pipeline peuvent ignorer le test ou l'analyse et s'appuyer sur les preuves et les résultats recueillis précédemment.
Voici quelques cas d'utilisation typiques de la réutilisation des données :
-
Scénario d'utilisation 1 :
- Exécuter des tests unitaires dans le pipeline PR avec collecte de preuves.
- Fusionnez la demande de modification (PR) en utilisant la méthode de votre choix (rebase, squash ou fusion classique).
- Si le code source n'a pas changé entre l'exécution de la pull request et celle du pipeline CI, l'exécution du test unitaire dans le pipeline CI peut être ignorée. Les résultats des tests unitaires issus de l'exécution du pipeline PR sont récupérés et réutilisés pour le résumé CI.
-
Scénario d'utilisation 2 :
- Exécutez le pipeline PR avec la collecte de preuves, ou exécutez le pipeline CI.
- L'une des étapes du pipeline, par exemple
compliance-check, échoue en raison d'un problème intermittent. - Relancez le pipeline PR ou CI sur le même commit.
- Les analyses et tests réussis sont ignorés lors de la nouvelle exécution, et leurs résultats issus de l'exécution précédente sont récupérés et réutilisés.
- Seules les analyses ayant échoué sont exécutées, et de nouvelles preuves sont collectées à leur sujet.
Pour activer la collecte de preuves dans le pipeline PR, consultez la section Collecte de preuves dans le pipeline PR.
Faciliter la réutilisation des données probantes
Pour activer la réutilisation des preuves dans le pipeline PR ou CI, définissez la propriété d'environnement evidence-reuse sur 1. Par défaut, cette propriété n'est pas activée.
| Propriété | Description | Valeur par défaut |
|---|---|---|
evidence-reuse |
Définir sur 1 pour permettre la réutilisation des données. |
Non activé |
evidence-reuse-for-failure |
Définir sur 1 pour réutiliser également les preuves ayant échoué. À définir en complément de evidence-reuse=1. |
Non activé |
evidence-validity-period |
Nombre d'heures pendant lesquelles les données peuvent être réutilisées. | 24 (maximum 720, soit 30 jours) |
L'outil check-evidence-for-reuse vérifie s'il existe des preuves pour la combinaison de asset-key, tool-type, et evidence-type, et vérifie que ces preuves remplissent les conditions requises
pour être réutilisées Pour plus d'informations, consultez check-evidence-for-reuse.
Pour consulter la référence complète des commandes CLI et tous les paramètres disponibles, voir cocoa locker evidence reuse.
Conditions de réutilisation des données probantes
L'outil check-evidence-for-reuse vérifie que les conditions suivantes sont remplies :
- Les preuves ont été recueillies sur le même élément de commit, le même contenu de dépôt ou la même image.
- Le statut de la preuve est
success. Les éléments de preuve présentant tout autre statut ne sont pas pris en compte pour la réutilisation, et une nouvelle analyse est lancée. Cela garantit que, lorsque des données relatives à une défaillance ont été collectées en raison d'une défaillance intermittente au cours d'une étape, la réexécution du pipeline ne réutilise pas ces données. Au lieu de cela, une nouvelle analyse est lancée et de nouveaux éléments de preuve sont recueillis. Cependant, dans certains cas, les preuves rejetées doivent être réutilisées. Par exemple, un scan a détecté une vulnérabilité dans le pipeline CI, et la modification doit être déployée en urgence. Pour réutiliser les données ayant fait l'objet d'un échec, définissez la propriété d'environnementevidence-reuse-for-failure=1en plus deevidence-reuse=1. - Ces informations ne sont pas obsolètes. La date de collecte des preuves se situe dans la période de validité. La durée de validité par défaut est de 24 heures. Vous pouvez configurer la valeur d'une exécution de pipeline à l'aide de la propriété
d'environnement (
evidence-validity-perioden heures). La durée est plafonnée à 720 heures (30 jours). - Le cas échéant, les informations fournies correspondent aux vérifications de configuration enregistrées dans la section Détails, telles que la version de l'outil ou la version de l'image de base de l'étape.
Outils pris en charge et types de preuves
Les scripts d'analyse par défaut utilisés dans le cadre d' DevSecOps ont été mis à jour afin de permettre la réutilisation des preuves lorsque cette fonctionnalité est activée.
Types de preuves pour lesquels la réutilisation est prise en charge :
| Type d'informations collectées | Peuvent être réutilisés |
|---|---|
com.ibm.static_scan |
Oui |
com.ibm.dynamic_scan |
Oui |
com.ibm.detect_secrets |
Oui |
com.ibm.code_bom_check |
Oui |
com.ibm.code_cis_check |
Oui |
com.ibm.code_vulnerability_scan |
Oui |
com.ibm.acceptance_tests |
Oui. Vous devez mettre à jour votre script personnalisé. |
com.ibm.unit_tests |
Oui. Vous devez mettre à jour votre script personnalisé. |
com.ibm.branch_protection |
Non |
com.ibm.pipeline_run_data |
Non |
com.ibm.peer_review |
Non |
Mettez à jour vos scripts personnalisés, tels que les tests unitaires et les tests d'acceptation, afin de permettre la réutilisation des preuves lorsque cette fonctionnalité est activée. Pour réutiliser des données dans vos scripts personnalisés, consultez la section suivante.
Adopter la réutilisation des preuves dans les scripts
Pour mettre en œuvre la réutilisation des preuves dans vos scripts, vérifiez d'abord si des preuves réutilisables sont disponibles. Le pseudo-code suivant décrit comment vérifier l'existence de preuves et déterminer la prochaine étape.
Pseudo-code
Check whether evidence for reuse exists for (asset, tool, evidence-type) by using check-evidence-for-reuse
If evidence is found
Skip the scan or test
Save the reused result file (optional)
Else
Continue with your existing scan process and collect new evidence as usual
Vérifier si des éléments justificatifs sont disponibles pour être réutilisés
Utilisez la commande check-evidence-for-reuse avec les mêmes paramètres que ceux que vous utilisez dans le script collect-evidence. Pour plus de détails, consultez check-evidence-for-reuse.
La commande se termine par 0 lorsque des données réutilisables sont trouvées et enregistrées, et par 1 lorsqu'elles ne sont pas trouvées.
Exemple d'utilisation
evidence_params=(
--tool-type "my-tool"
--evidence-type "com.ibm.unit_tests"
--asset-type "repo"
--asset-key "${repo_key}"
)
reused_evidence_json="$(mktemp)"
if check-evidence-for-reuse "${evidence_params[@]}" --output-path "${reused_evidence_json}"; then
echo "Reusable evidence found. Skipping the test."
else
# No reusable evidence: run the test and collect new evidence as usual
run_my_tests
collect-evidence "${evidence_params[@]}" --status "success"
fi