L’astuce consiste en l’utilisation d’une image buildah
officielle, disponible à l’adresse quay.io/buildah/stable
. Je distingue trois étapes dans mon build: la construction de l’image, la récupération de la clef de chiffrement depuis le Secret Manager et enfin, le stockage dans le Container Registry. Ce qui nous donne donc la configuration ci-dessous.
Construction de l’image
# Build image with buildah - id: 'build' name: 'quay.io/buildah/stable' args: ['buildah', 'bud', '-t', 'mon-image', '.'] volumes: - name: varlibcontainers path: '/var/lib/containers'
Récupération de la clef
# Get public key from secret manager - id: 'get public key' name: gcr.io/cloud-builders/gcloud entrypoint: 'bash' args: [ '-c', "gcloud secrets versions access latest --secret=pub-key --format='get(payload.data)' | tr '_-' '/+' | base64 -d > pub-key.pem" ]
Stockage de l’image
# Push image with buildah - id: 'push' name: 'quay.io/buildah/stable' args: ['buildah', 'push', '--encryption-key', 'jwe:./pub-key.pem', 'mon-image', 'eu.gcr.io/$PROJECT_ID/mon-image'] volumes: - name: varlibcontainers path: '/var/lib/containers'
Note
Précisons que ce Cloud Build est déclenché en cas de push sur une branche particulière d’un dépôt git, ici hébergé chez GitHub et connecté à la GCP. Ce dépôt contient bien entendu un fichier Dockerfile
à sa racine.