Git for InterSystems IRIS - Native Git workflow for the IRIS platform
Hi Developers, I am glad to announce Git for InterSystems IRIS, my first submission to OpenExchange and part of the current Developer Tools Contest.
Git for InterSystems IRIS is a source control package that aims to facilitate a native integration of the Git workflow with the InterSystems IRIS platform. It is designed to work as a transparent link between InterSystems IRIS and a Git-enabled code directory that, once setup, requires no user interaction. A detailed description can be found on GitHub.
I am looking forward to learn what you think about this approach. Does it make sense? Would this help you with establishing a Git-based deployment pipeline? Are there any issues that may have been overlooked?
A ready-to-run docker demo is available on OpenExchange. The application is in a usable proof-of-concept state, with some features still to be implemented. I am happy to receive any feedback from you.
Thank you for publishing!!
I am curious ... did you start with one of the existing open source Git hooks for ObjectScript or did you start from scratch with this project?
Hi Ben, the project started as a fork of Caché Tortoize Git, which was a good starting point, and initially I intended to change only a few things. As development went on, however, most of the code has been rewritten and I think only 10-20% is left from the original code. There were just too many differences in the basic concepts, including the Globals structure, handling of namespaces and projects, and interaction with Git (hooks -> REST) and Studio (none).
This is really interesting - I've been starting on a similar project with the same starting point.
Got it Marcus - thanks for the history :)
Thank you Marcus, great initiative! Any thoughts about how to manage environment specific variables in the pipeline e.g. different interoperability host configurations for dev / prod?
@Janne Korhonen - typically these are managed using System Default Setting: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...
Hello Marcus,
Thank you for sharing.
I'm building a dockerised DEV environnement.
The main issue I am encountering at this moment is the modification from the portal of Business Process or Transform for exemple. I have to export manually my new processes. If I forget it, I just lose it ...
I try to install and configure GIT directly on my image.
The aim is to link my local repo to the container. I don't want GIT at all. This way, I will have a automatical export.
But, it is quite difficult to use in command line.
I always have to perform an INIT when I start my container.
I tried to perform an init from my DockerFile (do ##class(SourceControl.Git.Utils).UserAction("","%SourceMenu,Init")) but it does not work.
Do you have a clean way to install and configure GIT from a DockerFile ?
Thanks
Regards,
Matthieu.
My iris start in my DockerFile :
RUN iris start IRIS \
&& iris session IRIS -U %SYS < /tmp/iris.script \
&& iris stop IRIS quietly
my iris.script :
//On installe ZPM
set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name) set url="https://pm.community.intersystems.com/packages/zpm/latest/installer" Do ##class(%Net.URLParser).Parse(url,.comp) set ht = ##class(%Net.HttpRequest).%New(), ht.Server = comp("host"), ht.Port = 443, ht.Https=1, ht.SSLConfiguration=name, st=ht.Get(comp("path")) quit:'st $System.Status.GetErrorText(st) set xml=##class(%File).TempFilename("xml"), tFile = ##class(%Stream.FileBinary).%New(), tFile.Filename = xml do tFile.CopyFromAndSave(ht.HttpResponse.Data) do ht.%Close(), $system.OBJ.Load(xml,"ck") do ##class(%File).Delete(xml)
do ##class(%SYSTEM.Process).CurrentDirectory("/opt/irisapp")
//On charge les installer et les deployer
do $SYSTEM.OBJ.Load("InstallerLibrary.cls", "ck")
//On installe les namespaces
set sc = ##class(App.InstallerLibrary).setup()
// Je ne sais pas pourquoi mais je dois redéfinir le dossier de travail
do ##class(%SYSTEM.Process).CurrentDirectory("/opt/irisapp")
//On importe les default settings + le plugin GIT (SURTOUT LAISSER LES PASSAGES A LA LIGNE)
zn "LIBRARY"
zpm "install git-source-control"
d ##class(SourceControl.Git.API).Configure()
/irisdev/app/LIBRARY/
// Pour éviter de devoir modifier le mdp SuperUser.
zn "%SYS"
w ##class(Security.Users).UnExpireUserPasswords("*")
// Pour faire fonctionner le plugin Git, il faut que le path défini existe, par défaut il est à chaine vide et cela fait planter le plugin. En l'enlevant cela fonctionne
k ^SYS("SourceControl","Git","%gitBinPath")
zn "LIBRARY"
do ##class(SourceControl.Git.Utils).UserAction("","%SourceMenu,Init")
halt
Hi Matthieu,
so you want to use Git for IRIS for an automated export of classes and set it up from the iris.script, which will be invoked in the Dockerfile.
From the code you have pasted, it seems like you use a different Git Source Control implementation (zpm "install git-source-control“). The implementation discussed in this thread would be installed with
There, you can use the API functions in SourceControl.Git.Utils in the iris.script:
A default package is added to source control via module.xml for demo purposes, as well as the /csp/user/sc web application for callbacks from git, both of which you may want to remove.
As a final step, you will have to activate the source control class in IRIS. The manual process is described here https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AS..., you might look into the corresponding CSP page to find out how to do it programatically.
Hope this helps.
Currently there is a select few of us in the group that use Git and Local Repos for VS code, but I want to make this more wide spread for our team as most use the Editors off of the Management Portal to do their coding.
Does anyone have steps they have used in the past to move towards Server Side Source Control from creating the Repos on your Server, getting the IRIS Code into the new Repo you created on your server, and pushing it to github?
Social networks
InterSystems resources
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue