Cette page explique comment déployer un nouveau service ou une nouvelle révision de service sur Cloud Run directement à partir du code source à l'aide d'une seule commande de gcloud CLI, gcloud run deploy
avec l'option --source
. Pour obtenir un exemple de déploiement d'un service Hello World, consultez la section Déployer à partir de guides de démarrage rapides sources.
En arrière-plan, cette commande utilise les packs de création Google Cloud et Cloud Build pour créer automatiquement des images de conteneurs à partir du code source sans avoir à installer Docker sur votre machine ni configurer des packs de création ou Cloud Build. Par défaut, Cloud Run utilise le type de machine par défaut fourni par Cloud Build.
L'exécution de gcloud run deploy --source
élimine la nécessité d'exécuter également la commande gcloud builds submit
.
Notez que les déploiements sources utilisent Artifact Registry pour stocker les conteneurs créés. Si votre projet ne dispose pas encore d'un dépôt Artifact Registry portant le nom cloud-run-source-deploy
dans la région où vous effectuez le déploiement, cette fonctionnalité crée automatiquement un dépôt Artifact Registry nommé cloud-run-source-deploy
.
Si un Dockerfile est présent dans le répertoire du code source, le code source importé est créé à l'aide de ce Dockerfile. Si le Dockerfile n'est pas présent dans le répertoire du code source, les packs de création Google Cloud détectent automatiquement le langage que vous utilisez et extrait les dépendances du code pour créer une image de conteneur prête pour la production, à l'aide d'une image de base sécurisée et gérée par Google
Par défaut, les correctifs de sécurité ne sont appliqués que lorsque le service Cloud Run est déployé. Lorsque vous activez les mises à jour de sécurité automatiques pour un service, celui-ci reçoit automatiquement des correctifs sans temps d'arrêt. En savoir plus sur la configuration des mises à jour de sécuritéLangues disponibles
En plus des sources avec un Dockerfile, le déploiement à partir de la source accepte les langages suivants à l'aide des buildpacks de Google Cloud :
Environnement d'exécution | Déploiement de la source | Configuration du buildpack |
---|---|---|
Go | Déployer un service Go | Configurer les buildpacks Go |
Node.js | Déployer un service Node.js | Configurer les buildpacks Node.js |
Python | Déployer un service Python | Configurer les buildpacks Python |
Java (y compris Kotlin, Groovy et Scala) |
Déployer un service Java | Configurer les buildpacks Java |
.NET | Déployer un service .NET | Configurer les buildpacks .NET |
Ruby | Déployer un service Ruby | Configurer les buildpacks Ruby |
PHP | Déployer un service PHP | Configurer les buildpacks PHP |
Limitations de cette fonctionnalité
- La fonctionnalité de déploiement à partir de la source utilise Artifact Registry et Cloud Build. Elle n'est donc disponible que dans les régions compatibles avec Artifact Registry et Cloud Build.
- Le déploiement à partir de la source est une fonctionnalité pratique qui ne permet pas une personnalisation complète de la compilation. Pour mieux contrôler l'image de conteneur, créez-la à l'aide de Cloud Build, par exemple en utilisant
gcloud builds submit
, puis déployez l'image de conteneur en utilisant, par exemple,gcloud run deploy --image
. - Le déploiement d'une source avec les packs de création Google Cloud définit la date de la dernière modification des fichiers sources sur le 1er janvier 1980. Il s'agit du comportement par défaut des packs de création, qui est conçu pour être compatible avec les compilations reproductibles. Selon votre framework de langage, cela peut affecter la mise en cache des fichiers statiques côté navigateur. Si votre application est affectée par cela, nous vous recommandons de désactiver les en-têtes HTTP
etag
etLast-Modified
dans votre application. - Le déploiement à partir de la source avec les packs de création de Google Cloud utilise toujours
gcr.io/buildpacks/builder:latest
. Si votre configuration de langage ou de système d'exploitation préférée n'est pas disponible danslatest
, utilisez un compilateur spécifique pour créer une image d'application à l'aide de votre compilateur préféré. Vous pouvez déployer votre service à partir de la source à l'aide de Kotlin et d'autres langages JVM tels que Java. La langue que vous utilisez doit respecter les règles suivantes :
- Vous pouvez compiler l'application à l'aide de Maven ou de Gradle.
- Le fichier de compilation contient tous les plug-ins requis pour produire les classes.
Avant de commencer
- Assurez-vous d'avoir configuré un nouveau projet pour Cloud Run, comme décrit sur la page de configuration.
Si vous êtes soumis à une règle d'administration de restriction de domaine limitant les appels non authentifiés pour votre projet, vous devez accéder au service déployé comme décrit dans la section Tester les services privés.
-
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Une fois l'API Cloud Run Admin activée, le compte de service Compute Engine par défaut est créé automatiquement.
Rôles requis
Vous ou votre administrateur devez attribuer les rôles IAM suivants au compte déployeur et au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte déployeur
Pour obtenir les autorisations nécessaires pour compiler et déployer à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur de source Cloud Run (
roles/run.sourceDeveloper
) sur votre projet - Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer
) sur votre projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service Cloud Run
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder
) au compte de service Compute Engine par défaut sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/run.builder
Remplacez PROJECT_NUMBER
par le numéro de votre projet Google Cloudet PROJECT_ID
par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.
L'attribution du rôle "Compilateur Cloud Run" au compte de service Compute Engine par défaut prend quelques minutes à se propager.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec des APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Déployer une fonction à partir d'une source
Pour déployer à partir du code source, cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Accédez à votre répertoire source. Le répertoire source utilise un Dockerfile s'il est présent, mais ce n'est pas obligatoire.
Créez et déployez votre service :
gcloud run deploy SERVICE --source .
Remplacez
SERVICE
par le nom souhaité pour votre service.Si votre code source utilise l'un des environnements d'exécution de langage compatibles et que vous souhaitez configurer les mises à jour automatiques des images de base pour votre environnement d'exécution, vous pouvez spécifier l'indicateur
--automatic-updates
et l'indicateur--base-image
avec l'image de base de votre service, par exemplenodejs22
.Répondez aux invites pour installer les API requises en répondant
y
lorsque vous y êtes invité. Vous ne devez procéder à cette opération qu'une fois par projet. Répondez aux autres invites en fournissant la plate-forme et la région, si vous n'avez pas défini les paramètres par défaut pour celles-ci, comme décrit sur la page de configuration.Attendez la fin de la compilation et du déploiement. Une fois l'opération terminée, Cloud Run affiche un message de réussite.
Installez la dernière version de la CLI Gemini dans l'un des environnements de développement suivants :
- Terminal
- Cloud Shell
- VS Code avec le mode Agent de Gemini Code Assist (voir l'onglet "VS Code")
Installez l'extension Cloud Run :
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Connectez-vous à la Google Cloud CLI :
gcloud auth login
Configurez les Identifiants par défaut de l'application :
gcloud auth application-default login
Accédez au répertoire de votre code source.
Lancez la CLI Gemini :
gemini
Créez et déployez votre service :
/deploy
- Si vous êtes invité à fournir le projet Google Cloud , saisissez son nom.
- Si vous êtes invité à sélectionner un outil, choisissez
deploy_local_folder
.
Attendez la fin de la compilation et du déploiement. Une fois l'opération terminée, Cloud Run affiche un message de réussite.
Après le déploiement, cette révision de service diffuse 100 % du trafic.
Cloud Code
Pour déployer à partir de la source à l'aide de Cloud Code, consultez les guides IntelliJ et Visual Studio Code.
CLI Gemini
Utilisez la commande /deploy
dans l'outil Gemini CLI pour déployer un service Cloud Run à partir du code source.
Pour utiliser la CLI Gemini avec l'extension Serveur MCP (Model Context Protocol) Cloud Run, procédez comme suit :
VS Code
Pour déployer un service Cloud Run à partir du code source à l'aide de VS Code avec le mode Agent Gemini Code Assist, découvrez comment utiliser la commande /deploy
.
Pour rendre le serveur MCP (Model Context Protocol) Cloud Run disponible en mode Agent Gemini Code Assist, ajoutez la configuration suivante dans votre fichier JSON de paramètres Gemini :
"mcpServers":{ "cloud-run": { "command": "npx", "args": ["-y", "@google-cloud/cloud-run-mcp"] } }
Automatiser la compilation à partir de la source
Pour éviter les modifications non gérées dans la source locale, nous vous recommandons d'effectuer automatiquement le déploiement lorsque des modifications sont envoyées dans votre dépôt Git. Pour vous faciliter la tâche, vous pouvez connecter et configurer le déploiement continu sur votre service Cloud Run. En connectant vos dépôts GitHub à Cloud Run, vous pouvez configurer des compilations et déployer vos dépôts sans écrire de Dockerfile ni créer de fichiers.
Pour configurer des compilations automatiques, configurez l'automatisation comme indiqué sur la page des compilations continues en veillant à choisir l'option permettant de créer la source avec Buildpacks.Étapes suivantes
Après avoir déployé un service Cloud Run, vous pouvez effectuer les opérations suivantes :
- Déploiements progressifs, révisions de rollback, migration du trafic
- Afficher les journaux du service
- Surveiller les performances du service
- Définir les limites de mémoire
- Définir des variables d'environnement
- Changer la simultanéité du service
- Gérer le service
- Gérer les révisions du service
En savoir plus sur les configurations de déploiement de la source :
- Mises à jour automatiques des images de base
- Variables d'environnement de compilation
- Compte de service de compilation
- Pools de nœuds de calcul de compilation
Vous pouvez automatiser la création et le déploiement de vos services Cloud Run avec les déclencheurs Cloud Build :