From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Continuous Integration

cancel
Showing results for 
Search instead for 
Did you mean: 

The LabVIEW Continuous Integration Project

Hi,

First of all, nice job ! Integrating CI in LabVIEW is really usefull for major projects.

I'm trying to deploy continuous integration in my company.

Due to compatibilities between our projects, LabVIEW versions and drivers, we run LabVIEW in virtual machines.

I run Jenkins in a Tomcat server under Debian. On the same machine, I have my virtualization software running any virtual machines I need (Ideally one per project, which allows to keep the test environment as clean as possible).

Is there any way to make it working with The LabVIEW Continuous Integration Project with only minimal changes in settings ?

In case not, is it possible to integrate the "LabVIEW side" of the Project and configure jobs by hand in Jenkins ?

Thanks.

0 Kudos
Message 31 of 71
(3,768 Views)

I don't know about the LabVIEW Continuous Integration Project, but you can setup a master/slave scenario in Jenkins (eg. https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines). I did run a Jenkins master on a Macmini server, and hat some virtual machines (VMWare Fusion) running different versions of LabVIEW.

I have migrated to gitlab.com and use their CI tools now, but the concept remains pretty much the same.




DSH Pragmatic Software Development Workshops (Fab, Steve, Brian and me)
Release Automation Tools for LabVIEW (CI/CD integration with LabVIEW)
HSE Discord Server (Discuss our free and commercial tools and services)
DQMH® (The Future of Team-Based LabVIEW Development)


0 Kudos
Message 32 of 71
(3,768 Views)

Hi,

Thank you for answering.

I successfully set up my virtual machine as remote node.

My question was more how to remotely ask LabVIEW to build an application or to run ViAnalyzer/UUT/... ?

It seems that the CI Project is based on web services: Jenkins drives LabVIEW using HTTP Requests, and I want to keep it as is...

0 Kudos
Message 33 of 71
(3,768 Views)

You can also choose VIs to run. IMHO this would be a possibility to run UUTs & VI Analyzer.

But these would come seperate from Jenkins as long as there is no dedicated Jenkins Plugin.

0 Kudos
Message 34 of 71
(3,768 Views)

I really liked the presentation at NIWeek. This project looks very promising.

For me, one of the most important factors for usage is the support of multiple LV versions, since I need to build PPLs. So increasing the priority of this topicin the roadmap would be grartly appreciated

0 Kudos
Message 35 of 71
(3,768 Views)

I'm not sure how easy/difficult it would be to gut the batch file engine and replace it with mine. With my fork of the LabVIEW-CLI project and my engine, I'm able to easily launch multiple instances/versions of LabVIEW.

0 Kudos
Message 36 of 71
(3,768 Views)

At the moment, I am still using the batch file engine. I have to admit (shame on me) that I still haven't had the time to play with James' command line interface, which is what I think you have used to improve it. But still the issue of very limited command line capabilitites of LabVIEW itself still leaves me feel a bit unconfortable with a batch solution.

This project feels a bit more native to me, since it features sth like a direct integration into LV. (Maybe its also due to my Actor-addiction

0 Kudos
Message 37 of 71
(3,768 Views)

We're looking into supporting multiple versions of LabVIEW.  At a minimum, it should be possible to create a separate web service for each version you need to support, with separate Jenkins jobs for each version build.  I haven't thought through how to represent this in Alfred, though.

So far, additional extensions (VI Analyzer, VI Tester, VIPM, etc) have been getting most of my attention, but some community members have expressed interest in taking some of those on, so maybe I can shift attention to the multiple versions/multiple instances of LabVIEW problem.

Message 38 of 71
(3,768 Views)

First of all many thanks for your great job nevertheless it looks a bit raw And now to the problems

A few words about my configuration. Jenkins is running on a Linux machine so Alfred node is running on a Windows VM. All plugins and packages were eventually installed without an issue.

However when I'm trying to build a Jenkins Project from another Windows VM it says:

Error 5242 occurred at Jenkins - Run Script.vi

Possible reason(s):

Timeout Error.  Jenkins was not responsive.

Complete call chain:      Jenkins - Run Script.vi      Jenkins Builder.lvclass:Read from Property Bag.vi      Serializable Node.lvclass:To Serial Form.vi:3170001      CI Project.lvclass:To Serial Form.vi:3170001      CI Serializer.lvclass:Serialize.vi      Configuration Tool.lvlib:Build.vi      Configuration Tool.lvlib:CI Project Builder.vi

I can confirm that Jenkins is available from this machine. Moreover, looking into the code of Jenkins - Get Job number.vi I guess I've found out the real problem:

HTTP ERROR 404

Problem accessing /job/Build-Scripts/job/BuildScript-FolderCreation/lastBuild/buildNumber. Reason:

    Not Found

Indeed, there is no such relative address like .../job/Build-Scripts/... on my Jenkins server! Do you have any suggestions on what could be the problem? Is it something that Job DSL plugin is responsible for?

Please let me know if you need any additional info.

Thanks again!

0 Kudos
Message 39 of 71
(3,768 Views)

Having Alfred and Jenkins run in different contexts is not something that is tested or validated.  But there needs to be build scripts on your jenkins machine.  These build scripts are what is used by Alfred to build other Jenkins jobs. 

Is there a build scripts folder with Build jobs on your Jenkins page?

Certified LabVIEW Architect
Certified Professional Instructor
0 Kudos
Message 40 of 71
(3,768 Views)