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.

Tableau 1. Caractéristiques de réutilisation des données
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'environnement evidence-reuse-for-failure=1 en plus de evidence-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-period en 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 :

Tableau 3. Types de données probantes et prise en charge de la réutilisation
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