Continuous Integration (CI) Improvements in LabVIEW


Continuous integration (CI) with tools like Jenkins is increasingly beneficial and even required for the development of large scale software systems. There have been numerous efforts from the community to enable integration, but we’ve heard a clear request to make improvements to our command-line-interface (CLI) in LabVIEW 2018 to better facilitate CI.

LabVIEW 2018, which is due out at NIWeek 2018 in May, will feature a new command line interface that facilitates execution and operation sequencing. However, this command-line interface, which uses VI Server to communicate with the environment, will also support older versions of LabVIEW going back to LabVIEW 2014.

LabVIEWCLI.exe will be installed in the LabVIEW2018 directory and can be invoked with the following arguments and parameters*:

  1. Mass Compile
    • Additional requirements: none
    • Required arguments:
      • Directory to compile 
    • Optional arguments:
      • Log file path (path to temporary location)
      • Append to log file (false)
      • Number of VIs to cache (0)
    • Output: output from mass compile operation
  2. Execute LabVIEW Build Specification
    • Additional requirements: none
    • Required arguments:
      • Project path 
      • Name of the target 
      • Name of the build specification
    • Output: path of generated file
  3. Run VI Analyzer
    • Additional requirements: VI Analyzer Toolkit
    • Required arguments:
      • Path of configuration file
      • Path of output report file
    • Optional arguments:
      • Configuration file password (none)
      • Report save type (ASCII). Options: ASCII, HTML, or RSL
      • Sort type: (VI). Options: VI, or Test
      • Report export options: (Summary, failed tests, errors). Options: Summary, Failed test, Errors, Passed tests, Skipped tests
    • Output: tests run, VIs tested
  4. Build VI Package
    • Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    • Required arguments:
      • VIPB file path
    • Output: build output path
  5. Install VI Package
    • Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    • Required arguments:
      • List of packages to install
      • LabVIEW Version
  6. Uninstall VI Package
    • Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    • Required arguments:
      • List of packages to uninstall
      • LabVIEW Version
  7. Update Installed VI Package
    • Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    • Required arguments:
      • List of packages to update
      • LabVIEW Version
  8. Publish VI Package
    1. Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    2. Required arguments:
      • List of packages to publish
      • Repository name
    3. Output: list of packages that were published
  9. Apply VI Package Configuration
    1. Additional requirements: JKI VI Package Manager Pro license, “VIPM API” Package
    2. Required arguments:
      • VIPC file path
      • LabVIEW version
  10. Run VI Tester
    1. Additional requirements: VI Test Toolkit, “VI Tester JUnit XML Test Results” VI Package
    2. Required arguments: 
      • Test path
      • Output JUnit report path
    3. Output: Output is written in JUnit file path
  11. Run Unit Test Framework
    1. Additional requirements: Unit Test Framework Toolkit, “JUnit results Library” VI Package
    2. Required arguments: 
      • Test path
      • Output JUnit report path
    3. Output: Output is written in JUnit file path
  12. Quit LabVIEW
  13. Run VI
    1. Required arguments: 
      • VI path on disk
      • Command line arguments for VI
    2. Output: custom string

 

*Notes:

  • This API is not officially released and the capabilities and functionality are still subject to change
  • We will not support running of multiple LabVIEW for running multiple operations.
  • For CLI to behave as expected, it is must that only one instance of LabVIEW is running at a time.

Please let us know if you’re interested in this functionality and would be interested in evaluating a pre-release version.

12 thoughts on “Continuous Integration (CI) Improvements in LabVIEW

  1. carl wecker

    I am very interested in the concept and would definitely be interested in evaluating a pre-release version. Thanks, Carl

    On Oct 9, 2017 9:26 PM, “Software Engineering for LabVIEW” wrote:

    > Elijah Kerry posted: “Continuous integration (CI) with tools like Jenkins > is increasingly beneficial and even required for the development of large > scale software systems. There have been numerous efforts from the community > to enable integration, but we’ve heard a clear reques” >

  2. Olivier Jourdan

    Same as Carl. I’d be interested in evaluating a pre-release with LV 2017 and LV 2015 and LV2014.
    Does LV64 bit will be supported ?

    Looking forward to hearing from you.

  3. We are currently implementing continuous integration, code review and unit testing in our software projects. I am responsible for investigating the integration with LabVIEW and very interested in evaluating a pre-release of the LabVIEW CLI. We mainly use LabVIEW 2016 32-bit for our new projects. Kind Regards, Stefan.

  4. This sounds very interesting. I’ve dipped my toe in the LV/TS CI world and this would seem to remove some of the need to create and maintain VIs for doing some of these tasks that I’ve already begun to accumulate. I look forward to the opportunity to try some of this out.

  5. I’m also interested in trying the pre-release.

    We’re currently using a fully working CI chain based on Gitlab and James McNally’s CLI-tool, for analyzing/testing, building and packaging/distributing source code, and I’d very much like to compare features.

  6. I know people have already started evaluating it internally. I am working to confirm when we expect to have a version we can share with those of you who want to start using the prerelease version. Stand by..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s