Documentation
Préparer une étape de cache Buildx
Bientôt disponible. Exemple prévu, pas encore offert en production.
Avant de commencer
Parcours prévu : le cache Docker n’est pas offert en production. Cet exemple exige un Dockerfile et la livraison future d’un cache autorisé. Enregistrer une préférence n’active pas le cache. Sans RZV_DOCKER_CACHE_DIR, l’exemple construit sans cache.
Exemple prévu
steps:
- name: Build with local layer cache
shell: bash
run: |
set -euo pipefail
cache="${RZV_DOCKER_CACHE_DIR:-}"
builder="rzv-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
docker buildx create --name "$builder" --driver docker-container
trap 'docker buildx rm --force "$builder"' EXIT
args=()
if [[ -n "$cache" ]]; then
rm -rf -- "$cache/next"
args+=(--cache-to "type=local,dest=$cache/next,mode=max")
if [[ -f "$cache/current/index.json" ]]; then
args+=(--cache-from "type=local,src=$cache/current")
fi
fi
docker buildx build --builder "$builder" --progress=plain \
"${args[@]}" \
--load --tag example:ci .
if [[ -n "$cache" ]]; then
rm -rf -- "$cache/current"
mv -- "$cache/next" "$cache/current"
fiVérifier et protéger le travail
Lorsque le cache sera offert, répétez une construction inchangée sur la même référence de confiance et le même hôte, puis examinez la sortie CACHED. Les entrées modifiées sont reconstruites. Un autre hôte ou l’éviction donne parfois une construction sans cache. La conception tient les demandes de tirage issues de forks et les autres tâches non fiables à l’écart de tout cache lu par les constructions de confiance. Faites un seul export par tâche. Aucun gain de vitesse ni réemploi entre hôtes n’est promis. Aucun prix n’a été annoncé.