Déployer depuis le code source

Cette page explique comment déployer de nouveaux services et de nouvelles révisions dans 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. En d'autres termes, la commande unique décrite ci-dessus effectue ce qui nécessite normalement les commandes gcloud builds submit et gcloud run deploy.

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 (chaque fois que vous effectuez un déploiement, tous les correctifs de sécurité nécessaires sont automatiquement récupérés à partir de l'image de base).

Langages acceptés

En plus des sources avec un Dockerfile, le déploiement à partir de la source accepte les langages suivants :

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • .NET
  • Ruby
  • PHP

Découvrez-en davantage sur les versions de langages compatibles avec les packs de création de Google Cloud.

Limitations de cette fonctionnalité

  • La fonctionnalité de déploiement à partir de la source utilise Artifact Registry. Cette fonctionnalité n'est donc disponible que dans les régions compatibles avec Artifact Registry.
  • Le déploiement à partir de la source à l'aide de gcloud run deploy --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 et Last-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 dans latest, utilisez un compilateur spécifique pour créer une image d'application à l'aide de votre compilateur préféré.

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.

Autorisations requises pour déployer

Pour déployer à partir de la source, vous avez besoin d'autorisations pour compiler, stocker l'image de conteneur créée et déployer.

Vous devez disposer de l'un des rôles suivants :

Déploiement

Pour effectuer un déploiement à partir du code source, procédez comme suit :

  1. Accédez à votre répertoire source. Notez que le répertoire source ne nécessite pas de Dockerfile, mais si un Dockerfile est présent, il sera utilisé.

  2. Créez et déployez votre application :

    gcloud run deploy SERVICE --source .

    Remplacez SERVICE par le nom souhaité pour votre service.

    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.

  3. Attendez la fin de la compilation et du déploiement. Une fois ces étapes terminées, un message semblable à celui-ci s'affiche :

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    Après le déploiement, notez que cette révision de service diffuse 100 % du trafic.

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.

Étape suivante

Après avoir déployé un nouveau service, vous pouvez effectuer les opérations suivantes :

Vous pouvez automatiser la création et le déploiement de vos services Cloud Run avec les déclencheurs Cloud Build :