Space Automation est disponible pour tous

Delphine Massenhove

Space Automation

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 ?

JetBrains 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é.

Script d'automatisation

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.

Conteneurs

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.

Étapes séquentielles et parallèles d'Automation

Étapes séquentielles et parallèles

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.
Exécution du code Kotlin

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 des modules de Space

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 :

Intégration d'Automation avec Gradle

Les résultats des tests s’affichent sur la page de vue d’ensemble du job :

Intégration d'Automation

Vous pouvez utiliser l’étape Docker pour créer et pousser des images Docker :

Intégration d'Automation avec 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.

Automatisation avec 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.

Plugin IntelliJ IDEA pour Automation

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.

Intégration des Packages de Space

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.

Conteneurs d'Automation

Comme pour tout autre conteneur, vous pouvez afficher les journaux du conteneur de services :

Conteneurs de services d'Automation

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.

partage de fichiers automation

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 :

paramètre d'Automation

Les secrets et les paramètres sont facilement accessibles à partir de .space.kts en utilisant des valeurs clés.

Secrets et paramètres d'Automation

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.

crédits space automation

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.

Webinaire Space Automation CI CD

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

S'abonner

S'abonner au blog de Space