Déployer un workflow à partir d'un dépôt Git à l'aide de Cloud Build

Vous pouvez utiliser un déclencheur Cloud Build pour démarrer automatiquement une compilation et déployer un workflow à partir d'un dépôt Git. Vous pouvez configurer le déclencheur déployer votre workflow en cas de modification apportée au dépôt source, ou déployer le du flux de travail uniquement lorsque la modification répond à des critères spécifiques.

Cette approche peut vous aider à gérer le cycle de vie de votre déploiement. Par exemple : déployer des modifications dans un workflow dans un environnement de préproduction, exécuter des tests l'environnement, puis déployez ces modifications de manière progressive environnement de production.

Avant de commencer

Ces instructions partent du principe que vous disposez Rôle Éditeur Cloud Build (roles/cloudbuild.builds.editor) dans votre projet Google Cloud peuvent créer des déclencheurs. Vous avez également besoin d'un workflow dans un dépôt source tel que GitHub ou Bitbucket.

Console

  1. Activez les API Cloud Build et Workflows.

    Activer les API

  2. Accordez le rôle Administrateur des workflows (roles/workflows.admin) au compte de service Cloud Build :

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM

    2. Sélectionnez votre projet.

    3. Sur la ligne du compte de service Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com), Cliquez sur Modifier le compte principal.

    4. Cliquez sur Ajouter un autre rôle.

    5. Dans la liste Rôle, sélectionnez Administrateur de workflows. rôle de ressource.

    6. Cliquez sur Enregistrer.

  3. Attribuez le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) du compte de service Compute Engine par défaut au compte de service Cloud Build. Lorsque vous avez activé l'API Compute Engine ; le compte de service Compute Engine par défaut PROJECT_NUMBER-compute@developer.gserviceaccount.com

    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez votre projet.

    3. Cliquez sur l'adresse e-mail du compte de service Compute Engine par défaut. (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

    4. Cliquez sur l'onglet Autorisations.

    5. Cliquez sur le bouton Attribuer d'accès.

    6. Pour ajouter un compte principal, saisissez l'adresse e-mail de votre compte de service (SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com).

    7. Dans la liste Sélectionner un rôle, sélectionnez le rôle Comptes de service > Utilisateur du compte de service.

    8. Cliquez sur Enregistrer.

gcloud

  1. Activez les API Cloud Build et Workflows.

    gcloud services enable cloudbuild.googleapis.com \
      workflows.googleapis.com
    
  2. Accordez le rôle Administrateur des workflows (roles/workflows.admin) au compte de service Cloud Build :

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
      --role=roles/workflows.admin
    

    Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

  3. Attribuez le rôle Utilisateur du compte de service. (roles/iam.serviceAccountUser) sur le service Compute Engine par défaut au compte de service Cloud Build. Une fois que vous avez activé l'API Compute Engine, le compte de service Compute Engine par défaut est PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    gcloud iam service-accounts add-iam-policy-binding \
      $PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
      --role=roles/iam.serviceAccountUser
    

Se connecter à votre dépôt source

Vous devez connecter Cloud Build à votre dépôt source afin que Cloud Build puisse automatiser les builds en réponse aux événements se produisant dans le dépôt.

Pour vous connecter à GitHub ou à Bitbucket, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Déclencheurs de Cloud Build :

    Accéder à la page "Déclencheurs"

  2. Si nécessaire, sélectionnez votre projet et cliquez sur Ouvrir.

  3. Dans la liste Région, sélectionnez la région dans laquelle vous souhaitez créer une région. votre déclencheur.

  4. Cliquez sur Connecter un dépôt.

  5. Sélectionnez le dépôt source dans lequel vous avez stocké votre code source.

    Par exemple: GitHub (application GitHub Cloud Build)

  6. Cliquez sur Continuer.

  7. Authentifiez-vous auprès de votre dépôt source à l'aide de votre nom d'utilisateur et de votre mot de passe.

    Si vous vous connectez à GitHub, vous êtes invité à autoriser le service Application GitHub Cloud Build pour accéder à votre compte GitHub afin de continuer.

  8. Dans la liste des dépôts disponibles, sélectionnez le dépôt de votre choix, puis cliquez sur OK.

    Pour les dépôts externes tels que GitHub et Bitbucket, vous devez disposer d'autorisations de niveau propriétaire pour le projet Google Cloud sur lequel vous travaillez.

  9. Lisez la clause de non-responsabilité et cochez la case correspondante pour indiquer que accepter les conditions.

  10. Cliquez sur Se connecter.

  11. Pour continuer à créer un déclencheur de compilation afin d'automatiser les compilations pour le code source dans le dépôt, cliquez sur Créer un déclencheur. Sinon, cliquez sur OK.

Créer un fichier de configuration Cloud Build

Un fichier de configuration de compilation définit les champs nécessaires à l'utilisation d'un pour démarrer une compilation. Créer le fichier de configuration à la racine de votre projet et écrivez-le en YAML ou JSON.

Par exemple, le fichier de configuration suivant déploie et exécute un workflow de test. utilise ensuite un script pour vérifier le résultat. Si le test réussit, le workflow déployé:

steps:
# Deploy the test workflow with the commit sha
- id: 'deploy-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'deploy', '$_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA', '--source', 'gitops/workflow.yaml']

# Run the test workflow and capture the output
- id: 'run-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c', 'gcloud workflows run $_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA > /workspace/testoutput.log']

