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.gitOuvrez 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 -dPour 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.
- 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- La classe
dc.sample.PersistentClasscontient une méthodeCreateRecordqui 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)1IRISAPP>write id1Dans 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 testComment lancer le développement
Ce référentiel est prêt à être codé dans VSCode avec le plugin ObjectScript.
Installez VSCode, Docker 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 SUCCESSzpm: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=IRISAPPAll PASSED[dc-sample-template] Test SUCCESSzpm: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:
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.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.