Depuis quelques mois, les questions pour déployer depuis GitHub ou GitLab vers Clever Cloud se sont multipliées parmi nos clients. Les deux plateformes diffèrent sensiblement sur le sujet, mais sont celles massivement utilisées pour stocker leur code et collaborer.
Chez Clever Cloud, nous avons à cœur de fournir, une diversité de produits et de fonctionnalités à même de faciliter les déploiements et la maintenance des applications. Nous souhaitons améliorer constamment l’expérience de l’usage de la plateforme. Dans cet article, nous vous détaillons comment nous avons abordé le sujet de la CI/CD pour simplifier celle-ci.
Deux plateformes, des principes communs
Clever Cloud fournit une CLI pour déployer et gérer aussi bien les applications que les add-ons. Jusqu’à présent, nous avons suggéré à nos clients de l’utiliser pour construire leur CI/CD et déployer depuis GitHub ou GitLab. Toutefois, écrire une pipeline pour déployer depuis GitHub ou GitLab, même avec un outil facilitateur comme une CLI pour se connecter à Clever Cloud, est une tâche longue et fastidieuse. Surtout quand on est occupés à développer son application.
En gardant en tête l’un de nos principes fondateurs, à savoir, faciliter un maximum le travail des développeurs et des équipes IT, nous avons commencé à fournir des outils un peu plus poussés de CI/CD pour GitHub et GitLab.
Déployer depuis GitHub : aller plus loin avec des review apps
Les clients utilisant GitHub connaissent déjà notre intégration permettant de déployer depuis cette plateforme. En plus de cette intégration, n’importe qui pouvait utiliser la CLI pour personnaliser sa pipeline grâce aux GitHub Actions. Ces dernières permettent d’automatiser de nombreuses tâches, ce dont nous avons tiré profit sur notre projet public de documentation.
À partir de cette configuration, nous avons mis à disposition un template de workflow permettant de déployer des review apps depuis GitHub vers Clever Cloud. Ce script réalise les actions suivantes :
- Créer et déployer une application sur Clever Cloud depuis la branche où la PR est ouverte, avec un nom de domaine de test ;
- Mettre à jour l’application à chaque nouveau commit ;
- Supprimer l’application à la fermeture de la PR.
Un commentaire poste le lien vers la review app à chaque nouveau déploiement, et annonce la suppression de l’app une fois ce job effectué.
Le script récupère les variables d’environnement et les secrets ajoutés à votre projet sur GitHub. Il est possible d’aller plus loin et d’y ajouter des commandes ; par exemple, pour connecter la review app à une base de données de test, vous pourriez ajouter la commande clever service link-addon <nom-de-l-addon>
.
Ce template est en développement constant pour simplifier progressivement votre flux de travail et le rendre plus efficace. À terme, cette Action devrait fonctionner uniquement avec des inputs plutôt que des lignes de commandes. En attendant, n’hésitez pas à ouvrir une issue sur le projet en fonction de vos besoins.
Déployer depuis GitLab
Nos clients travaillant sur GitLab (en SaasS ou en instance autohébergée) ont également exprimé des besoins similaires pour automatiser leurs déploiements. GitLab diffère sensiblement de GitHub, avec une approche bien plus DIY de la CI/CD, et des configurations différentes. Sur GitLab, aucune variable ne permet la détection de l’état d’une Merge Request (ouverte ou fermée), contrairement à GitHub. Si nous souhaitons lancer un job automatiquement à sa fermeture, à la place, nous devrons utiliser l’état des environnements, et non celui des MR.
Chez Clever Cloud, nous avions déjà différentes pipelines de déploiement en place depuis GitLab pour certains projets. Nous avons unifié et simplifié leur usage en créant des composants de pipelines dans le catalogue CI/CD de GitLab. Les composants remplacent l’ancien catalogue de templates chez GitLab. Ils permettent de construire une pipeline modulaire à l’aide d’inputs. Plus besoin, donc, de personnaliser un fichier de script à la main.
Notre contribution au catalogue comporte actuellement quatre composants :
- Déployer en production ;
- Créer une review app depuis une Merge Request ;
- Mettre à jour la review app ;
- Supprimer la review app.
Les valeurs des inputs ont été prédéfinies pour vous faire économiser du temps lors de l’utilisation. Ces composants peuvent être utilisés aussi bien sur gitlab.com que sur votre instance auto-hébergée. Il n’y a rien à modifier dans le projet, mais quelques configurations de votre instance à vérifier.
Dans les deux cas, nous vous conseillons de tester le déclenchement manuel des composants sur votre projet, dans un premier temps. Nous ajouterons d’autres composants en fonction des besoins de nos clients, et sommes ouverts à vos propositions. Vous pouvez les soumettre directement sur le projet qui leur est dédié.
Le meilleur des deux mondes : Heptapod
Si vous utilisez le fork de l’édition Community de GitLab hébergé par nos soins, vous bénéficierez des avantages d’une offre GitLab as a Service, mais aussi d’un hébergement sur des serveurs européens et managés par une entreprise française.
Le catalogue de pipeline CI/CD est déjà intégré à notre offre Heptapod, vous permettant d’utiliser les composants directement dans votre projet, sans configuration de l’instance à réaliser.
Une pipeline simplifiée
Lors de vos déploiements, Clever Cloud intègre les phases de build, d’installation et de run. Vous n’avez qu’à pousser votre code, le processus est automatique. En incluant le déploiement sur Clever Cloud dans votre pipeline, vous obtiendrez ainsi les logs de votre application lors du déploiement et de ses différentes étapes directement dans la console du runner. Ainsi:
- Vous pouvez vous passer du job de build dans votre pipeline, notre plateforme s’en charge déjà
- Vous pouvez surveiller votre pipeline et ses logs directement depuis GitHub, GitLab ou Heptapod, du début à la fin
Le déploiement échoue ? Pas d’inquiétude, votre app restera en ligne avec le dernier commit poussé avant votre mis à jour. Vos utilisateurs ne le remarquerons même pas.
Les deux projets étant en développement constant, nous prévoyons d’aller encore plus loin dans l’ajout de souplesse et d’agilité à vos processus de déploiements. Nous restons ouverts à vos propositions !