Cette page a été traduite par l'API Cloud Translation.
Switch to English

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 des compilations à l'aide de l'outil de ligne de commande gcloud ou de déclencheurs de compilation. Vous pouvez écrire le fichier de configuration de compilation en utilisant la syntaxe YAML ou JSON.

Avant de commencer

Créer une configuration de compilation

Les étapes suivantes expliquent comment créer un fichier de configuration de compilation simple. Chacun des champs du fichier de configuration définit une partie de la tâche que vous souhaitez exécuter. Le seul champ obligatoire du fichier de configuration de compilation est le champ name d'une étape. Tous les autres champs 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 de compilation 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 dans lesquelles sont installés des outils et langages communs. 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 dispose d'un point d'entrée, les champs args de la liste sont utilisés pour accéder à ce point d'entrée. Si le compilateur du champ name ne dispose pas de point d'entrée, le premier élément des champs 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.
    • gcr.io/my-project/my-image est le nom de l'image à compiler.
    • . est l'emplacement du code source.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      
  5. Incluez tous les champs supplémentaires pour l'étape. Vous pouvez ajouter d'autres champs à votre étape de compilation pour la configurer, tels que des variables d'environnement et des répertoires de travail. Pour obtenir une description de tous les champs que vous pouvez inclure dans une étape de compilation, consultez la section Étapes de compilation.

    Dans l'exemple suivant, le champ timeout est inclus pour spécifier que l'étape docker doit avoir expiré après 500 secondes :

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    
  6. 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 d'envoyer la compilation de l'image de l'étape précédente vers Container Registry.
    • Une étape de compilation kubectl pour appeler la commande kubectl set image, qui déploie l'image sur un cluster Kubernetes Engine. Le champ env est inclus pour définir la zone Compute Engine et le cluster Kubernetes Engine.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      
  7. Incluez une configuration de compilation supplémentaire. Vous pouvez continuer de configurer la compilation en incluant des champs tels que machineType et tags. Pour obtenir la liste complète des champs que vous pouvez inclure dans le fichier de configuration de compilation, consultez la Présentation de la configuration des compilations.

    L'exemple suivant ajoute les champs suivants à la compilation :

    • machineType qui spécifie la taille de la machine virtuelle qui exécute la compilation.
    • timeout qui spécifie le délai au terme duquel la compilation arrive à expiration.
    • tags pour annoter la compilation.

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      options:
          machineType: 'N1_HIGHCPU_8'
      timeout: 660s
      tags: ['mytag1', 'mytag2']
      
  8. Stockez les images et les artefacts compilés. Si votre compilation génère des images de conteneurs, vous pouvez choisir de les stocker dans Container Registry. Vous pouvez le faire à l'aide du champ images.

    L'exemple suivant stocke l'image compilée dans l'étape Docker dans Container Registry :

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/my-project/my-image']
    - name: 'gcr.io/cloud-builders/kubectl'
      args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
      env:
      - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
      - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
    options:
        machineType: 'N1_HIGHCPU_8'
    timeout: 660s
    tags: ['mytag1', 'mytag2']
    images: ['gcr.io/my-project/myimage']
    

    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 de compilation Cloud Build.

  2. Ajoutez le champ Étapes. La section steps du fichier de configuration 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 dans lesquelles sont installés des outils et langages communs. 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 dispose d'un point d'entrée, les champs args de la liste sont utilisés pour accéder à ce point d'entrée. Si le compilateur du champ name ne dispose pas de point d'entrée, le premier élément des champs 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.
    • gcr.io/my-project/my-image est le nom de l'image à compiler.
    • . est l'emplacement du code source.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ]
          }
          ]
      }
      
  5. Incluez tous les champs supplémentaires pour l'étape. Vous pouvez ajouter d'autres champs à votre étape de compilation pour la configurer, tels que des variables d'environnement et des répertoires de travail. Pour obtenir une description de tous les champs que vous pouvez inclure dans une étape de compilation, consultez la section Étapes de compilation.

    Dans l'exemple suivant, le champ timeout est inclus pour spécifier que l'étape docker doit avoir expiré après 500 secondes :

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        }
        ]
    }
    
  6. 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" supplémentaires 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 d'envoyer la compilation de l'image de l'étape précédente vers Container Registry.
    • Une étape de compilation kubectl pour appeler la commande kubectl set image, qui déploie l'image sur un cluster Kubernetes Engine. Le champ env est inclus pour définir la zone Compute Engine et le cluster Kubernetes Engine.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ]
      }
      
  7. Incluez une configuration de compilation supplémentaire. Vous pouvez continuer de configurer la compilation en incluant des champs tels que machineType et tags. Pour obtenir la liste complète des champs que vous pouvez inclure dans le fichier de configuration de compilation, consultez la Présentation de la configuration des compilations.

    L'exemple suivant ajoute les champs suivants à la compilation :

    • machineType qui spécifie la taille de la machine virtuelle qui exécute la compilation.
    • timeout qui spécifie le délai au terme duquel la compilation arrive à expiration.
    • tags pour annoter la compilation.

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ],
          "options": {
              "machineType": "N1_HIGHCPU_8"
          },
          "timeout": "660s",
          "tags": [
              "mytag1",
              "mytag2"
          ]
      }
      
  8. Stockez les images et les artefacts compilés. Si votre compilation génère des images de conteneurs, vous pouvez choisir de les stocker dans Container Registry. Vous pouvez le faire à l'aide du champ images.

    L'exemple suivant stocke l'image compilée dans l'étape Docker dans Container Registry :

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        },
        {
                "name": "gcr.io/cloud-builders/docker",
                "args": [
                    "push",
                    "gcr.io/my-project/my-image",
                ],
        },
        {
            "name": "gcr.io/cloud-builders/kubectl",
            "args": [
                "set",
                "image",
                "deployment/my-deployment",
                "my-container=gcr.io/my-project/my-image"
            ],
            "env": [
                "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
            ]
        }
        ],
        "options": {
            "machineType": "N1_HIGHCPU_8"
        },
        "timeout": "660s",
        "tags": [
            "mytag1",
            "mytag2"
        ],
        "images": [
            "gcr.io/my-project/myimage"
        ]
    }
    

    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