Article
· Mars 8, 2023 7m de lecture

Dockerfile et ses amis ou Comment exécuter et collaborer à des projets ObjectScript sur InterSystems IRIS

Il s'agit d'un modèle de base pour un environnement de développement permettant de travailler avec ObjectScript dans InterSystems IRIS. Il vous aide à éditer, compiler, commettre/pousser, déboguer et tester votre code ObjectScript. Il aide également à conditionner votre application en tant que module installable avec IPM. Le modèle est compatible avec Embedded Python.

Description

Ce référentiel fournit un environnement de développement prêt à l'emploi pour coder de manière productive avec ObjectScript d'InterSystems. Ce modèle:

  • Exécute la version communautaire Community Edition d'IRIS d'InterSystems dans un conteneur docker.
  • Crée un nouvel espace de noms et une nouvelle base de données IRISAPP
  • Charge le code ObjectScript dans la base de données IRISAPP à l'aide du gestionnaire Package Manager.
  • Favorise le développement avec le paradigme 'Package First' (le paquet d'abord). Regardez la vidéo
  • Fournit un environnement de tests unitaires : exemples de tests unitaires, activation de modules de tests.
  • Prêt pour le développement de python intégré : Les variables ENV sont configurées, le service CallIn est activé, tous les modules du fichier requirements.txt seront installés lors de la construction du docker.

Utilisation

Démarrez un nouveau référentiel de développement avec Intersystems IRIS en l'utilisant comme modèle. Une fois que vous aurez cloné le nouveau dépôt sur votre ordinateur portable et que vous aurez ouvert VSCode (avec le paquet d'extension  InterSystems ObjectScript Extension Pack installé), vous pourrez commencer à développer immédiatement.

Conditions préalables

Assurez-vous que vous avez installé git et Docker desktop.

Installation

Clone/git extrait le référentiel dans n'importe quel répertoire local.

$ git clone https://github.com/intersystems-community/intersystems-iris-dev-template.git

Ouvrez le terminal dans ce répertoire et appelez la commande pour construire et exécuter InterSystems IRIS dans le conteneur :
 Remarque : Les utilisateurs qui exécutent des conteneurs sur une CLI Linux doivent utiliser "docker compose" au lieu de "docker-compose"
 Voir
Installation du plugin Compose

$ docker-compose up -d

Pour ouvrir le Terminal IRIS, faites:

Ouvrez le terminal IRIS et exécutez la méthode ObjectScript Test() pour voir si le script est exécuté et si IRIS renvoie des valeurs :
IRISAPP>

Pour quitter le terminal, effectuez l'une des opérations suivantes:

Saisissez HALT ou H (non sensible à la casse)

Comment ça fonctionne

Le référentiel d'exemples contient deux exemples très simples de classes ObjectScript : une méthode ObjectScript qui renvoie une valeur et une méthode qui crée un enregistrement persistant.

  1. Ouvrez le terminal IRIS et exécutez la méthode ObjectScript Test() pour voir si elle exécute le script et renvoie les valeurs d'IRIS:
Ouvrez le terminal IRIS et exécutez la méthode ObjectScript Test() pour voir si le script est exécuté et si IRIS renvoie des valeurs :
IRISAPP>write ##class(dc.sample.ObjectScript).Test()
Ça marche!
42
  1. La classe dc.sample.PersistentClass contient une méthode CreateRecord qui crée un objet avec une propriété, Test, et renvoie son identifiant.

Ouvrez le terminal IRIS et exécutez:

IRISAPP>write ##class(dc.sample.PersistentClass).CreateRecord(.id)
1
IRISAPP>write id
1

Dans votre cas, la valeur de l"identifiant pourrait être différente. Et ele sera différente à chaque appel de la méthode.

Vous pouvez vérifier si l'enregistrement existe et essayer de redresser la propriété de l'objet par son identifiant.

IRISAPP>write ##class(dc.sample.PersistentClass).ReadProperty(id)
Chaîne de test

Comment lancer le développement

Ce référentiel est prêt à être codé dans VSCode avec le plugin ObjectScript.

Installez VSCodeDocker et le plugin InterSystems ObjectScript Extension Pack et ouvrez le dossier dans VSCode.

Ouvrez la classe /src/cls/PackageSample/ObjectScript.cls et y apportez des modifications - elle sera compilée dans le conteneur docker IRIS en cours d'exécution.

 

N'hésitez pas à supprimer le dossier PackageSample et à placer vos classes ObjectScript sous la forme /src/organisation/package/Classname.cls

