Déployer sur Cloud Run à l'aide de Cloud Build

Cette page explique comment déployer automatiquement des services Cloud Run à l'aide de Cloud Build. Si vous débutez avec Cloud Build, commencez par lire les Guides de démarrage rapide et la Présentation de la configuration des compilations first.

Cloud Run vous permet d'exécuter des images sans état dans un environnement sans serveur. Cloud Build vous permet de déployer des images depuis Artifact Registry vers Cloud Run. Vous pouvez déployer une image existante, créer et déployer une image, ou automatiser le déploiement.

Avant de commencer

  • Activez les API Cloud Build, Cloud Run, Artifact Registry et Resource Manager.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation via le rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer les API

Autorisations requises pour Identity and Access Management

  1. Dans la Google Cloud console, accédez à la page Cloud Build Autorisations :

    Accéder à Autorisations

  2. Pour votre compte de service Cloud Build spécifié ou compte de service Cloud Build par défaut, définissez l'état des rôles suivants sur Activé :

    • Administrateur Cloud Run (roles/run.admin) : permet à Cloud Build de déployer de nouveaux services dans Cloud Run.
    • Administrateur de l'espace de stockage (roles/storage.admin) : permet de lire et d'écrire dans Cloud Storage.
    • Rédacteur Artifact Registry (roles/artifactregistry.writer) : permet d'extraire des images d'Artifact Registry et d'y écrire.
    • Rédacteur de journaux (roles/logging.logWriter) : permet d'écrire des entrées de journal dans Cloud Logging.
    • Éditeur Cloud Build (roles/cloudbuild.builds.editor) : permet à votre compte de service d'exécuter des compilations.

Créer et déployer une image

Cloud Build vous permet de créer une image, de la stocker dans Artifact Registry et de la déployer dans Cloud Run.

Pour créer et déployer une image, procédez comme suit :

  1. Dans le répertoire racine de votre projet, créez un fichier de configuration nommé cloudbuild.yaml.

  2. Dans le fichier de configuration de compilation, ajoutez les étapes de compilation docker pour créer l'image et la transférer dans Artifact Registry, puis ajoutez une étape de compilation gcloud pour appeler la commande gcloud run deploy permettant de déployer l'image sur Cloud Run :

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION']
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
    

    Où :

    • REPOSITORY correspond au nom du dépôt Artifact Registry à partir duquel vous déployez votre image.
    • LOCATION correspond à l'emplacement de votre dépôt Artifact Registry, par exemple us-east1.
    • PROJECT_ID correspond à l'ID du Google Cloud projet dans lequel votre image est stockée.
    • SERVICE_NAME correspond au nom du service Cloud Run.
    • SERVICE_REGION correspond à la région du service Cloud Run que vous déployez.
    • IMAGE correspond au nom de votre image dans Artifact Registry.
  3. Accédez au répertoire racine de votre projet et exécutez la commande suivante, où LOCATION correspond à l'une des régions de compilation compatibles pour exécuter la compilation :

     gcloud builds submit --region=LOCATION
    

Une fois l'opération terminée, un message de réussite s'affiche avec l'URL du service déployé.

Déploiement continu

Vous pouvez automatiser le déploiement de votre logiciel dans Cloud Run en créant des déclencheurs Cloud Build. Vous pouvez configurer vos déclencheurs pour créer et déployer des images chaque fois que vous mettez à jour votre code source.

Pour automatiser votre déploiement, procédez comme suit :

  1. Dans la racine de votre dépôt, ajoutez un fichier de configuration nommé cloudbuild.yaml contenant des étapes permettant de créer l'image, puis transférez-la dans Artifact Registry et appelez la commande gcloud run deploy :

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: 
        - 'run'
        - 'deploy'
        - 'SERVICE_NAME'
        - '--image'
        - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
        - '--region'
        - 'SERVICE_REGION'
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
    

    Où :

    • REPOSITORY correspond au nom du dépôt Artifact Registry à partir duquel vous déployez votre image.
    • LOCATION correspond à l'emplacement de votre dépôt Artifact Registry, par exemple us-east1.
    • PROJECT_ID correspond à l'ID du Google Cloud projet dans lequel votre image est stockée.
    • SERVICE_NAME correspond au nom du service Cloud Run.
    • SERVICE_REGION correspond à la région du service Cloud Run que vous déployez.
    • IMAGE correspond au nom de votre image dans Artifact Registry.

    La variable de substitution $COMMIT_SHA est renseignée par Cloud Build lorsqu'elle est déclenchée à partir d'un dépôt Git.

  2. Créez un déclencheur de compilation à l'aide du fichier de configuration créé à l'étape précédente :

    1. Ouvrez la page Déclencheurs :

      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. Sous Région, sélectionnez la région de votre déclencheur.

    5. Sous Événement, sélectionnez l'événement du dépôt pour démarrer le déclencheur.

    6. Sous Source, sélectionnez le dépôt et le nom de la branche ou du tag qui lancera votre déclencheur. Pour en savoir plus sur la spécification des branches à compiler automatiquement, consultez la page Créer un déclencheur de compilation.

    7. Dans Configuration, sélectionnez Fichier de configuration Cloud Build (YAML ou JSON).

    8. Dans le champ Emplacement du fichier de configuration Cloud Build , saisissez cloudbuild.yaml après la barre oblique (/).

    9. Cliquez sur Créer pour enregistrer le déclencheur de compilation.

    Désormais, lorsque vous transmettez du nouveau code dans votre dépôt, Cloud Build appelle une compilation et déploie le service dans Cloud Run.

Pour en savoir plus sur la création de déclencheurs Cloud Build, consultez la page Créer et gérer des déclencheurs de compilation.

Exemples de code

Voici quelques exemples de dépôts, chacun d'entre eux contenant un exemple d'application et un fichier de configuration de compilation permettant de déployer l'application dans Cloud Run :

  • deploy-prebuilt : exemple de code qui montre comment déployer une image prédéfinie sur Cloud Run.
  • run-example-builddeploy : exemple de code qui explique comment créer et déployer une image sur Cloud Run.

Étape suivante