# Delete the test workflow
- id: 'delete-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'delete', '$_WORKFLOW_NAME-$BRANCH_NAME-$SHORT_SHA', '--quiet']

# Check the test output
- id: 'check-test-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['gitops/test-$BRANCH_NAME.sh']

# Deploy the workflow
- id: 'deploy-workflow'
  name: 'gcr.io/cloud-builders/gcloud'
  args: ['workflows', 'deploy', '$_WORKFLOW_NAME-$BRANCH_NAME', '--source', 'gitops/workflow.yaml']

$BRANCH_NAME et $SHORT_SHA variables de substitution sont renseignés par Cloud Build lorsqu'une compilation est déclenchée depuis un un dépôt de clés. Ils représentent respectivement le nom de votre branche et les sept premiers caractères de l'ID de commit associé à votre compilation.

La variable de substitution $_WORKFLOW_NAME vous permet de réutiliser un fichier de configuration avec des valeurs de variables différentes. Vous pouvez spécifier sa valeur lorsque vous créez le déclencheur de compilation.

Pour en savoir plus, consultez l'article Créer un fichier de configuration de compilation.

Créer un déclencheur de compilation

Vous pouvez automatiser le déploiement de votre workflow en créant un déclencheur Cloud Build.

Pour créer un déclencheur de compilation pour le fichier de configuration de la section précédente :

  1. Dans la console Google Cloud, accédez à la page Déclencheurs de Cloud Build :

    Accéder à la page "Déclencheurs"

  2. Cliquez sur Créer un déclencheur.

  3. Dans le champ Nom, saisissez le nom du déclencheur.

  4. Dans le champ Événement, sélectionnez l'événement qui appelle votre déclencheur.

    Par exemple: Déployer sur une branche

  5. Dans le champ Source, sélectionnez votre dépôt, ainsi que le nom de la branche ou du tag. qui déclenchera le déclenchement du déclencheur. Vous pouvez utiliser une expression régulière pour spécifier une correspondance avec une branche ou un tag.

    Par exemple: GoogleCloudPlatform/workflows-demos (dépôt) et ^main$|^staging$ (correspond aux branches main et staging)

  6. Développez la section Afficher les filtres par fichiers inclus et ignorés, puis spécifiez votre workflow en tant que fichier inclus afin qu'une compilation soit appelée lorsqu'il est modifié.

    Par exemple : gitops/workflow.yaml

  7. Dans Configuration, sélectionnez Cloud Build (YAML ou JSON) comme type et Repository comme type l'emplacement.

  8. Dans le champ Emplacement du fichier de configuration Cloud Build, spécifiez l'emplacement de votre fichier.

    Par exemple : gitops/cloudbuild.yaml

  9. Si vous souhaitez ajouter une variable de substitution, cliquez sur Ajouter une variable. spécifier une combinaison clé/valeur.

    Par exemple : _WORKFLOW_NAME (variable) et workflows-gitops (valeur)

  10. Pour enregistrer votre déclencheur de compilation, cliquez sur Créer.

Lorsque des modifications sont transmises à un workflow dans la branche spécifiée du dépôt Git, Cloud Build est automatiquement déclenché pour déployer le workflow.

Pour en savoir plus, consultez Créez et gérez des déclencheurs de compilation.

Tester le déclencheur de compilation

Vous pouvez tester le déclencheur de compilation et le fichier de configuration des sections précédentes.

  1. Dans la branche staging du dépôt Git, modifiez workflow.yaml et remplacez Hello World par Bye World :

    main:
      steps:
        - init:
            assign:
              - message: "Hello World"
        - returnResult:
            return: ${message}
  2. Validez la modification et déployez-la dans la branche staging.

    git add workflow.yaml
    git commit -m "Update workflow.yaml in staging"
    git push
    

    Le déclencheur Cloud Build s'exécute et lance une compilation.

  3. Pour vérifier que la compilation a réussi, accédez à la page Historique de compilation dans la console Google Cloud :

    Accéder à l'historique de compilation

    Une fois la compilation terminée, Cloud Build fournit un état général pour la compilation et pour chaque étape de compilation. Pour en savoir plus, consultez la section Afficher les résultats de compilation.

  4. Pour vérifier qu'un workflow de préproduction est déployé, accédez à la page Workflows (Workflows) dans la console Google Cloud :

    Accéder à "Workflows"

    Un workflow nommé workflows-gitops-staging doit s'afficher.

  5. Pour déployer le workflow de préproduction en production, fusionnez la branche staging dans la branche main:

    git checkout main
    git merge staging
    git push
    

    Notez que, comme test-main.sh attend Hello World dans la sortie de le workflow, la compilation échoue:

    RESULT_EXPECTED="result: '\"Hello World\"'"
    RESULT_ACTUAL=$(grep "result: " $FILE)
    if [[ $RESULT_EXPECTED == $RESULT_ACTUAL ]]; then
      echo "Result test passed"
    else
      echo "Result test failed. Expected: $RESULT_EXPECTED Actual: $RESULT_ACTUAL"; exit 1;
    fi
  6. Pour déployer un workflow de production, dans la branche staging, modifiez à nouveau workflow.yaml et rétablissez la chaîne Hello World.

  7. Validez et déployez la modification dans la branche staging, puis fusionnez le staging à la branche main.

  8. Pour vérifier qu'un workflow de production est déployé, accédez à la console Google Cloud : accédez à la page Workflows:

    Accéder à "Workflows"

    Un workflow nommé workflows-gitops-main doit s'afficher.

Étape suivante