Créer un fichier de configuration de compilation de base

Cette page explique comment créer un fichier de configuration de compilation que vous pouvez utiliser pour démarrer une compilation sur Cloud Build.

Un fichier de configuration de compilation définit les champs nécessaires pour que Cloud Build puisse effectuer des tâches. Vous aurez besoin d'un fichier de configuration de compilation si vous démarrez les compilations à l'aide de l'outil de ligne de commande gcloud ou de déclencheurs de compilation. (Installation de Python groupée). Vous pouvez écrire le fichier de configuration de compilation en utilisant la syntaxe YAML ou JSON.

Avant de commencer

Consultez la page Présentation de la configuration des compilations pour en savoir plus sur les champs que vous pouvez inclure dans un fichier de configuration de compilation.

Créer une configuration de compilation

Les étapes suivantes expliquent comment créer un fichier de configuration de compilation de base. Chacun des champs du fichier de configuration de compilation définit une partie de la tâche que vous souhaitez effectuer. Le seul champ obligatoire du fichier de configuration de compilation est le champ name d'une étape. Tous les autres sont facultatifs.

YAML

  1. Créez le fichier de configuration de compilation. Créez un fichier nommé cloudbuild.yaml dans le répertoire racine de votre projet. Il s'agit de votre fichier de configuration Cloud Build.

  2. Ajoutez le champ Étapes. La section steps du fichier de configuration de compilation contient les étapes de compilation que vous souhaitez que Cloud Build exécute.

    steps:
    
  3. Ajoutez la première étape. Sous steps:, ajoutez un champ name et pointez-le vers une image de conteneur pour exécuter votre tâche. Cloud Build et sa communauté de développeurs fournissent plusieurs images de conteneurs avec des outils et des langages courants installés. Vous pouvez utiliser n'importe laquelle de ces images (également appelées compilateurs Cloud) ou n'importe quelle image accessible au public dans une étape de compilation. Pour plus d'informations sur les différents types d'images de conteneurs que vous pouvez utiliser dans une étape de compilation, consultez Compilateurs Cloud.

    L'extrait de code suivant montre une étape de compilation d'un compilateur docker gcr.io/cloud-builders/docker, qui est une image de conteneur exécutant Docker.

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. Ajoutez des arguments d'étape. Le champ args d'une étape prend une liste d'arguments et la transmet au compilateur référencé par le champ name. Si le compilateur du champ name possède un point d'entrée, args dans la liste est utilisé pour accéder à ce point d'entrée. Si le compilateur du champ name ne possède pas de point d'entrée, le premier élément de args est utilisé comme point d'entrée.

    Dans l'exemple suivant :

    • build est le point d'entrée du compilateur cloud Docker.
    • -t est le tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image correspond au nom de l'image à créer dans Artifact Registry. L'étape de compilation utilise la valeur de remplacement par défaut pour l'ID de projet. Par conséquent, cette valeur est automatiquement remplacée au moment de la compilation.
    • . est l'emplacement du code source, qui indique qu'il se trouve dans le répertoire de travail actuel.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
      
  5. Ajoutez plus d'étapes. Vous pouvez ajouter un nombre illimité d'étapes de compilation à votre fichier de configuration de compilation en incluant des champs name et en les pointant vers des compilateurs Cloud.

    L'extrait de code suivant ajoute deux étapes supplémentaires au fichier de configuration de compilation :

    • Une étape de compilation Docker pour appeler la commande docker push afin de transférer le build d'images de l'étape précédente vers Artifact Registry.
    • une étape de compilation pour la commande du SDK Google Cloud, avec le point d'entrée gcloud spécifié, qui crée une instance Compute Engine à partir de l'image de conteneur dans Artifact Registry. Le champ env est inclus pour spécifier la zone et la région Compute Engine.

       - name: 'gcr.io/cloud-builders/docker'
         args: ['push', '-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
       - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
         entrypoint: 'gcloud'
         args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
         env:
         - 'CLOUDSDK_COMPUTE_REGION=us-central1'
         - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
      
  6. Incluez des champs de configuration de compilation supplémentaires. Vous pouvez configurer davantage le build en incluant des champs tels que machineType, tag ou timeout. Pour obtenir la liste complète des champs que vous pouvez inclure dans le fichier de configuration de compilation, consultez la page Présentation de la configuration des compilations.

    Dans l'exemple suivant, l'étape de compilation gcr.io/google.com/cloudsdktool/cloud-sdk expire au bout de 240 secondes.

      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_REGION=us-central1'
        - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
    

    Consultez l'extrait suivant pour obtenir un exemple complet de fichier de configuration de compilation de base:

    steps:
      # Docker Build
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t',
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage',
               '.']
    
      # Docker Push
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', '-image',
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
    
      # Entrypoint, timeout and environment variables
      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: 'gcloud'
        timeout: 240s
        args: ['compute', 'instances',
               'create-with-container', 'my-vm-name',
               '--container-image',
               'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage']
        env:
          - 'CLOUDSDK_COMPUTE_REGION=us-central1'
          - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'

    Dans cet exemple, les images de conteneur sont stockées dans Artifact Registry. Si votre compilation produit des artefacts non issus de conteneurs, vous pouvez les stocker dans Cloud Storage à l'aide du champ artifacts. Pour obtenir des instructions sur cette opération, consultez la section Stocker des images et des artefacts.

