Insérer la date et l’heure dans un microservice Cloud Run à l’aide de Cloud Build

Publié le jeudi 04 mars 2021
This post thumbnail

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

https://cloud.google.com/sdk/gcloud/reference/run/deploy