This document explains how to automate build, test, and distribution steps for the Icon Editor using GitHub Actions. It includes features such as automatic version bumping (using labels) and artifact upload. Additionally, it shows how you can brand the resulting VI Package with organization and repository metadata for unique identification.
Automating your Icon Editor builds and tests:
Prerequisites:
Install PowerShell and Git
Ensure your environment has the required tools before setting up the workflows.
Configure a Self-Hosted Runner
Under Settings → Actions → Runners in your GitHub repo or organization, add a runner with LabVIEW installed.
labview.ini to reference your local source code.ci-composite.yml) to confirm your environment is valid.
maindeveloprelease-alpha/*, release-beta/*, release-rc/*feature/*hotfix/*issue-*workflow_dispatch enables manual runs.issue-<number> and the linked issue’s Status to be In Progress; otherwise, downstream jobs are skipped.issue-status job enforces these checks and also skips the workflow if the branch or pull request has a NoCI label. Contributors must ensure their issue is added to a project with the required Status. For pull requests, the check inspects the head branch. This gating helps avoid ambiguous runs for automated tools..vip artifacts automatically. By default, the workflow populates the “Company Name” with github.repository_owner and the “Author Name” with github.event.repository.name, so each build is branded with your GitHub account and repository..github/workflows/ci-composite.yml and supply custom values for these fields.Tooling/deployment/release_notes.md summarizing recent commits. Use this file to draft changelogs or release notes.[!NOTE] The workflow automatically brands the VI Package using the repository owner (
github.repository_owner) and repository name (github.event.repository.name). Modify the “Generate display information JSON” step in.github/workflows/ci-composite.ymlif you need different values.
Set_Development_Mode.ps1 or the Development Mode Toggle workflow.Below are the key GitHub Actions provided in this repository:
Set_Development_Mode.ps1 or RevertDevelopmentMode.ps1.workflow_dispatch for manual toggling.major, minor, patch).
Direct pushes retain the previous version and increment only the build number.v1.2.3-build4)..vip file via a PowerShell script (e.g., Build.ps1)..vip come from github.repository_owner and github.event.repository.name. Update the “Generate display information JSON” step in ci-composite.yml if you need custom values..vip artifact to GitHub’s build artifacts.The ci-composite.yml pipeline breaks the build into several jobs:
NoCI label, then queries the Status field of the linked GitHub issue’s associated GitHub Project and proceeds only when that field is In Progress. Contributors must ensure their issue is added to a project with this Status value. It also requires the source branch name to contain issue-<number> (such as issue-123 or feature/issue-123). For pull requests, the job evaluates the PR’s head branch..vipc file changes to determine if dependencies need to be applied.changes job reports .vipc modifications (if: needs.changes.outputs.vipc == 'true')..lvproj.rename-file action to append the bitness to each library’s filename.ci-composite.yml this job passes supported_bitness: 64, so it produces only a 64-bit .vip.Both build-ppl and build-vi-package run a close-labview step after their build actions finish but before any steps that rename files or upload artifacts, so it isn’t the job’s final step.
The build-ppl job uses a matrix to produce both bitnesses rather than distinct jobs.
(The Run Unit Tests workflow has been consolidated into the main CI process.)
Add Self-Hosted Runner:
Go to Settings → Actions → Runners in your GitHub repository (or organization) and follow the steps to register a runner on your machine that has LabVIEW installed.
self-hosted-windows-lv must always be present.LVIE_RUNNER_LABEL (repo variable) and fall back to self-hosted-windows-lv.LVIE_RUNNER_LABEL to match your runner label.LVIE_RUNNER_LABEL is set to a fork-specific label, keep self-hosted-windows-lv on the same runner.self-hosted-windows-lv, self-hosted-windows-lv-ie.Tooling/Setup-Runner.ps1 to create a runner contract and standardize work roots.Tooling/Check-Runner.ps1.Tooling/runner-contract.template.json.Tooling/Assert-RunnerLabel.ps1 at job start.Tooling/Setup-Runner.ps1 configures a scoped safe.directory for the work root.Although GitHub Actions primarily run on GitHub-hosted or self-hosted agents, you can replicate the general process locally:
enable or manually call Set_Development_Mode.ps1.Build.ps1 from .github/actions/build to generate a .vip.-CompanyName, -AuthorName) if you want your build to be branded.Scenario: You want to implement a new feature, test it, and produce a uniquely branded .vip.
Set_Development_Mode.ps1.major, minor, or patch to control the version bump.develop (or main):
.vip artifact..vip, the “Company Name” and “Author Name (Person or Company)” fields are filled automatically using github.repository_owner and github.event.repository.name. Modify the “Generate display information JSON” step in .github/workflows/ci-composite.yml to override them..vip to confirm your new feature in a production-like environment..vip file is accessible under the Actions run summary (click “Artifacts”).patch; you can enforce labeling with an optional “Label Enforcer” step if desired.-CompanyName and -AuthorName (or similar parameters) into the Build.ps1 script. This metadata flows into the final Display Information of the Icon Editor’s VI Package.What is portable
self-hosted-windows-lv.What is not portable
Operational caveats
Tooling/Setup-Runner.ps1 to generate the contract and set paths.By adopting these workflows—Development Mode Toggle and Build VI Package—you can maintain a streamlined, consistent CI/CD process for the Icon Editor while customizing the VI Package with your own unique or fork-specific branding.