07-03-2019 09:17 AM
Hello,
I am trying to figure out how to build up a CI environment with Labview.
Right now I am using PLLs (lvlibp) to componentize my projects. The projects have dependencies to each other. I am struggeling at the point how my built PLLs get into the other consuming projects.
I am reading a lot about NIPM and VIPM, but both install the packages in some system folders. I want to have my dependencies included in the project to have them "self contained" and without references to some folders outside of my project folder.
Is there a way to specify the installation directory of the packages? Or how could it be done?
Best regards,
Jörg
07-15-2019 10:12 AM
07-25-2019 02:39 AM
And how will this "right-click - add file" mechanism work in an Continuous Integration environment?
I would have to make sure that the referenced files are in a specific folder. But how do they come from one build job to another?
In other environments I used package managers and they had project specific configuration files. But all the Labview Package Mangagers aren't working on project basis, they work on system. That's my problem...
07-25-2019 08:49 AM - edited 07-25-2019 08:53 AM
I'll just give you an idea of what we do to see if that helps. You are right that PPL's are not project specific (although they can be lego blocks of a project as you split things up).
All my common code is built into PPL's, and then those PPL's are included in PKG's. So every single project has a build spec that looks like the following. This is the release code, tested and verified to work so that anything that calls into these vi's will get the expected behavior. (It also gives us the ability to keep modifying the source code without changing the released code because we just don't build a PPL until we are ready).
The PPL's are all built to a specific location (for us that's "C:\Program Files (x86)\CompanyName\CommonCode\"). Then all the packages do is take the PPL, and install it to the exact same location it was already built to. That way on every computer that works with the PPL it is in the same location because they only need to install the latest package.
In any project that needs to use the PPL we include it in the project by just dragging it from the common folder to the project. Below is an example of that, this project has like 20 PPL's it's built upon (Actor Framework program as you can see, all the PPL's are different actors).
So you can just expand each PPL, grab the specific vi's you need and put them in your block diagram.
One important thing we do is check the box in the PPL build spec for "Exclude dependent packed libraries" that way we aren't building the PPL's everytime they are used. They are only built by their specific project, and then used from that point on.
EDIT: I wanted to add one thing, there is a tool made my MGI called GPM that allows you to select where a package installs to. You can read about it here https://gpackage.io/ They seem to be going more for what you want.
07-25-2019 09:27 AM
Your workflow just works like I don't want it to work (sorry ):you have all dependencies on the system dependent on one central folder. That feels like going in "dependency hell" because of the projects not beeing self contained (and not fully under version control).
The last paragraph with the G Package manager is indeed the direction I am heading to. In the past I have worked with Nuget a lot. From the very sparse documentation of G Package Manager I can see that it looks like an implementation of such a package manager just written with LabView (not with special functions for LabView). So honestly I would go into the direction of a more popular, well documented package manager (even if it's mainly designed for another language).
07-25-2019 09:51 AM