Space
The intelligent code collaboration platform
Space is pivoting to SpaceCode, focused on Git hosting and code reviews. Learn more →
Space Automation est disponible pour tous
Space Automation, l’une des fonctionnalités les plus attendues et plébiscitées dans le cadre du Programme d’Accès Anticipé à Space, est maintenant disponible pour tous les utilisateurs Beta.
Automation vous permet d’exécuter les activités d’intégration et de livraison continues dans Space afin de construire, tester et déployer votre projet.
Space est accessible en version bêta gratuitement. Tous ses utilisateurs bénéficient du forfait Organization, qui offre 10 000 crédits d’intégration continue par mois. Si vous n’avez pas encore rejoint le programme bêta, inscrivez-vous gratuitement à Space pour commencez à l’utiliser dès aujourd’hui.
Nous avons préparé une présentation du système pour vous aider à vous lancer dans l’automatisation d’un large éventail de tâches et dans l’organisation de vos pipelines de livraison continue.
Sans plus tarder, parlons d’Automation !
Qu’est-ce que Space Automation ?
Automation est le module de Space responsable de toutes les activités d’intégration et de livraison continues dans le système. Vous pouvez construire, tester et déployer un projet avec le fichier de script stocké dans son référentiel.
Configuration en tant que code
Les scripts sont le seul moyen de configurer Automation. L’interface utilisateur d’Automation que vous voyez dans Space est utilisée uniquement pour visualiser les résultats des scripts : journaux, tests, artefacts, etc. Ils sont écrits dans un DSL (langage spécifique au domaine) spécial basé sur Kotlin.
Script d’automatisation
Le script d’automatisation doit être stocké dans le fichier .space.kts dans le répertoire racine d’un projet. Pour modifier .space.kts, vous pouvez utiliser l’éditeur de code Web de Space ou IntelliJ IDEA si le plugin Space est installé.
DSL basé sur Kotlin
Le DSL Space Automation est basé sur Kotlin (YAML est prévu), ce qui présente de nombreux avantages –vous pouvez utiliser des types de données et structures de langage Kotlin directement dans votre script d’automatisation.
Isolement dans une branche
La configuration d’Automation se faisant via le fichier de script, elle est entièrement isolée au sein d’une branche Git. Cela rend l’expérimentation des scripts d’Automation très simple : il suffit de créer une nouvelle branche, d’ajouter le fichier .space.kts et vous pouvez commencer.
Conteneurs
Toutes les activités d’Automation s’exécutent dans des conteneurs Docker basés sur Linux. Les blocs constitutifs des scripts d’Automation sont les jobs. Un job permet d’exécuter des étapes indépendantes dans des conteneurs. Dans notre exemple, le job ne comporte qu’une seule étape : un conteneur Ubuntu qui exécute un script shell.
Les résultats de l’exécution du job et les journaux du conteneur sont affichés sur la page Jobs du projet :
Étapes séquentielles et parallèles
Vous pouvez exécuter des étapes à l’intérieur de conteneurs de façon séquentielle ou en parallèle. Cela vous permet d’exécuter un graphique de conteneurs.
Exécution du code Kotlin
Le DSL basé sur Kotlin vous permet d’implémenter une logique complexe dans vos scripts de build. Pour cela, vous pouvez utiliser un élément kotlinScript spécial dans un conteneur.
Intégration avec les autres modules de Space
.space.kts a accès au client API HTTP Space basé sur Kotlin. Tous les modules de Space ayant des API, vous pouvez communiquer avec l’ensemble de Space :
- api.space().packages
- api.space().projects
- api.space().todo
- api.space().blogs
- et ainsi de suite.
Intégration avec Gradle, Docker et d’autres outils
Nous fournissons des types d’étapes supplémentaires ainsi que des API pour vous permettre de travailler avec des outils externes. Vous pouvez par exemple utiliser les étapes gradle ou gradlew pour simplifier les builds Gradle :
Les résultats des tests s’affichent sur la page de vue d’ensemble du job :
Vous pouvez utiliser l’étape Docker pour créer et pousser des images Docker :
Nous prévoyons d’ajouter la prise en charge de .NET, npm, MVN et d’autres outils plus tard.
Utilisation de bibliothèques externes
Un autre avantage de l’utilisation de Kotlin pour vos scripts Automation : est la possibilité de référencer des bibliothèques externes.
Plugin IntelliJ IDEA
Le recours au plugin Space pour IntelliJ IDEA facilite l’écriture de scripts complexes utilisant les API de Space. En plus de vérifier vos scripts Automation, le plugin Space fournit la saisie semi-automatique du code.
Intégration avec Space Packages
Space Packages est le gestionnaire de référentiels universel intégré à Space. Il prend en charge plusieurs types de référentiels : registres de conteneurs, référentiels Maven, flux NuGet et registres npm. Automation fournit une intégration directe avec les Packages :
- Vos scripts Automation ne nécessitent pas d’authentification.
- Une version de package peut être automatiquement modifiée en fonction du numéro d’exécution du job.
Conteneurs de services
À l’intérieur des conteneurs, vous pouvez exécuter des conteneurs de services supplémentaires qui fournissent des services accessibles au réseau, tels que MySQL, Redis, Elastic, etc.
Comme pour tout autre conteneur, vous pouvez afficher les journaux du conteneur de services :
Partage de fichiers
Vous pouvez utiliser un disque partagé pour transmettre des artefacts de build entre les étapes. Un partage de fichiers consiste en un volume spécial disponible pour chaque conteneur auquel vous pouvez accéder directement ou à l’aide d’une API.
Secrets et paramètres
Une partie importante de tout système CI/CD est la capacité de stocker en toute sécurité les informations d’identification à diverses ressources externes, comme un référentiel de packages externe par exemple. Automation fournit son propre stockage pour les secrets et les paramètres à cette fin :
Les secrets et les paramètres sont facilement accessibles à partir de .space.kts en utilisant des valeurs clés.
Utilisation de crédits
Chaque forfait d’abonnement à JetBrains Space comprend un certain nombre de crédits CI, une monnaie artificielle que vous dépensez lorsque vous exécutez vos builds Automation. Un crédit CI équivaut à une minute de travail d’un conteneur Linux par défaut (2 vCPU, 7 800 Mio de RAM). Chaque mois, vos crédits CI sont restaurés. Chaque forfait d’abonnement offre également un certain nombre de crédits de Réserve – votre stock de crédits CI de sécurité. Une fois que vous avez dépensé tous vos crédits CI mensuels, Automation désactive les déclencheurs automatiques de jobs dans tous les référentiels (par exemple, un déclencheur activé par ‘push git’). Lorsque les déclencheurs automatiques de jobs sont désactivés, vous ne pouvez plus déclencher un job que manuellement en l’exécutant sur la page Jobs. Les crédits de réserve seront utilisés pour payer l’exécution de ces jobs.
C’est tout pour aujourd’hui. Nous espérons que cet article vous a donné un bon aperçu du concept d’Automation dans Space. N’hésitez pas à nous poser toutes vos questions ou à partager vos réflexions dans les commentaires.
Rejoignez-nous pour un webinaire gratuit, Introduction to Automation: CI/CD in Space, le 6 octobre 2020 à 16h00 CEST. Au cours de cette session, Maarten Balliauw, Developer Advocate chez JetBrains, effectuera une démo en direct des fonctionnalités d’Automation, et Evgeniy Koshkin, Reponsable de l’équipe Automation, animera la session de questions-réponses.
Nous parlerons du DSL d’Automation, de l’exécution de builds, de la publication dans le registre des packages Space, des secrets et les paramètres, et bien d’autres choses ! Et pour finir en beauté, nous prévoyons une session de questions-réponses plus longue. Réservez votre place dès maintenant !
L’Équipe JetBrains
— The Drive To Develop
Auteur de l’article original en anglais : Alexandra Charikova