JSON

  1. Créez le fichier de configuration de compilation. Créez un fichier nommé cloudbuild.json dans le répertoire racine de votre projet. Il s'agit de votre fichier de configuration Cloud Build.

  2. Ajoutez le champ Étapes. La section steps du fichier de configuration de compilation contient les étapes de compilation que vous souhaitez que Cloud Build exécute.

    {
       "steps":
    }
    
  3. Ajoutez la première étape. Sous steps:, ajoutez un champ name et pointez-le vers une image de conteneur pour exécuter votre tâche. Cloud Build et sa communauté de développeurs fournissent plusieurs images de conteneurs avec des outils et des langages courants installés. Vous pouvez utiliser n'importe laquelle de ces images (également appelées compilateurs Cloud) ou n'importe quelle image accessible au public dans une étape de compilation. Pour plus d'informations sur les différents types d'images de conteneurs que vous pouvez utiliser dans une étape de compilation, consultez Compilateurs Cloud.

    L'extrait de code suivant montre une étape de compilation d'un compilateur docker gcr.io/cloud-builders/docker, qui est une image de conteneur exécutant Docker.

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker"
          }
       ]
    }
    
  4. Ajoutez des arguments d'étape. Le champ args d'une étape prend une liste d'arguments et la transmet au compilateur référencé par le champ name. Si le compilateur du champ name possède un point d'entrée, args dans la liste est utilisé pour accéder à ce point d'entrée. Si le compilateur du champ name ne possède pas de point d'entrée, le premier élément de args est utilisé comme point d'entrée.

    Dans l'exemple suivant :

    • build est le point d'entrée du compilateur cloud Docker.
    • -t est le tag Docker.
    • us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image correspond au nom de l'image à créer dans Artifact Registry. L'étape de compilation utilise la valeur de remplacement par défaut pour l'ID de projet. Par conséquent, cette valeur est automatiquement remplacée au moment de la compilation.
    • . est l'emplacement du code source, qui indique qu'il se trouve dans le répertoire de travail actuel.

      {
         "steps": [
            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "build",
                  "-t",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                  "."
               ]
            }
         ]
      }
      
  5. Ajoutez plus d'étapes. Vous pouvez ajouter un nombre illimité d'étapes de compilation à votre fichier de configuration de compilation en incluant des champs name et en les pointant vers des compilateurs Cloud.

    L'extrait de code suivant ajoute deux étapes supplémentaires au fichier de configuration de compilation :

    • Une étape de compilation Docker pour appeler la commande docker push afin de transférer le build d'images de l'étape précédente vers Artifact Registry.
    • une étape de compilation pour la commande du SDK Google Cloud, avec le point d'entrée gcloud spécifié, qui crée une instance Compute Engine à partir de l'image de conteneur dans Artifact Registry. Le champ env est inclus pour spécifier la zone et la région Compute Engine.

            {
               "name": "gcr.io/cloud-builders/docker",
               "args": [
                  "push",
                  "-image",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ]
            },
            {
               "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
               "entrypoint": "gcloud",
               "args": [
                  "compute",
                  "instances",
                  "create-with-container",
                  "my-vm-name",
                  "--container-image",
                  "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
               ],
               "env": [
                  "CLOUDSDK_COMPUTE_REGION=us-central1",
                  "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
               ]
            }
      
  6. Incluez des champs de configuration de compilation supplémentaires. Vous pouvez configurer davantage le build en incluant des champs tels que machineType, tag ou timeout. Pour obtenir la liste complète des champs que vous pouvez inclure dans le fichier de configuration de compilation, consultez la page Présentation de la configuration des compilations.

    Dans l'exemple suivant, l'étape de compilation gcr.io/google.com/cloudsdktool/cloud-sdk expire au bout de 240 secondes.

          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
    

    Consultez l'extrait suivant pour obtenir un exemple complet de fichier de configuration de compilation de base:

    {
       "steps": [
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "build",
                "-t",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage",
                "."
             ]
          },
          {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
                "push",
                "-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ]
          },
          {
             "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
             "entrypoint": "gcloud",
             "timeout": "240s",
             "args": [
                "compute",
                "instances",
                "create-with-container",
                "my-vm-name",
                "--container-image",
                "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage"
             ],
             "env": [
                "CLOUDSDK_COMPUTE_REGION=us-central1",
                "CLOUDSDK_COMPUTE_ZONE=us-central1-a"
             ]
          }
       ]
    }
    

    Dans cet exemple, les images de conteneur sont stockées dans Artifact Registry. Si votre compilation produit des artefacts non issus de conteneurs, vous pouvez les stocker dans Cloud Storage à l'aide du champ artifacts. Pour obtenir des instructions sur cette opération, consultez la section Stocker des images et des artefacts.

Étapes suivantes