Pour un rendu optimal, activez JavaScript

🇫🇷 ♊ [Geminocks] Configuration d'un déclencheur ⬣ Cloud Build avec 🧹Pulumi en 🐍 Python

 ·  ☕ 3 min de lecture

L’article original ici : https://medium.com/google-cloud/setting-cloudbuild-with-pulumi-in-python-330e8b54b2cf

TODO(7feb23): ajouter cette vidéo en tant que vidéo intégrée : https://www.youtube.com/watch?v=5jhWVNN8P_M (créée le 6feb23)

Il y a quelques semaines, je suis tombé amoureux de Pulumi. Il a tout ce que j’attendais de Terraform : facile à configurer, gestion de configuration facile, une interface utilisateur agréable et gratuite, et surtout… la prise en charge de plusieurs langages ! Pulumi est la meilleure invention après la pizza Buffalo et n’a qu’un seul problème… pas de prise en charge de Ruby :/

Quoi qu’il en soit, je suis tellement amoureux de ⬣ GCP (qui se trouve à payer mon salaire, je dois l’admettre), Cloud Build, Cloud Deploy, et en général des pipelines CI/CD sur Google Cloud que je voulais l’essayer. En cherchant sur Google “Cloud Build Pulumi”, je suis tombé sur ce bel article pour JavaScript, qui n’est pas dans mes cordes.

Le code

Mon code est ici : https://github.com/palladius/pulumi/tree/main/examples/python-gcp-cloudbuild-auto-trigger

Remarque : 👍 Le code est enfin compilé correctement. Youpi !

cb-trigger-list

Qu’est-ce que ce code a de si spécial ?

Le code permet à tout projet Pulumi que vous pourriez avoir sur GCP (en Python 🐍) de configurer un déclencheur pour se mettre à jour automatiquement. Un push vers le dépôt git déclenchera un travail de construction qui, s’il réussit, se connectera en tant que vous-même à Pulumi et lancera une mise à jour avec le nouveau code.

Ainsi, si, par exemple, vous validez une modification qui ajoute un bucket GCS au code, dans quelques minutes, ce bucket GCS sera créé et le fichier README.md sera mis à jour avec les paramètres du constructeur :

cb-trigger-list
En gras, vous pouvez voir 3 paramètres mis à jour par Cloud Build lui-même !

Mon code prend en charge Github (tel quel) et Bitbucket (code à 99% là car il fonctionnait en premier !) pour le moment.

J’ai également personnalisé le message selon l’article de Laura, en ajoutant un “[construit avec Cloud Build]” au message git (“slash N fix”, dans ce cas) :

Voir sur le site Web de Pulumi

Que signifie Pulumi ?

J’ai essayé Google Translate, il semble que cela puisse signifier balai (🧹) en hawaïen ou en birman (🇲🇲, maintenant Myanmar). D’ici là, j’utiliserai le premier emoji, jusqu’à ce que quelqu’un me prouve le contraire.

Edit : mon ami Aaron de Pulumi confirme le balai et pointe vers cet article.

Prochaines étapes

Mon 📝 pour l’avenir comprend :

  • Avoir un réglage correct du mot de passe/état sur GCP via HSM ou GCS.
  • Transformer en un module afin que, quel que soit le projet Pulumi que vous pourriez avoir, vous puissiez simplement appeler ce code avec 4 à 5 variables (utilisateur github, dépôt github, répertoire de construction Pulumi, informations d’identification, ..). Je dois encore voir si cela est viable également entre les langages (non🐍).

Références

Code original (Cloud Build + Node.js) : https://www.pulumi.com/docs/guides/continuous-delivery/google-cloud-build/

Mon code (python) : https://github.com/palladius/pulumi/tree/main/examples/python-gcp-cloudbuild-auto-trigger

(Generated by Geminocks: https://github.com/palladius/ricc.rocks/tree/main/gemini prompt_version=1.4)


title: “[TODO] [fr] \U0001F4A6 Setting a ⬣ Cloud Build trigger with \U0001F9F9Pulumi
in \U0001F40D Python”
date: 2022-09-22 21:17:43.000000000 +01:00
draft: false
tags:

  • symlink
  • GCP
  • pulumi
  • CloudBuild
  • Medium
    canonicalURL: https://medium.com/google-cloud/setting-cloudbuild-with-pulumi-in-python-330e8b54b2cf
    featured_image: “/images/gohugo-default-sample-hero-image.jpg”
    image: “/images/mtg-clone.jpg”
    geminock:
    :alter_front_matter_version: ‘1.0’
    🎶 Riccardo - todo make this variable per extension and calla proper class
    to get it. So you can have a single thingie for Main picture, and then transform
    it for all extensions.

Generated by Geminock v.1.9 - matter_hash_to_str()

Note this operation might have removed all previous comments. Sorry.

If Riccardo wants to edit this, code is in: /Users/ricc/git/ricc.rocks/gemini/lib/gemini/translator.rb


Partagez

Riccardo
RÉDIGÉ PAR
Riccardo
Developer Advocate, Google Cloud