Utiliser un compilateur spécifique

Les compilateurs sont des images versionnées qui contiennent tous les composants nécessaires pour créer un conteneur exécutable. Chaque compilateur utilise une distribution d'OS spécifique comme image de base (Ubuntu 22, par exemple) et est compatible avec plusieurs versions de langage de programmation.

Vous devrez peut-être personnaliser la version du compilateur si vous avez besoin :

  • D'une dépendance spécifique à l'OS disponible uniquement dans une version de compilateur spécifique.
  • D'une version spécifique du langage de programmation qui n'est disponible que dans une version de compilateur spécifique.

Builds locaux

Pour les builds locaux, vous devez avoir installé la CLI Pack et Docker.

Avant de commencer

  1. Installez Docker Community Edition (CE) sur votre poste de travail. Docker est utilisé par pack en tant que générateur d'images OCI.
  2. Installez la CLI Pack.
  3. Installez l'outil de contrôle de source Git pour récupérer l'exemple d'application depuis GitHub.

Spécifier la version du compilateur à l'aide d'un descripteur pack

Vous pouvez ajouter l'indicateur --builder à la commande pack pour spécifier la version du compilateur que vous souhaitez utiliser :

pack build SERVICE_IMAGE_NAME --builder=BUILDER_IMAGE_URL

Remplacez :

  • BUILDER_IMAGE_URL par l'URL du compilateur, par exemple gcr.io/buildpacks/builder:google-24.
  • SERVICE_IMAGE_NAME par le nom que vous avez choisi pour l'image de votre application.

Pour en savoir plus sur la commande pack, consultez la documentation de la CLI.

Spécifier la version du compilateur à l'aide d'un descripteur project.toml

Vous pouvez utiliser un descripteur de projet de buildpacks (project.toml) pour définir le compilateur lors d'une compilation via la commande pack.

  1. Dans le répertoire racine de votre application, créez un fichier nommé project.toml avec la configuration suivante :
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. Compilez votre application en exécutant la commande "pack" :
    pack build SERVICE_IMAGE_NAME

Remplacez les éléments suivants :

  • BUILDER_IMAGE_URL par l'URL du compilateur, par exemple gcr.io/buildpacks/builder:google-24 ;
  • SERVICE_IMAGE_NAME : nom que vous choisissez pour l'image de votre application.

Builds distants

Vous pouvez utiliser un compilateur spécifique avec Cloud Build en ajoutant l'option --pack lorsque vous envoyez votre projet.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  14. Assurez-vous que votre projet Google Cloud a accès à un dépôt d'images de conteneurs.

    Pour configurer l'accès à un dépôt Docker dans Artifact Registry, procédez comme suit :

    1. Créez un dépôt Docker au même emplacement que votre projet Google Cloud .
      gcloud artifacts repositories create REPO_NAME \
      --repository-format=docker \
      --location=REGION --description="DESCRIPTION"
      Remplacer:
      • REPO_NAME par le nom que vous avez choisi pour votre dépôt Docker.
      • REGION par la région la plus proche de l'emplacement de votre projet Google Cloud ou celle du projet.
      • DESCRIPTION par la description de votre choix.

      Par exemple, pour créer un dépôt docker dans us-west2 avec la description "Docker repository", exécutez la commande suivante :

      gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \
      --location=us-west2 --description="Docker repository"
    2. Vérifiez que votre dépôt a bien été créé :
      gcloud artifacts repositories list

      Le nom que vous avez choisi pour votre dépôt Docker doit s'afficher dans la liste.

  15. Compiler l'application à l'aide d'un compilateur spécifique

    1. Utilisez gcloud pour envoyer le code source de l'application à Cloud Build :
      gcloud builds submit --pack builder=BUILDER_IMAGE_URL,image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/SERVICE_IMAGE_NAME

      Remplacez :

      • BUILDER_IMAGE_URL par l'URL du compilateur, par exemple gcr.io/buildpacks/builder:google-24.
      • LOCATION par le nom de la région de votre dépôt de conteneurs. Exemple : us-west2-docker.pkg.dev
      • PROJECT_ID par l'ID de votre projet Google Cloud .
      • REPO_NAME par le nom de votre dépôt Docker.
      • SERVICE_IMAGE_NAME par le nom de l'image de conteneur que vous avez créée.

      Pour en savoir plus sur la commande submit, consultez la documentation Cloud Build.

    2. Vérifiez que l'exemple d'application a bien été publié sur REPO_NAME :
      gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME

      Remplacez :

      • LOCATION par le nom de la région de votre dépôt de conteneurs. Exemple : us-west2-docker.pkg.dev
      • PROJECT_ID par l'ID de votre projet Google Cloud .
      • REPO_NAME par le nom de votre dépôt Docker.

    Déployer à partir d'une source avec Cloud Run

    Vous pouvez utiliser un fichier descripteur de projet de buildpacks, par exemple un fichier project.toml, pour définir le compilateur lors d'un déploiement depuis une source à l'aide de Cloud Run.

    1. Initialisez un fichier project.toml à la racine du répertoire de votre application et collez-y la configuration suivante :
      [build]
      builder = "BUILDER_IMAGE_URL"
    2. Déployez votre application à partir de la source :
      gcloud run deploy --source . SERVICE_IMAGE_NAME

    Remplacez :

    • BUILDER_IMAGE_URL par l'URL du compilateur, par exemple gcr.io/buildpacks/builder:google-24.
    • SERVICE_IMAGE_NAME par le nom de l'image de conteneur que vous avez créée.