CI/CD pour le chemin de reconstruction
Lorsque vous devez reconstruire l'environnement qui a produit une version concernée, installez le même Blueprint en CI, épinglé de la même façon sur x86 et arm64.
Où le CI s'inscrit dans la boucle
Le retracage aboutit à un environnement de compilation, pas à un binaire. Une fois qu'une version est liée au Blueprint qui l'a produite, le même Blueprint s'installe en CI, pour que le pipeline qui livre le correctif soit celui qui a construit l'original.
Cela compte des années plus tard. L'environnement d'une version livrée peut être reconstruit à partir de sa version de Blueprint épinglée, chaque téléchargement de chaîne d'outils étant vérifié contre son hash épinglé, puis servir à construire le correctif et à le téléverser comme nouvelle version dans la surveillance.
Épinglez la version à reproduire
Les Blueprints sont versionnés : un pipeline épinglé à un tag exact installe cet environnement et aucun autre. Épinglez la version enregistrée comme provenance de compilation de la version, et la reconstruction part de la même chaîne d'outils qui a produit le binaire concerné.
alloy-provisioner install --docker community/raspberry-pi/raspberry-pi-5:1.0.3Mise en cache entre les exécutions
Les environnements installés peuvent être mis en cache entre les exécutions du pipeline, pour qu'une reconstruction ne retélécharge pas toute la chaîne d'outils à chaque fois.
Stratégie de cache recommandée :
- • Mettre en cache le répertoire d'installation d'alloy-provisioner
- • Mettre en cache les téléchargements de Blueprints par version
- • Invalider le cache uniquement lorsque la version du Blueprint change
Extraits de pipelines d'exemple
GitHub Actions
name: Build Firmware
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install alloy-it Environment
run: |
alloy-provisioner install community/raspberry-pi/raspberry-pi-5:1.0.3
- name: Build Firmware
run: |
source alloy-env.sh
make firmware
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: firmware
path: build/firmware.binGitLab CI
build_firmware:
image: ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- curl -fsSL https://raw.githubusercontent.com/alloy-it/alloy-provisioner-releases/main/scripts/install.sh | bash
- alloy-provisioner install community/raspberry-pi/raspberry-pi-5:1.0.3
- source alloy-env.sh
- make firmware
artifacts:
paths:
- build/firmware.binCe que produit le pipeline
L'image corrigée est la fin du volet reproduire et le début du cycle de surveillance suivant : téléversez-la comme nouvelle version pour que le correctif soit inventorié et scanné comme tout le reste de ce que vous avez mis sur le marché.
Artefacts de compilation
Firmware compilé, binaires et paquets
Paquets
Paquets Debian, RPM ou formats personnalisés
Firmware signé
Images signées cryptographiquement pour le canal de mise à jour exigé par le CRA
Mettre le chemin de reconstruction dans le CI
Commencez avec un produit, ou réservez une revue si vous voulez le même Blueprint dans votre pipeline.