Lisez plus sur la configuration des dossiers pour InterSystems ObjectScript et ici sur la convention de dénomination.

Exécution de tests unitaires

Le modèle contient deux classes de test: TestObjectScript.cls et TestPersistentClass.cls

Pour exécuter les tests unitaires, nous pouvons utiliser l'environnement du gestionnaire Package Manager.

IRISAPP>zpm
 
=============================================================================
|| Bienvenue dans le Package Manager Shell (ZPM).                             ||
|| Saisissez q/quit pour quitter le shell. Saisissez ?/help pour afficher les commandes disponibles ||
=============================================================================
zpm:IRISAPP>load /irisrun/repo
 
[dc-sample-template]    Reload START (/irisrun/repo/)
[dc-sample-template]    Reload SUCCESS
[dc-sample-template]    Module object refreshed.
[dc-sample-template]    Validate START
[dc-sample-template]    Validate SUCCESS
[dc-sample-template]    Compile START
[dc-sample-template]    Compile SUCCESS
[dc-sample-template]    Activate START
[dc-sample-template]    Configure START
[dc-sample-template]    Configure SUCCESS
[dc-sample-template]    MakeDeployed START
[dc-sample-template]    MakeDeployed SUCCESS
[dc-sample-template]    Activate SUCCESS
zpm:IRISAPP>test dc-sample-template
 
[dc-sample-template]    Reload START (/irisrun/repo/)
[dc-sample-template]    Reload SUCCESS
[dc-sample-template]    Module object refreshed.
[dc-sample-template]    Validate START
[dc-sample-template]    Validate SUCCESS
[dc-sample-template]    Compile START
[dc-sample-template]    Compile SUCCESS
[dc-sample-template]    Activate START
[dc-sample-template]    Configure START
[dc-sample-template]    Configure SUCCESS
[dc-sample-template]    MakeDeployed START
[dc-sample-template]    MakeDeployed SUCCESS
[dc-sample-template]    Activate SUCCESS
[dc-sample-template]    Test STARTIt works!
 
Utilisez l'URL suivante pour afficher le résultat:
http://172.28.0.2:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=1&$NAMESPACE=IRISAPP
All PASSED
 
[dc-sample-template]    Test SUCCESS
zpm:IRISAPP>

En cas d'erreurs de test, vous pouvez retrouver plus de détails dans le portail UnitTest, qui peut être facilement ouvert via le menu ObjectScript dans VSCode :

 

Ce qu'il y a d'autre dans le référentiel

dossier .github

Contient deux flux de travail GitHub:

  1. github-registry.ymlUne fois que les changements ont été poussés vers le dépôt, l'action construit l'image docker du côté de Github et pousse l'image vers le registre Github qui peut être très pratique pour un déploiement ultérieur dans le cloud, par exemple kubernetes.
  2. objectscript-qaulity.yml à chaque poussée vers la branche principale ou master, le workflow lance le test du référentiel sur les problèmes d'Objectscript avec l'outil Objectscript Quality, voir les exemples. Cela fonctionne si le référentiel est uniquement open-source.

Les deux flux de travail sont indépendants du référentiel: ils fonctionnent donc avec n'importe quel référentiel où ils existent.

dossier .vscode

Contient deux fichiers pour configurer l'environnement vscode:

.vscode/settings.json

Fichier de configuration pour vous permettre de coder immédiatement en VSCode avec le plugin VSCode ObjectScript.

.vscode/launch.json

Fichier de configuration si vous voulez déboguer avec VSCode ObjectScript

dossier src

Contient les fichiers sources. src/iris contient le code Objectscript d'InterSystems IRIS.

dossier tests

Contient des tests unitaires pour les classes ObjectScript

dev.md

Contient un ensemble de commandes utiles qui vous aideront pendant le développement

docker-compose.yml

Un fichier d'aide du moteur docker pour gérer la construction d'images et le mappage des ports de règles et de l'hôte aux dossiers (volumes) des conteneurs

Dockerfile

Le dockerfile le plus simple qui lance IRIS et y importe le code du dossier /src. Utilisez le fichier docker-compose.yml correspondant pour configurer facilement des paramètres supplémentaires tels que le numéro de port et l'emplacement des clés et des dossiers d'hôte.

iris.script

Contient les commandes objectcript qui sont envoyées à iris lors de la construction de l'image

module.xml

Description du code du module IPM dans le référentiel. On y trouve une description de ce qui est chargé avec la méthode, de la manière dont on la teste et des applications qui doivent être créées, des fichiers qui doivent être copiés.

Discussion (0)2
Connectez-vous ou inscrivez-vous pour continuer