Connaissez-vous Cloud Skills Boost (anciennement connu sous le nom de Qwiklabs) ?
Dans cette vidéo, je vous guide à travers les étapes décrites dans Ruby on Rails avec PostgreSQL sur Cloud Run sur le site Web de cloudskillsboost, en rencontrant quelques obstacles en cours de route, et en les corrigeant.
De plus, je vais vous prĂ©senter ma chaĂźne dâoutils particuliĂšre et personnelle, en tant quâancien dĂ©veloppeur bash/perl, elle pourrait donc vous paraĂźtre particuliĂšre.
Si vous ĂȘtes impatient de commencer, voici mon code final sur GitHub lien vers le code et le Codelab RoR lien vers le codelab.
Voici ma vidéo sur Rails !
Ă propos de Skillsboost
Skillsboost (anciennement connu sous le nom de Qwiklabs) est un moyen de vous former Ă Google Cloud en exĂ©cutant des âlabsâ. Ces labs sont limitĂ©s dans le temps, Google crĂ©e toutes les ressources pour vous et les supprime Ă la fin du lab.
Pour rĂ©aliser les labs, vous disposez dâun systĂšme de crĂ©dits. Vous pouvez payer en $$ pour les obtenir, ou vous pouvez en obtenir gratuitement en vous inscrivant simplement Ă notre programme Innovator Champion (oui, entiĂšrement gratuit !). Cela devrait vous permettre de rĂ©aliser environ 10 labs gratuitement, Ă©galement avec Gemini (je les ai essayĂ©s, ils sont trĂšs amusants !).
Notre Codelab se trouve ici : https://www.cloudskillsboost.google/focuses/20047
Lâapproche de Riccardo pour Skillsboost
Il existe plusieurs façons dâexĂ©cuter un Lab, mais jâen vois principalement deux :
- Vous exĂ©cutez le code dans le Cloud. Câest la mĂ©thode la plus simple, celle que tout le monde utilise. Vous utilisez une combinaison de Cloud Shell et de Cloud Editor (si vim ne vous convient pas).
- Vous exĂ©cutez le code localement. Câest un peu plus difficile Ă mettre en place, mais vous pouvez ensuite conserver tout votre code utile localement pour une utilisation/un piratage ultĂ©rieur. Jâai passĂ© quelques annĂ©es Ă Ă©crire une chaĂźne dâoutils pour cela, en utilisant codelabba et proceed_if_error_matches et dâautres. Comme vous pouvez lâimaginer, je pense ĂȘtre le seul terrien Ă conserver mes scripts codelab quelque part localement. Suis-je en bonne compagnie ? Contactez-moi et dites-moi ce que vous faites diffĂ©remment !
Comme vous pouvez le voir dans ma vidéo, je fais les deux pour vous montrer les deux approches, avec leurs avantages et leurs inconvénients.
Quâest-ce quâun journal de friction ?
Un journal de friction est un document Google Doc dans lequel vous dĂ©crivez par Ă©crit votre expĂ©rience, vos Ă©motions et mĂȘme votre niveau de colĂšre (Ă lâaide de codes couleurs) au dĂ©veloppeur dâun code/de ressources. LâidĂ©e est ensuite de partager votre document avec lâimplĂ©menteur, en y suivant les bogues du code et du document. Mon idĂ©e folle est dâen faire une vidĂ©o !
Ma chaĂźne dâoutils âcodelabbaâ
Le moment est venu dâexpliquer ma chaĂźne dâoutils personnelle. Habituellement, jâai un certain nombre de dĂ©pĂŽts git sous ~/git/
, lâun dâeux Ă©tant Open Source. Bien sĂ»r, je parle de palladius/sakura.
00-init.sh
: Le script dâinitialisation, commun Ă tous mes projets codelabba, il fait rĂ©fĂ©rence Ă des variables dâenvironnement comme PROJECT_ID, REGION et ainsi de suite..envrc
: Ce fichier est alimenté pardirenv
, un outil que mâa suggĂ©rĂ© Rob Edwards et il contient toutes mes variables dâenvironnement. Vous pouvez le considĂ©rer comme la partie hydratation du 00-init et de tout le reste, grĂące aux bibliothĂšques Ruby/Python pour gĂ©rer les fichiers .env*. Jâai Ă©galement fait un effort pour que ce fichier fonctionne immĂ©diatement avec Pulumi (en adoptant les noms de variables dâenvironnement standard de Pulumi) et pour quâil soit aussi compatible que possible avec les codelabs de Google Cloud.proceed_if_error_matches
: Câest le script le plus simple et le plus intelligent que jâaie jamais Ă©crit. Il transforme les scripts bash sĂ©quentiels avecset -euo pipefail
en scripts bash ressemblant Ă Terraform. Imaginez que vous ayez besoin de : (1) crĂ©er un bucket (2) dĂ©finir une LCA sur celui-ci (3) tĂ©lĂ©charger des fichiers sur celui-ci. Il est raisonnable de penser que vous avez trois scripts sĂ©quentiels, qui peuvent Ă©chouer de temps en temps et il vous faut du temps pour corriger chaque ligne. Une fois que vous avez terminĂ©, vous voulez passer Ă la suivante, mais devinez quoi ? Vous ne pouvez pas travailler sur (2) car (1) va commencer Ă Ă©chouer avec un message agaçant du genre âle bucket existe dĂ©jĂ â. Jâai donc pensĂ© : et si je pouvais filtrer UNIQUEMENT certains messages dâerreur, que je capture sous forme de chaĂźnes de caractĂšres ? Câest la raison dâĂȘtre de ce fichier.codelabba.rb
(propriĂ©taire) Il sâagit dâun script ruby que je nâai jamais publiĂ© publiquement. Mais demandez-moi dans les commentaires, et je prendrai peut-ĂȘtre le temps de le nettoyer et de le publier en open source. Il crĂ©e essentiellement un squelette pour mes codelabs, et je lâai inventĂ© la 2Ăšme ou 3Ăšme fois que je faisais un codelab Qwiklab, exactement pour les raisons que jâai Ă©crites ci-dessus.XX-blah-blah.sh
(exemple) Ce sont des scripts Ă exĂ©cuter dans lâordre : 01, 02, 03, ⊠afin quâils vous racontent une histoire. Voyez cela comme un ânotebook python Bashâ. Je sais, câest la phrase la plus profonde que vous allez lire aujourdâhui :)
Code : https://github.com/palladius/20240809-qwiklab-rails-on-gcp
Conclusions
Câest une grande expĂ©rience pour moi ! Ătait-ce une bonne idĂ©e ? Une idĂ©e terrible ? Faites-le moi savoir dans les commentaires !
(Generated by Geminocks: https://github.com/palladius/ricc.rocks/tree/main/gemini prompt_version=1.4)
title: â[TODO] [fr] Level Up Your Rails Game with Cloud Run: A Qwiklabs Deep Diveâ
date: 2024-08-15
layout: single
author: Riccardo Carlesso
read_time: 3
Tags:
- qwiklabs
- cloudrun
- rubyonrails
- devops
- gcp
- googlecloud
- toolchain
- skillsboost
- cloudskillsboost
canonicalURL: https://medium.com/@palladiusbonton/ruby-on-rails-with-postgresql-on-cloud-run-bdaaf0b26e0b
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.