Insérer la date et l’heure dans un microservice Cloud Run à l’aide de Cloud Build
Insérer la date et l’heure dans un microservice Cloud Run à l’aide de Cloud Build
Dans l’article précédent, nous avons automatisé le déploiement du projet Cloud Run COVID-19 API à l’aide de Cloud Build.
Dans cet article, nous allons insérer la date et l’heure où le projet a été rebâti et déployé à l’aide de Cloud Build.
Aussitôt qu’un Push sera effectué vers la branche main du référentiel GitHub du projet, le service Google Cloud Build récupérera les fichiers sources, fera les tests, déploiera automatiquement une nouvelle version du microservice sur Cloud Run.
Allons-y.
Récupérer la date et l’heure lors d’un déploiement à l’aide de Cloud Build
Cette première étape consiste à modifier le fichier Yaml qui est utilisé pour déployer le microservice.
On ajoute à l’étape de déploiement les commandes pour récupérer l’heure, la date sous forme de variables d’environnement et les passer lors de la commande gcloud run deploy.
Cela donne le fichier cloudbuild-generer-automatiquement.yml suivant :
steps:
# Build the image
- name: "gcr.io/cloud-builders/docker"
args: ["build", "-t", "gcr.io/$PROJECT_ID/${_SERVICE_NAME}:${SHORT_SHA}", "."]
# Push the image
- name: "gcr.io/cloud-builders/docker"
args: ["push", "gcr.io/$PROJECT_ID/${_SERVICE_NAME}"]
# Insert tag, build date time and deploy the image on Cloud Run
- name: "gcr.io/cloud-builders/gcloud"
entrypoint: bash
args:
- '-c'
- |
export _VERSION_TAG=$([ -z "$TAG_NAME" ] && echo "No Tag")
echo VERSION_TAG : $$_VERSION_TAG
export _BUILD_DATETIME=$(date +"%Y-%m-%d %T")
echo Build Date and Time : $$_BUILD_DATETIME
gcloud run deploy ${_SERVICE_NAME} \
--image gcr.io/$PROJECT_ID/${_SERVICE_NAME}:${SHORT_SHA} \
--region us-central1 \
--platform managed \
--allow-unauthenticated \
--update-env-vars \
VERSION_HASH=${SHORT_SHA},BUILD_DATETIME="$$_BUILD_DATETIME",VERSION_TAG="$$_VERSION_TAG"
Ajouter la date et l’heure au microservice Covid-19-api
Nous allons modifier le code de la fonction qui retourne les données lors de l’appel au point de service /version.
Code du point de service /version du fichier index.js du projet COVID-19 :
...
app.get('/version', async (req, res) => {
res.json({
version_tag: process.env.VERSION_TAG,
version_hash: process.env.VERSION_HASH,
build_datetime: process.env.BUILD_DATETIME,
});
...
});
Elle retournera les données en format JSON contenant un élément build_datetime.
Ansi, il est possible de vérifier si le microservice contient bien la date et l’heure du dernier Build en allant interroger le point de service :
{"version_tag":"No Tag","version_hash":"d9408e7","build_datetime":"2021-03-05 16:34:31"}
Conclusion
Cet article démontre qu’il est relativement simple d’insérer la date et l’heure du dernier Build à un microservice. C’est une bonne pratique d’avoir cette information disponible aisément. Cela permet d'interroger le point de service pour vérifier si nous avons bien la dernière version dans l’environnement où le microservice est déployé.
Références
Article précédent : Déployer automatiquement un service Cloud Run avec Cloud Build
Code source du projet : https://github.com/konato/covid-19-cloud-run-bigquery-api
https://cloud.google.com/build/docs/configuring-builds/substitute-variable-values?hl=fr