From bbb45f1e31e10e8bc38b37521e6d3f750ed33142 Mon Sep 17 00:00:00 2001 From: Krishna Sharma Date: Fri, 3 Apr 2026 11:58:21 +0530 Subject: [PATCH 1/3] Refactored build lvlibp actions to support all build specs [REQ-039][REQ-040][REQ-041] --- actions/Invoke-OSAction.ps1 | 6 ++-- actions/OpenSourceActions.psd1 | 6 ++-- actions/OpenSourceActions.psm1 | 24 +++++++------- artifacts/linux/action-docs.json | 30 +++++++++--------- artifacts/linux/action-docs.md | 30 +++++++++--------- .../action.yml | 16 +++++----- .../action.yml | 16 +++++----- .../action.yml | 16 +++++----- ci_evidence.txt | 2 +- docs/actions/index.md | 8 +++-- docs/requirements.md | 6 ++-- ...er-linux.md => build-spec-docker-linux.md} | 12 ++++--- ...indows.md => build-spec-docker-windows.md} | 16 ++++++---- ...md => build-spec-github-hosted-windows.md} | 26 ++++++++------- requirements.json | 12 +++---- .../SetBuildVersionCaller.vi | Bin 25405 -> 0 bytes .../BuildSpecDockerLinux.ps1} | 28 ++++++++-------- .../build-spec.sh} | 8 ++--- .../BuildSpecDockerWindows.ps1} | 30 +++++++++--------- .../build-spec.ps1} | 10 +++--- .../BuildSpecGithubHostedWindows.ps1} | 24 +++++++------- .../README.md | 14 ++++---- .../SetBuildVersion.vi | Bin .../SetBuildVersionCaller.vi | Bin 0 -> 29345 bytes ...> BuildSpecDockerLinux.Workflow.Tests.ps1} | 14 ++++---- ...BuildSpecDockerWindows.Workflow.Tests.ps1} | 14 ++++---- ...pecGithubHostedWindows.Workflow.Tests.ps1} | 12 +++---- 27 files changed, 194 insertions(+), 186 deletions(-) rename {build-lvlibp-docker-linux => build-spec-docker-linux}/action.yml (82%) rename {build-lvlibp-docker-windows => build-spec-docker-windows}/action.yml (82%) rename {build-lvlibp-github-hosted-windows => build-spec-github-hosted-windows}/action.yml (80%) rename docs/scripts/{build-lvlibp-docker-linux.md => build-spec-docker-linux.md} (86%) rename docs/scripts/{build-lvlibp-docker-windows.md => build-spec-docker-windows.md} (82%) rename docs/scripts/{build-lvlibp-github-hosted-windows.md => build-spec-github-hosted-windows.md} (82%) delete mode 100644 scripts/build-lvlibp-helpers/SetBuildVersionCaller.vi rename scripts/{build-lvlibp-docker-linux/BuildLvlibpDockerLinux.ps1 => build-spec-docker-linux/BuildSpecDockerLinux.ps1} (78%) rename scripts/{build-lvlibp-docker-linux/build-lvlibp.sh => build-spec-docker-linux/build-spec.sh} (93%) rename scripts/{build-lvlibp-docker-windows/BuildLvlibpDockerWindows.ps1 => build-spec-docker-windows/BuildSpecDockerWindows.ps1} (79%) rename scripts/{build-lvlibp-docker-windows/build-lvlibp.ps1 => build-spec-docker-windows/build-spec.ps1} (90%) rename scripts/{build-lvlibp-github-hosted-windows/BuildLvlibpGithubHostedWindows.ps1 => build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1} (84%) rename scripts/{build-lvlibp-helpers => build-spec-helpers}/README.md (74%) rename scripts/{build-lvlibp-helpers => build-spec-helpers}/SetBuildVersion.vi (100%) create mode 100644 scripts/build-spec-helpers/SetBuildVersionCaller.vi rename tests/pester/{BuildLvlibpDockerLinux.Workflow.Tests.ps1 => BuildSpecDockerLinux.Workflow.Tests.ps1} (75%) rename tests/pester/{BuildLvlibpDockerWindows.Workflow.Tests.ps1 => BuildSpecDockerWindows.Workflow.Tests.ps1} (74%) rename tests/pester/{BuildLvlibpGithubHostedWindows.Workflow.Tests.ps1 => BuildSpecGithubHostedWindows.Workflow.Tests.ps1} (73%) diff --git a/actions/Invoke-OSAction.ps1 b/actions/Invoke-OSAction.ps1 index 388ee1e2..3fe23a07 100644 --- a/actions/Invoke-OSAction.ps1 +++ b/actions/Invoke-OSAction.ps1 @@ -24,9 +24,9 @@ $FallbackRegistry = [ordered]@{ 'apply-vipc' = 'Invoke-ApplyVIPC' 'build' = 'Invoke-Build' 'build-lvlibp' = 'Invoke-BuildLvlibp' - 'build-lvlibp-docker-linux' = 'Invoke-BuildLvlibpDockerLinux' - 'build-lvlibp-docker-windows' = 'Invoke-BuildLvlibpDockerWindows' - 'build-lvlibp-github-hosted-windows' = 'Invoke-BuildLvlibpGithubHostedWindows' + 'build-spec-docker-linux' = 'Invoke-BuildSpecDockerLinux' + 'build-spec-docker-windows' = 'Invoke-BuildSpecDockerWindows' + 'build-spec-github-hosted-windows' = 'Invoke-BuildSpecGithubHostedWindows' 'build-vi-package' = 'Invoke-BuildViPackage' 'close-labview' = 'Invoke-CloseLabVIEW' 'generate-release-notes' = 'Invoke-GenerateReleaseNotes' diff --git a/actions/OpenSourceActions.psd1 b/actions/OpenSourceActions.psd1 index d5ef1a88..a9e703b0 100644 --- a/actions/OpenSourceActions.psd1 +++ b/actions/OpenSourceActions.psd1 @@ -15,9 +15,9 @@ 'Invoke-ApplyVIPC' 'Invoke-Build' 'Invoke-BuildLvlibp' - 'Invoke-BuildLvlibpDockerLinux' - 'Invoke-BuildLvlibpDockerWindows' - 'Invoke-BuildLvlibpGithubHostedWindows' + 'Invoke-BuildSpecDockerLinux' + 'Invoke-BuildSpecDockerWindows' + 'Invoke-BuildSpecGithubHostedWindows' 'Invoke-BuildViPackage' 'Invoke-CloseLabVIEW' 'Invoke-ConfigureLabview' diff --git a/actions/OpenSourceActions.psm1 b/actions/OpenSourceActions.psm1 index 99ee69de..fd12abd9 100644 --- a/actions/OpenSourceActions.psm1 +++ b/actions/OpenSourceActions.psm1 @@ -228,7 +228,7 @@ function Invoke-BuildLvlibp { return Invoke-OpenSourceActionScript -ScriptSegments @('build-lvlibp','Build_lvlibp.ps1') -Arguments $args -DryRun:$DryRun -gcliPath $gcliPath } -# Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container. +# Builds LabVIEW build specification using Linux Docker container. # MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). # SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). # ProjectPath: Path to the LabVIEW project .lvproj file. @@ -243,7 +243,7 @@ function Invoke-BuildLvlibp { # ImageTag: Docker image tag (defaults to "2026q1-linux"). # DryRun: If set, prints the command instead of executing it. # gcliPath: Optional path prepended to PATH for locating the g CLI. -function Invoke-BuildLvlibpDockerLinux { +function Invoke-BuildSpecDockerLinux { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $MinimumSupportedLVVersion, @@ -261,10 +261,10 @@ function Invoke-BuildLvlibpDockerLinux { [switch] $DryRun, [string] $gcliPath ) - Write-Information "Invoking BuildLvlibpDockerLinux" -InformationAction Continue + Write-Information "Invoking BuildSpecDockerLinux" -InformationAction Continue $result = Invoke-OpenSourceActionScript ` - -ScriptSegments @('build-lvlibp-docker-linux', 'BuildLvlibpDockerLinux.ps1') ` + -ScriptSegments @('build-spec-docker-linux', 'BuildSpecDockerLinux.ps1') ` -Arguments @{ MinimumSupportedLVVersion = $MinimumSupportedLVVersion SupportedBitness = $SupportedBitness @@ -285,7 +285,7 @@ function Invoke-BuildLvlibpDockerLinux { return $result } -# Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container. +# Builds LabVIEW build specification using Windows Docker container. # MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). # SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). # ProjectPath: Path to the LabVIEW project .lvproj file. @@ -300,7 +300,7 @@ function Invoke-BuildLvlibpDockerLinux { # ImageTag: Docker image tag (defaults to "2026q1-windows"). # DryRun: If set, prints the command instead of executing it. # gcliPath: Optional path prepended to PATH for locating the g CLI. -function Invoke-BuildLvlibpDockerWindows { +function Invoke-BuildSpecDockerWindows { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $MinimumSupportedLVVersion, @@ -318,10 +318,10 @@ function Invoke-BuildLvlibpDockerWindows { [switch] $DryRun, [string] $gcliPath ) - Write-Information "Invoking BuildLvlibpDockerWindows" -InformationAction Continue + Write-Information "Invoking BuildSpecDockerWindows" -InformationAction Continue $result = Invoke-OpenSourceActionScript ` - -ScriptSegments @('build-lvlibp-docker-windows', 'BuildLvlibpDockerWindows.ps1') ` + -ScriptSegments @('build-spec-docker-windows', 'BuildSpecDockerWindows.ps1') ` -Arguments @{ MinimumSupportedLVVersion = $MinimumSupportedLVVersion SupportedBitness = $SupportedBitness @@ -342,7 +342,7 @@ function Invoke-BuildLvlibpDockerWindows { return $result } -# Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner. +# Builds LabVIEW build specification using Windows GitHub-hosted runner. # MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). # SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). # ProjectPath: Path to the LabVIEW project .lvproj file. @@ -355,7 +355,7 @@ function Invoke-BuildLvlibpDockerWindows { # Commit: Commit hash or identifier (optional). # DryRun: If set, prints the command instead of executing it. # gcliPath: Optional path prepended to PATH for locating the g CLI. -function Invoke-BuildLvlibpGithubHostedWindows { +function Invoke-BuildSpecGithubHostedWindows { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $MinimumSupportedLVVersion, @@ -371,10 +371,10 @@ function Invoke-BuildLvlibpGithubHostedWindows { [switch] $DryRun, [string] $gcliPath ) - Write-Information "Invoking BuildLvlibpGithubHostedWindows" -InformationAction Continue + Write-Information "Invoking BuildSpecGithubHostedWindows" -InformationAction Continue $result = Invoke-OpenSourceActionScript ` - -ScriptSegments @('build-lvlibp-github-hosted-windows', 'BuildLvlibpGithubHostedWindows.ps1') ` + -ScriptSegments @('build-spec-github-hosted-windows', 'BuildSpecGithubHostedWindows.ps1') ` -Arguments @{ MinimumSupportedLVVersion = $MinimumSupportedLVVersion SupportedBitness = $SupportedBitness diff --git a/artifacts/linux/action-docs.json b/artifacts/linux/action-docs.json index 2caf2774..4b9b4fc2 100644 --- a/artifacts/linux/action-docs.json +++ b/artifacts/linux/action-docs.json @@ -1346,7 +1346,7 @@ "type": "string" } ], - "build-lvlibp-docker-linux": [ + "build-spec-docker-linux": [ { "name": "minimum_supported_lv_version", "description": "LabVIEW version year for the build (e.g., \"2021\", \"2026\").", @@ -1384,28 +1384,28 @@ }, { "name": "major", - "description": "Major version component for the PPL. Omit to skip version setting.", + "description": "Major version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "minor", - "description": "Minor version component for the PPL. Omit to skip version setting.", + "description": "Minor version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "patch", - "description": "Patch version component for the PPL. Omit to skip version setting.", + "description": "Patch version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "build", - "description": "Build number component for the PPL. Omit to skip version setting.", + "description": "Build number component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" @@ -1453,7 +1453,7 @@ "type": "string" } ], - "build-lvlibp-docker-windows": [ + "build-spec-docker-windows": [ { "name": "minimum_supported_lv_version", "description": "LabVIEW version year for the build (e.g., \"2021\", \"2026\").", @@ -1491,28 +1491,28 @@ }, { "name": "major", - "description": "Major version component for the PPL. Omit to skip version setting.", + "description": "Major version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "minor", - "description": "Minor version component for the PPL. Omit to skip version setting.", + "description": "Minor version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "patch", - "description": "Patch version component for the PPL. Omit to skip version setting.", + "description": "Patch version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "build", - "description": "Build number component for the PPL. Omit to skip version setting.", + "description": "Build number component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" @@ -1560,7 +1560,7 @@ "type": "string" } ], - "build-lvlibp-github-hosted-windows": [ + "build-spec-github-hosted-windows": [ { "name": "minimum_supported_lv_version", "description": "LabVIEW version year for the build (e.g., \"2021\", \"2026\").", @@ -1598,28 +1598,28 @@ }, { "name": "major", - "description": "Major version component for the PPL. Omit to skip version setting.", + "description": "Major version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "minor", - "description": "Minor version component for the PPL. Omit to skip version setting.", + "description": "Minor version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "patch", - "description": "Patch version component for the PPL. Omit to skip version setting.", + "description": "Patch version component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" }, { "name": "build", - "description": "Build number component for the PPL. Omit to skip version setting.", + "description": "Build number component for the build specification. Omit to skip version setting.", "required": false, "default": "", "type": "string" diff --git a/artifacts/linux/action-docs.md b/artifacts/linux/action-docs.md index 3b315766..c91bde00 100644 --- a/artifacts/linux/action-docs.md +++ b/artifacts/linux/action-docs.md @@ -472,7 +472,7 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | log_level | string | false | INFO | Verbosity level (ERROR|WARN|INFO|DEBUG). | | dry_run | string | false | false | If true, simulate the action without side effects. | -#### build-lvlibp-docker-linux +#### build-spec-docker-linux | Name | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | minimum_supported_lv_version | string | true | | LabVIEW version year for the build (e.g., "2021", "2026"). | @@ -480,10 +480,10 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | project_path | string | true | | Path to the LabVIEW project .lvproj file. | | target_name | string | false | | Target that contains the build specification. Defaults to "My Computer" in helper VI. | | build_spec_name | string | false | | Name of the build specification. If empty, builds all specifications in the target. | -| major | string | false | | Major version component for the PPL. Omit to skip version setting. | -| minor | string | false | | Minor version component for the PPL. Omit to skip version setting. | -| patch | string | false | | Patch version component for the PPL. Omit to skip version setting. | -| build | string | false | | Build number component for the PPL. Omit to skip version setting. | +| major | string | false | | Major version component for the build specification. Omit to skip version setting. | +| minor | string | false | | Minor version component for the build specification. Omit to skip version setting. | +| patch | string | false | | Patch version component for the build specification. Omit to skip version setting. | +| build | string | false | | Build number component for the build specification. Omit to skip version setting. | | commit | string | false | | Commit hash or identifier recorded in the build. | | docker_image | string | false | nationalinstruments/labview | Docker image name. | | image_tag | string | false | 2026q1-linux | Docker image tag. | @@ -491,7 +491,7 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | log_level | string | false | INFO | Verbosity level (ERROR|WARN|INFO|DEBUG). | | dry_run | string | false | false | If true, simulate the action without side effects. | -#### build-lvlibp-docker-windows +#### build-spec-docker-windows | Name | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | minimum_supported_lv_version | string | true | | LabVIEW version year for the build (e.g., "2021", "2026"). | @@ -499,10 +499,10 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | project_path | string | true | | Path to the LabVIEW project .lvproj file. | | target_name | string | false | | Target that contains the build specification. Defaults to "My Computer" in helper VI. | | build_spec_name | string | false | | Name of the build specification. If empty, builds all specifications in the target. | -| major | string | false | | Major version component for the PPL. Omit to skip version setting. | -| minor | string | false | | Minor version component for the PPL. Omit to skip version setting. | -| patch | string | false | | Patch version component for the PPL. Omit to skip version setting. | -| build | string | false | | Build number component for the PPL. Omit to skip version setting. | +| major | string | false | | Major version component for the build specification. Omit to skip version setting. | +| minor | string | false | | Minor version component for the build specification. Omit to skip version setting. | +| patch | string | false | | Patch version component for the build specification. Omit to skip version setting. | +| build | string | false | | Build number component for the build specification. Omit to skip version setting. | | commit | string | false | | Commit hash or identifier recorded in the build. | | docker_image | string | false | nationalinstruments/labview | Docker image name. | | image_tag | string | false | 2026q1-windows | Docker image tag. | @@ -510,7 +510,7 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | log_level | string | false | INFO | Verbosity level (ERROR|WARN|INFO|DEBUG). | | dry_run | string | false | false | If true, simulate the action without side effects. | -#### build-lvlibp-github-hosted-windows +#### build-spec-github-hosted-windows | Name | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | minimum_supported_lv_version | string | true | | LabVIEW version year for the build (e.g., "2021", "2026"). | @@ -518,10 +518,10 @@ pwsh ./actions/Invoke-OSAction.ps1 -ActionName Set-LogLevel -ArgsJson '{}' | project_path | string | true | | Path to the LabVIEW project .lvproj file. | | target_name | string | false | | Target that contains the build specification. Defaults to "My Computer" in helper VI. | | build_spec_name | string | false | | Name of the build specification. If empty, builds all specifications in the target. | -| major | string | false | | Major version component for the PPL. Omit to skip version setting. | -| minor | string | false | | Minor version component for the PPL. Omit to skip version setting. | -| patch | string | false | | Patch version component for the PPL. Omit to skip version setting. | -| build | string | false | | Build number component for the PPL. Omit to skip version setting. | +| major | string | false | | Major version component for the build specification. Omit to skip version setting. | +| minor | string | false | | Minor version component for the build specification. Omit to skip version setting. | +| patch | string | false | | Patch version component for the build specification. Omit to skip version setting. | +| build | string | false | | Build number component for the build specification. Omit to skip version setting. | | commit | string | false | | Commit hash or identifier recorded in the build. | | working_directory | string | false | | Working directory where the action will run. | | log_level | string | false | INFO | Verbosity level (ERROR|WARN|INFO|DEBUG). | diff --git a/build-lvlibp-docker-linux/action.yml b/build-spec-docker-linux/action.yml similarity index 82% rename from build-lvlibp-docker-linux/action.yml rename to build-spec-docker-linux/action.yml index 355fa64e..d6e91624 100644 --- a/build-lvlibp-docker-linux/action.yml +++ b/build-spec-docker-linux/action.yml @@ -1,5 +1,5 @@ -name: 'Build LVLIBP Docker Linux' -description: 'Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container' +name: 'Build Spec Docker Linux' +description: 'Builds a LabVIEW build specification using Linux Docker container' inputs: minimum_supported_lv_version: description: 'LabVIEW version year for the build (e.g., "2021", "2026").' @@ -19,16 +19,16 @@ inputs: required: false default: '' major: - description: 'Major version component for the PPL. Omit to skip version setting.' + description: 'Major version component for the build specification. Omit to skip version setting.' required: false minor: - description: 'Minor version component for the PPL. Omit to skip version setting.' + description: 'Minor version component for the build specification. Omit to skip version setting.' required: false patch: - description: 'Patch version component for the PPL. Omit to skip version setting.' + description: 'Patch version component for the build specification. Omit to skip version setting.' required: false build: - description: 'Build number component for the PPL. Omit to skip version setting.' + description: 'Build number component for the build specification. Omit to skip version setting.' required: false commit: description: 'Commit hash or identifier recorded in the build.' @@ -57,7 +57,7 @@ inputs: runs: using: 'composite' steps: - - name: Dispatch build-lvlibp-docker-linux + - name: Dispatch build-spec-docker-linux shell: pwsh run: | $ErrorActionPreference = 'Stop' @@ -79,7 +79,7 @@ runs: if ('${{ inputs.build }}') { $args['Build'] = [int]'${{ inputs.build }}' } $params = @{ - ActionName = 'build-lvlibp-docker-linux' + ActionName = 'build-spec-docker-linux' ArgsJson = ($args | ConvertTo-Json -Compress) LogLevel = '${{ inputs.log_level }}' } diff --git a/build-lvlibp-docker-windows/action.yml b/build-spec-docker-windows/action.yml similarity index 82% rename from build-lvlibp-docker-windows/action.yml rename to build-spec-docker-windows/action.yml index c5bcd308..2005f449 100644 --- a/build-lvlibp-docker-windows/action.yml +++ b/build-spec-docker-windows/action.yml @@ -1,5 +1,5 @@ -name: 'Build LVLIBP Docker Windows' -description: 'Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container' +name: 'Build Spec Docker Windows' +description: 'Builds a LabVIEW build specification using Windows Docker container' inputs: minimum_supported_lv_version: description: 'LabVIEW version year for the build (e.g., "2021", "2026").' @@ -19,16 +19,16 @@ inputs: required: false default: '' major: - description: 'Major version component for the PPL. Omit to skip version setting.' + description: 'Major version component for the build specification. Omit to skip version setting.' required: false minor: - description: 'Minor version component for the PPL. Omit to skip version setting.' + description: 'Minor version component for the build specification. Omit to skip version setting.' required: false patch: - description: 'Patch version component for the PPL. Omit to skip version setting.' + description: 'Patch version component for the build specification. Omit to skip version setting.' required: false build: - description: 'Build number component for the PPL. Omit to skip version setting.' + description: 'Build number component for the build specification. Omit to skip version setting.' required: false commit: description: 'Commit hash or identifier recorded in the build.' @@ -57,7 +57,7 @@ inputs: runs: using: 'composite' steps: - - name: Dispatch build-lvlibp-docker-windows + - name: Dispatch build-spec-docker-windows shell: pwsh run: | $ErrorActionPreference = 'Stop' @@ -79,7 +79,7 @@ runs: if ('${{ inputs.build }}') { $args['Build'] = [int]'${{ inputs.build }}' } $params = @{ - ActionName = 'build-lvlibp-docker-windows' + ActionName = 'build-spec-docker-windows' ArgsJson = ($args | ConvertTo-Json -Compress) LogLevel = '${{ inputs.log_level }}' } diff --git a/build-lvlibp-github-hosted-windows/action.yml b/build-spec-github-hosted-windows/action.yml similarity index 80% rename from build-lvlibp-github-hosted-windows/action.yml rename to build-spec-github-hosted-windows/action.yml index 95db66e3..0996c238 100644 --- a/build-lvlibp-github-hosted-windows/action.yml +++ b/build-spec-github-hosted-windows/action.yml @@ -1,5 +1,5 @@ -name: 'Build LVLIBP GitHub Hosted Windows' -description: 'Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner' +name: 'Build Spec GitHub Hosted Windows' +description: 'Builds a LabVIEW build specification using Windows GitHub-hosted runner' inputs: minimum_supported_lv_version: description: 'LabVIEW version year for the build (e.g., "2021", "2026").' @@ -19,16 +19,16 @@ inputs: required: false default: '' major: - description: 'Major version component for the PPL. Omit to skip version setting.' + description: 'Major version component for the build specification. Omit to skip version setting.' required: false minor: - description: 'Minor version component for the PPL. Omit to skip version setting.' + description: 'Minor version component for the build specification. Omit to skip version setting.' required: false patch: - description: 'Patch version component for the PPL. Omit to skip version setting.' + description: 'Patch version component for the build specification. Omit to skip version setting.' required: false build: - description: 'Build number component for the PPL. Omit to skip version setting.' + description: 'Build number component for the build specification. Omit to skip version setting.' required: false commit: description: 'Commit hash or identifier recorded in the build.' @@ -49,7 +49,7 @@ inputs: runs: using: 'composite' steps: - - name: Dispatch build-lvlibp-github-hosted-windows + - name: Dispatch build-spec-github-hosted-windows shell: pwsh run: | $ErrorActionPreference = 'Stop' @@ -69,7 +69,7 @@ runs: if ('${{ inputs.build }}') { $args['Build'] = [int]'${{ inputs.build }}' } $params = @{ - ActionName = 'build-lvlibp-github-hosted-windows' + ActionName = 'build-spec-github-hosted-windows' ArgsJson = ($args | ConvertTo-Json -Compress) LogLevel = '${{ inputs.log_level }}' } diff --git a/ci_evidence.txt b/ci_evidence.txt index c2a1b504..40536157 100644 --- a/ci_evidence.txt +++ b/ci_evidence.txt @@ -1 +1 @@ -{"pipeline":"Unknown","git_sha":"ca2e2799dc4ab919b029800520cee7124d7a3d7a","req_status":{"REQ-023":"PASS","REQ-024":"PASS","REQ-025":"PASS","REQ-026":"PASS","REQ-027":"PASS","REQ-028":"PASS","REQ-029":"PASS","REQ-030":"PASS","REQ-031":"PASS","REQ-032":"PASS","REQ-033":"PASS"}} \ No newline at end of file +{"pipeline":"Unknown","git_sha":"b439b25a20d56192a48da7ea67ee7a60e670330d","req_status":{"REQ-023":"PASS","REQ-024":"PASS","REQ-025":"PASS","REQ-026":"PASS","REQ-027":"PASS","REQ-028":"PASS","REQ-029":"PASS","REQ-030":"PASS","REQ-031":"PASS","REQ-032":"PASS","REQ-033":"PASS"}} \ No newline at end of file diff --git a/docs/actions/index.md b/docs/actions/index.md index 7e1f0d9d..df40c75a 100644 --- a/docs/actions/index.md +++ b/docs/actions/index.md @@ -5,9 +5,9 @@ List of available GitHub Actions. - [add-token-to-labview](./add-token-to-labview.md): Add a custom library path token to the LabVIEW INI file so LabVIEW can locate project libraries. - [apply-vipc](./apply-vipc.md): Apply a VI Package Configuration (.vipc) file to a specific LabVIEW installation using g-cli. - [build-lvlibp](./build-lvlibp.md): Build a LabVIEW project’s build specification into a Packed Project Library (.lvlibp) -- [build-lvlibp-docker-linux](./build-lvlibp-docker-linux.md) – Build LVLIBP using Linux Docker container -- [build-lvlibp-docker-windows](./build-lvlibp-docker-windows.md) – Build LVLIBP using Windows Docker container -- [build-lvlibp-github-hosted-windows](./build-lvlibp-github-hosted-windows.md) – Build LVLIBP using Windows GitHub-hosted runner +- [build-spec-docker-linux](./build-spec-docker-linux.md) – Build LabVIEW build specification using Linux Docker container +- [build-spec-docker-windows](./build-spec-docker-windows.md) – Build LabVIEW build specification using Windows Docker container +- [build-spec-github-hosted-windows](./build-spec-github-hosted-windows.md) – Build LabVIEW build specification using Windows GitHub-hosted runner - [build-vi-package](./build-vi-package.md): Update VIPB display information and build a VI package using g-cli. - [build](./build.md): Automate building the LabVIEW Icon Editor project, including cleaning, building libraries, and packaging. - [close-labview](./close-labview.md): Gracefully close a running LabVIEW instance via g-cli. @@ -25,6 +25,8 @@ List of available GitHub Actions. - [setup-labview](./setup-labview.md): Downloads and installs LabVIEW Community Edition from an ISO image for CI/CD environments. - [setup-lunit](./setup-lunit.md): Installs VI Package Manager (VIPM) and the LUnit for G-CLI package for LabVIEW automation testing. - [setup-mkdocs](./setup-mkdocs.md): Install a pinned MkDocs with caching. +- [setup-nipm](./setup-nipm.md): Installs and configures NI Package Manager (NIPM) for LabVIEW package management in CI/CD environments. +- [via-lv-docker](via-lv-docker.md): Execute LabVIEW VI Analyzer tests using a Docker container and parse results. ## See also diff --git a/docs/requirements.md b/docs/requirements.md index 55791e49..f5cc4650 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -45,9 +45,9 @@ Runner Type indicates whether a requirement runs on a standard GitHub-hosted ima | REQ-036 | Download, install, and activate LabVIEW Community Edition from an ISO image, handling installation timeouts and cleanup. | `tests/pester/SetupLabview.Workflow.Tests.ps1` | | | | | REQ-037 | Configure LabVIEW settings by updating LabVIEW.ini to enable TCP/IP server and VI scripting operations. | `tests/pester/ConfigureLabview.Workflow.Tests.ps1` | | | | | REQ-038 | Install VI Package Manager (VIPM) and LUnit CLI package for LabVIEW automation testing. | `tests/pester/SetupLunit.Workflow.Tests.ps1` | | | | -| REQ-039 | Build LabVIEW Packed Project Library (.lvlibp) using Linux LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata. | `tests/pester/BuildLvlibpDockerLinux.Workflow.Tests.ps1` | | | | -| REQ-040 | Build LabVIEW Packed Project Library (.lvlibp) using Windows LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata. | `tests/pester/BuildLvlibpDockerWindows.Workflow.Tests.ps1` | | | | -| REQ-041 | Build LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner with locally installed LabVIEW. | `tests/pester/BuildLvlibpGithubHostedWindows.Workflow.Tests.ps1` | | | | +| REQ-039 | Build LabVIEW build specification using Linux LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata. | `tests/pester/BuildSpecDockerLinux.Workflow.Tests.ps1` | | | | +| REQ-040 | Build LabVIEW build specification using Windows LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata. | `tests/pester/BuildSpecDockerWindows.Workflow.Tests.ps1` | | | | +| REQ-041 | Build LabVIEW build specification using Windows GitHub-hosted runner with locally installed LabVIEW. | `tests/pester/BuildSpecGithubHostedWindows.Workflow.Tests.ps1` | | | | | REQIE-001 | After checking out the LabVIEW icon editor repository, PreSequence: The sequencer shall enumerate and record the build matrix used by the workflow (LabVIEW versions and bitness). Acceptance: a 'matrix.json' file exists listing each tuple {"lv-version": "2021"\|"2023", "bitness": "32"\|"64"} with at least [ ["2021","32"], ["2021","64"], ["2023","64"] ]. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.PreSequence.matrix-enumeration.ps1` | self-hosted-windows-lv | integration | true | | REQIE-002 | After checking out the LabVIEW icon editor repository, Setup: For each matrix entry, the sequencer shall apply [VIPC](glossary.md#vipc) dependencies using the canonical action inputs (minimum_supported_lv_version, vip_lv_version, supported_bitness, relative_path). Evidence: a 'vipc-apply.json' summary per matrix entry capturing inputs, start/end timestamps, exit code, and status. Acceptance: all entries report exit_code == 0 and status == 'success'. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Setup.apply-vipc-succeeds.ps1` | self-hosted-windows-lv | integration | true | | REQIE-003 | After checking out the LabVIEW icon editor repository, Setup: The sequencer shall compute and persist semantic version information. Evidence: a 'version.json' containing VERSION, MAJOR, MINOR, PATCH, BUILD, IS_PRERELEASE and the commit SHA used. Acceptance: VERSION conforms to SemVer and all numeric components are present. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Setup.version-outputs-captured.ps1` | self-hosted-windows-lv | integration | true | diff --git a/docs/scripts/build-lvlibp-docker-linux.md b/docs/scripts/build-spec-docker-linux.md similarity index 86% rename from docs/scripts/build-lvlibp-docker-linux.md rename to docs/scripts/build-spec-docker-linux.md index 5bb1b0da..a7d2a30f 100644 --- a/docs/scripts/build-lvlibp-docker-linux.md +++ b/docs/scripts/build-spec-docker-linux.md @@ -1,6 +1,6 @@ -# Build Packed Library with Docker Linux 🐳📦 +# Build LabVIEW Build Specification with Docker Linux 🐳📦 -Call **`BuildLvlibpDockerLinux.ps1`** to compile LabVIEW packed libraries using LabVIEWCLI inside a Linux Docker container. +Call **`BuildSpecDockerLinux.ps1`** to compile LabVIEW build specification using LabVIEWCLI inside a Linux Docker container. ## Inputs @@ -24,7 +24,7 @@ Call **`BuildLvlibpDockerLinux.ps1`** to compile LabVIEW packed libraries using The following example builds using LabVIEW 2026 inside a Linux Docker container. ```yaml -- uses: ./.github/actions/build-lvlibp-docker-linux +- uses: ./.github/actions/build-spec-docker-linux with: minimum_supported_lv_version: 2026 supported_bitness: 64 @@ -45,7 +45,7 @@ The following example builds using LabVIEW 2026 inside a Linux Docker container. Leave `build_spec_name` empty and provide version to set the same version on all build specs: ```yaml -- uses: ./.github/actions/build-lvlibp-docker-linux +- uses: ./.github/actions/build-spec-docker-linux with: minimum_supported_lv_version: 2026 supported_bitness: 64 @@ -67,13 +67,15 @@ Leave `build_spec_name` empty and provide version to set the same version on all - **Any version component omitted** (< 0 or not provided): - Version setting is skipped +- For **Zip Files**, Version is not set. + ## Requirements - Docker must be installed and running on the host system - The specified Linux Docker image must contain LabVIEWCLI - The LabVIEW project file must exist at the specified path -See also: [docs/actions/build-lvlibp-docker-linux.md](../actions/build-lvlibp-docker-linux.md) +See also: [docs/actions/build-spec-docker-linux.md](../actions/build-spec-docker-linux.md) ## License diff --git a/docs/scripts/build-lvlibp-docker-windows.md b/docs/scripts/build-spec-docker-windows.md similarity index 82% rename from docs/scripts/build-lvlibp-docker-windows.md rename to docs/scripts/build-spec-docker-windows.md index 41fea865..c297ba7b 100644 --- a/docs/scripts/build-lvlibp-docker-windows.md +++ b/docs/scripts/build-spec-docker-windows.md @@ -1,6 +1,6 @@ -# Build Packed Library with Docker Windows 🐳📦 +# Build LabVIEW Build Specification with Docker Windows 🐳📦 -Call **`BuildLvlibpDockerWindows.ps1`** to compile LabVIEW packed libraries using LabVIEWCLI inside a Windows Docker container. +Call **`BuildSpecDockerWindows.ps1`** to compile LabVIEW build specification using LabVIEWCLI inside a Windows Docker container. ## Inputs @@ -24,7 +24,7 @@ Call **`BuildLvlibpDockerWindows.ps1`** to compile LabVIEW packed libraries usin The following example builds using LabVIEW 2026 inside a Windows Docker container with custom version: ```yaml -- uses: ./.github/actions/build-lvlibp-docker-windows +- uses: ./.github/actions/build-spec-docker-windows with: minimum_supported_lv_version: 2026 supported_bitness: 64 @@ -45,7 +45,7 @@ The following example builds using LabVIEW 2026 inside a Windows Docker containe Build with only required parameters (skips version setting, builds all specifications in "My Computer"): ```yaml -- uses: ./.github/actions/build-lvlibp-docker-windows +- uses: ./.github/actions/build-spec-docker-windows with: minimum_supported_lv_version: 2026 supported_bitness: 64 @@ -57,7 +57,7 @@ Build with only required parameters (skips version setting, builds all specifica Leave `build_spec_name` empty to build all build specifications under the target: ```yaml -- uses: ./.github/actions/build-lvlibp-docker-windows +- uses: ./.github/actions/build-spec-docker-windows with: minimum_supported_lv_version: 2026 supported_bitness: 64 @@ -71,6 +71,8 @@ Leave `build_spec_name` empty to build all build specifications under the target commit: ${{ github.sha }} ``` +- Note: For **Zip Files**, Version is not set. + ## Requirements - Docker must be installed and running on the host system @@ -85,9 +87,9 @@ This action requires **Windows containers**, which are only available on: - Windows Server 2016 or later - Windows 10/11 with Docker Desktop configured for Windows containers -For Linux-based builds, use [build-lvlibp-docker-linux](build-lvlibp-docker-linux.md). +For Linux-based builds, use [build-spec-docker-linux](build-spec-docker-linux.md). -See also: [docs/actions/build-lvlibp-docker-windows.md](../actions/build-lvlibp-docker-windows.md) +See also: [docs/actions/build-spec-docker-windows.md](../actions/build-spec-docker-windows.md) ## License diff --git a/docs/scripts/build-lvlibp-github-hosted-windows.md b/docs/scripts/build-spec-github-hosted-windows.md similarity index 82% rename from docs/scripts/build-lvlibp-github-hosted-windows.md rename to docs/scripts/build-spec-github-hosted-windows.md index 9a621891..57f8840d 100644 --- a/docs/scripts/build-lvlibp-github-hosted-windows.md +++ b/docs/scripts/build-spec-github-hosted-windows.md @@ -1,6 +1,6 @@ -# Build Packed Library with Windows Runner 🖥️📦 +# Build LabVIEW Build Specification with Windows Runner 🖥️📦 -Call **`BuildLvlibpGithubHostedWindows.ps1`** to compile LabVIEW packed libraries using LabVIEWCLI on a Windows GitHub-hosted runner. +Call **`BuildSpecGithubHostedWindows.ps1`** to compile LabVIEW packed libraries using LabVIEWCLI on a Windows GitHub-hosted runner. ## Inputs @@ -22,7 +22,7 @@ Call **`BuildLvlibpGithubHostedWindows.ps1`** to compile LabVIEW packed librarie The following example builds using LabVIEW 2025 (32-bit) on a Windows runner. ```yaml -- uses: ./.github/actions/build-lvlibp-github-hosted-windows +- uses: ./.github/actions/build-spec-github-hosted-windows with: minimum_supported_lv_version: 2025 supported_bitness: 32 @@ -41,7 +41,7 @@ The following example builds using LabVIEW 2025 (32-bit) on a Windows runner. This example shows the full workflow including LabVIEW installation: ```yaml -name: Build LVLIBP +name: Build Spec on: push: @@ -68,7 +68,7 @@ jobs: package_id: 'LabVIEW_COM_PKG 25.0300' - name: Build PPL - uses: ./.github/actions/build-lvlibp-github-hosted-windows + uses: ./.github/actions/build-spec-github-hosted-windows with: minimum_supported_lv_version: 2025 supported_bitness: 32 @@ -85,7 +85,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: lv_icon_x86_v1.0.0.1 - path: builds/*.lvlibp + path: builds/*.spec ``` ## Build All Specifications with Version Override @@ -93,7 +93,7 @@ jobs: Leave `build_spec_name` empty and provide version to set the same version on all build specs: ```yaml -- uses: ./.github/actions/build-lvlibp-github-hosted-windows +- uses: ./.github/actions/build-spec-github-hosted-windows with: minimum_supported_lv_version: 2025 supported_bitness: 32 @@ -111,7 +111,7 @@ Leave `build_spec_name` empty and provide version to set the same version on all Omit version parameters to use versions to skip setting versions in build specifications: ```yaml -- uses: ./.github/actions/build-lvlibp-github-hosted-windows +- uses: ./.github/actions/build-spec-github-hosted-windows with: minimum_supported_lv_version: 2025 supported_bitness: 32 @@ -130,11 +130,13 @@ Omit version parameters to use versions to skip setting versions in build specif - Version setting is skipped - Build specifications use their own version settings from the project file +- For **Zip Files**, Version is not set. + ## Requirements - LabVIEW must be installed on the runner (use `setup-labview` action) - LabVIEWCLI must be available in the PATH -- Helper VI must exist at `scripts/build-lvlibp-helpers/SetBuildVersionCaller.vi` +- Helper VI must exist at `scripts/build-spec-helpers/SetBuildVersionCaller.vi` - Windows runner (Windows Server 2019, 2022, or Windows 10/11) ## Platform Notes @@ -143,10 +145,10 @@ This action requires **Windows runners** with locally installed LabVIEW. For containerized builds: -- Windows containers: [build-lvlibp-docker-windows](build-lvlibp-docker-windows.md) -- Linux containers: [build-lvlibp-docker-linux](build-lvlibp-docker-linux.md) +- Windows containers: [build-spec-docker-windows](build-spec-docker-windows.md) +- Linux containers: [build-spec-docker-linux](build-spec-docker-linux.md) -See also: [docs/actions/build-lvlibp-github-hosted-windows.md](../actions/build-lvlibp-github-hosted-windows.md) +See also: [docs/actions/build-spec-github-hosted-windows.md](../actions/build-spec-github-hosted-windows.md) ## License diff --git a/requirements.json b/requirements.json index 6582ecc3..6f279c99 100644 --- a/requirements.json +++ b/requirements.json @@ -298,23 +298,23 @@ }, { "id": "REQ-039", - "description": "Build LabVIEW Packed Project Library (.lvlibp) using Linux LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata.", + "description": "Build LabVIEW Build Specification using Linux LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata.", "tests": [ - "BuildLvlibpDockerLinux.Workflow.Tests" + "BuildSpecDockerLinux.Workflow.Tests" ] }, { "id": "REQ-040", - "description": "Build LabVIEW Packed Project Library (.lvlibp) using Windows LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata.", + "description": "Build LabVIEW Build Specification using Windows LabVIEW Docker container with specified version, bitness, and build specification, then rename the artifact with version and commit metadata.", "tests": [ - "BuildLvlibpDockerWindows.Workflow.Tests" + "BuildSpecDockerWindows.Workflow.Tests" ] }, { "id": "REQ-041", - "description": "Build LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner with locally installed LabVIEW.", + "description": "Build LabVIEW Build Specification using Windows GitHub-hosted runner with locally installed LabVIEW.", "tests": [ - "BuildLvlibpGithubHostedWindows.Workflow.Tests" + "BuildSpecGithubHostedWindows.Workflow.Tests" ] }, { diff --git a/scripts/build-lvlibp-helpers/SetBuildVersionCaller.vi b/scripts/build-lvlibp-helpers/SetBuildVersionCaller.vi deleted file mode 100644 index 5d621ebac40a121927a635012d23ca355eb1a2a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25405 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 [CmdletBinding()] @@ -91,14 +91,14 @@ Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' try { - Write-Verbose "Building PPL with Linux Docker container" + Write-Verbose "Building build specification with Linux Docker container" $hasVersion = ($Major -ge 0) -and ($Minor -ge 0) -and ($Patch -ge 0) -and ($Build -ge 0) if ($hasVersion) { $versionString = "$Major.$Minor.$Patch.$Build" - Write-Information "PPL Version: $versionString" -InformationAction Continue + Write-Information "Build Specification Version: $versionString" -InformationAction Continue } else { - Write-Information "PPL Version setting skipped." -InformationAction Continue + Write-Information "Build Specification Version setting skipped." -InformationAction Continue } if ($Commit) { @@ -117,7 +117,7 @@ try { # Get the path to the bash script $scriptDir = $PSScriptRoot - $buildScript = Join-Path $scriptDir 'build-lvlibp.sh' + $buildScript = Join-Path $scriptDir 'build-spec.sh' if (-not (Test-Path $buildScript)) { throw "Build script not found: $buildScript" @@ -126,7 +126,7 @@ try { $actionRoot = Split-Path (Split-Path $scriptDir -Parent) -Parent Write-Verbose "Calculated action root from script path: $actionRoot" - $helperDir = Join-Path $actionRoot 'scripts' 'build-lvlibp-helpers' + $helperDir = Join-Path $actionRoot 'scripts' 'build-spec-helpers' if (-not (Test-Path $helperDir)) { throw "Helper VI directory not found: $helperDir" @@ -142,7 +142,7 @@ try { # Container paths are always Linux-style $containerProjectPath = "/workspace/$ProjectPath" - $containerScriptPath = "/tmp/build-lvlibp.sh" + $containerScriptPath = "/tmp/build-spec.sh" # Construct bash command arguments $bashArgs = @( @@ -190,6 +190,6 @@ try { exit 0 } catch { - Write-Error "BuildLvlibpDockerLinux failed: $_" + Write-Error "BuildSpecDockerLinux failed: $_" exit 1 } \ No newline at end of file diff --git a/scripts/build-lvlibp-docker-linux/build-lvlibp.sh b/scripts/build-spec-docker-linux/build-spec.sh similarity index 93% rename from scripts/build-lvlibp-docker-linux/build-lvlibp.sh rename to scripts/build-spec-docker-linux/build-spec.sh index 2a9ef8e7..0bddb8f3 100644 --- a/scripts/build-lvlibp-docker-linux/build-lvlibp.sh +++ b/scripts/build-spec-docker-linux/build-spec.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Build LabVIEW Packed Project Library using LabVIEWCLI -# [REQ-039] Build LVLIBP using Docker container +# Build LabVIEW Build Specification using LabVIEWCLI +# [REQ-039] Build LabVIEW build specification using Docker container set -euo pipefail @@ -47,7 +47,7 @@ if [[ -z "$LABVIEW_PATH" ]] || [[ -z "$PROJECT_PATH" ]]; then exit 1 fi -echo "Building LabVIEW Packed Project Library..." +echo "Building LabVIEW Build Specification..." echo "LabVIEW: $LABVIEW_PATH" echo "Project: $PROJECT_PATH" echo "Target: ${TARGET_NAME:-}" @@ -56,7 +56,7 @@ echo "Version: ${VERSION:-}" if [[ -n "$VERSION" ]]; then echo "Setting build version..." - HELPER_VI="/helpers/scripts/build-lvlibp-helpers/SetBuildVersionCaller.vi" + HELPER_VI="/helpers/scripts/build-spec-helpers/SetBuildVersionCaller.vi" if [[ ! -f "$HELPER_VI" ]]; then echo "Error: Helper VI not found at $HELPER_VI" diff --git a/scripts/build-lvlibp-docker-windows/BuildLvlibpDockerWindows.ps1 b/scripts/build-spec-docker-windows/BuildSpecDockerWindows.ps1 similarity index 79% rename from scripts/build-lvlibp-docker-windows/BuildLvlibpDockerWindows.ps1 rename to scripts/build-spec-docker-windows/BuildSpecDockerWindows.ps1 index e20ee8d0..c0cae1c3 100644 --- a/scripts/build-lvlibp-docker-windows/BuildLvlibpDockerWindows.ps1 +++ b/scripts/build-spec-docker-windows/BuildSpecDockerWindows.ps1 @@ -1,6 +1,6 @@ <# .SYNOPSIS - Builds the LabVIEW Packed Project Library (.lvlibp) using Windows LabVIEW Docker container. + Builds a LabVIEW build specification using Windows LabVIEW Docker container. .DESCRIPTION Executes LabVIEW build specification through LabVIEWCLI inside a Windows Docker container, @@ -22,16 +22,16 @@ PARAMETER TargetName Name of the LabVIEW build specification to execute. If empty, builds all specifications in the target. .PARAMETER Major - Major version component for the PPL. Optional - if not provided, version setting is skipped. + Major version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Minor - Minor version component for the PPL. Optional - if not provided, version setting is skipped. + Minor version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Patch - Patch version component for the PPL. Optional - if not provided, version setting is skipped. + Patch version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Build - Build number component for the PPL. Optional - if not provided, version setting is skipped. + Build number component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Commit Commit hash or identifier recorded in the build. @@ -43,10 +43,10 @@ PARAMETER TargetName Docker image tag (e.g., "2026q1-windows"). .EXAMPLE - .\BuildLvlibpDockerWindows.ps1 -MinimumSupportedLVVersion "2026" -SupportedBitness "64" -ProjectPath "lv_icon_editor.lvproj" -TargetName "My Computer" -BuildSpecName "Editor Packed Library" -Major 1 -Minor 0 -Patch 0 -Build 0 -Commit "abc1234" + .\BuildSpecDockerWindows.ps1 -MinimumSupportedLVVersion "2026" -SupportedBitness "64" -ProjectPath "lv_icon_editor.lvproj" -TargetName "My Computer" -BuildSpecName "Editor Packed Library" -Major 1 -Minor 0 -Patch 0 -Build 0 -Commit "abc1234" .NOTES - [REQ-040] Build LabVIEW Packed Project Library using Windows Docker container + [REQ-040] Build LabVIEW build specification using Windows Docker container #> [CmdletBinding()] @@ -92,14 +92,14 @@ Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' try { - Write-Verbose "Building PPL with Windows Docker container" + Write-Verbose "Building build specification with Windows Docker container" $hasVersion = ($Major -ge 0) -and ($Minor -ge 0) -and ($Patch -ge 0) -and ($Build -ge 0) if ($hasVersion) { $versionString = "$Major.$Minor.$Patch.$Build" - Write-Information "PPL Version: $versionString" -InformationAction Continue + Write-Information "Build Specification Version: $versionString" -InformationAction Continue } else { - Write-Information "PPL Version setting skipped." -InformationAction Continue + Write-Information "Build Specification Version setting skipped." -InformationAction Continue } if ($Commit) { @@ -118,7 +118,7 @@ try { # Get the path to the PowerShell build script $scriptDir = $PSScriptRoot - $buildScript = Join-Path $scriptDir 'build-lvlibp.ps1' + $buildScript = Join-Path $scriptDir 'build-spec.ps1' if (-not (Test-Path $buildScript)) { throw "Build script not found: $buildScript" @@ -127,7 +127,7 @@ try { $actionRoot = Split-Path (Split-Path $scriptDir -Parent) -Parent Write-Verbose "Calculated action root from script path: $actionRoot" - $helperDir = Join-Path $actionRoot 'scripts' 'build-lvlibp-helpers' + $helperDir = Join-Path $actionRoot 'scripts' 'build-spec-helpers' if (-not (Test-Path $helperDir)) { throw "Helper VI directory not found: $helperDir" @@ -140,7 +140,7 @@ try { # Create temporary directory for script mounting $tempDir = Join-Path $env:TEMP "docker-build-$(New-Guid)" New-Item -Path $tempDir -ItemType Directory -Force | Out-Null - $tempScript = Join-Path $tempDir 'build-lvlibp.ps1' + $tempScript = Join-Path $tempDir 'build-spec.ps1' Copy-Item -Path $buildScript -Destination $tempScript -Force Write-Verbose "Copied build script to: $tempScript" @@ -155,7 +155,7 @@ try { # Windows container paths $containerProjectPath = "C:\workspace\$ProjectPath" - $containerScriptPath = "C:\scripts\build-lvlibp.ps1" + $containerScriptPath = "C:\scripts\build-spec.ps1" # Construct PowerShell command arguments $scriptArgs = @( @@ -198,7 +198,7 @@ try { exit 0 } catch { - Write-Error "BuildLvlibpDockerWindows failed: $_" + Write-Error "BuildSpecDockerWindows failed: $_" exit 1 } finally { diff --git a/scripts/build-lvlibp-docker-windows/build-lvlibp.ps1 b/scripts/build-spec-docker-windows/build-spec.ps1 similarity index 90% rename from scripts/build-lvlibp-docker-windows/build-lvlibp.ps1 rename to scripts/build-spec-docker-windows/build-spec.ps1 index e055be9b..30b9bce6 100644 --- a/scripts/build-lvlibp-docker-windows/build-lvlibp.ps1 +++ b/scripts/build-spec-docker-windows/build-spec.ps1 @@ -1,9 +1,9 @@ <# .SYNOPSIS - Build LabVIEW Packed Project Library using LabVIEWCLI + Build LabVIEW build specification using LabVIEWCLI .DESCRIPTION - [REQ-040] Build LVLIBP using Windows Docker container + [REQ-040] Build LabVIEW build specification using Windows Docker container .NOTES This script is executed inside the Windows Docker container. @@ -30,7 +30,7 @@ param( Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' -Write-Host "Building LabVIEW Packed Project Library..." +Write-Host "Building LabVIEW build specification..." Write-Host "LabVIEW: $LabVIEWPath" Write-Host "Project: $ProjectPath" Write-Host "Target: $(if ($TargetName) { $TargetName } else { '' })" @@ -40,7 +40,7 @@ Write-Host "Version: $(if ($Version) { $Version } else { '' })" # Set build version using helper VI if Version is provided if ($Version) { Write-Host "Setting build version to: $Version..." - $helperVI = "C:\actions\scripts\build-lvlibp-helpers\SetBuildVersionCaller.vi" + $helperVI = "C:\actions\scripts\build-spec-helpers\SetBuildVersionCaller.vi" if (-not (Test-Path $helperVI)) { throw "Helper VI not found at: $helperVI" @@ -63,7 +63,7 @@ if ($Version) { Write-Host "Build version set successfully" } else { - Write-Host "Skipping version set - using version from build spec(s)" + Write-Host "Skipping build specification version set - using version from build spec(s)" } # Construct LabVIEWCLI command diff --git a/scripts/build-lvlibp-github-hosted-windows/BuildLvlibpGithubHostedWindows.ps1 b/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 similarity index 84% rename from scripts/build-lvlibp-github-hosted-windows/BuildLvlibpGithubHostedWindows.ps1 rename to scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 index 79dc671f..13b50b9e 100644 --- a/scripts/build-lvlibp-github-hosted-windows/BuildLvlibpGithubHostedWindows.ps1 +++ b/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 @@ -1,6 +1,6 @@ <# .SYNOPSIS - Builds the LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner. + Builds LabVIEW build specification using Windows GitHub-hosted runner. .DESCRIPTION Executes LabVIEW build specification through LabVIEWCLI on a Windows GitHub-hosted runner. @@ -21,16 +21,16 @@ Name of the LabVIEW build specification to execute. If empty, builds all specifications in the target. .PARAMETER Major - Major version component for the PPL. Optional - if not provided, version setting is skipped. + Major version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Minor - Minor version component for the PPL. Optional - if not provided, version setting is skipped. + Minor version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Patch - Patch version component for the PPL. Optional - if not provided, version setting is skipped. + Patch version component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Build - Build number component for the PPL. Optional - if not provided, version setting is skipped. + Build number component for the build specification. Optional - if not provided, version setting is skipped. .PARAMETER Commit Commit hash or identifier recorded in the build. @@ -39,7 +39,7 @@ .\BuildLvlibpGithubHostedWindows.ps1 -MinimumSupportedLVVersion "2025" -SupportedBitness "32" -ProjectPath "lv_icon_editor.lvproj" -TargetName "My Computer" -BuildSpecName "Editor Packed Library" -Major 1 -Minor 0 -Patch 0 -Build 0 -Commit "abc1234" .NOTES - [REQ-041] Build LabVIEW Packed Project Library using Windows GitHub-hosted runner + [REQ-041] Build LabVIEW build specification using Windows GitHub-hosted runner #> [CmdletBinding()] @@ -79,14 +79,14 @@ Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' try { - Write-Verbose "Building PPL with Windows GitHub-hosted runner" + Write-Verbose "Building build specification with Windows GitHub-hosted runner" $hasVersion = ($Major -ge 0) -and ($Minor -ge 0) -and ($Patch -ge 0) -and ($Build -ge 0) if ($hasVersion) { $versionString = "$Major.$Minor.$Patch.$Build" - Write-Information "PPL Version: $versionString" -InformationAction Continue + Write-Information "Build Specification Version: $versionString" -InformationAction Continue } else { - Write-Information "PPL Version setting skipped." -InformationAction Continue + Write-Information "Build Specification Version setting skipped." -InformationAction Continue } Write-Information "Commit: $Commit" -InformationAction Continue @@ -116,7 +116,7 @@ try { # Only set build version if Version is provided if ($hasVersion) { Write-Information "Setting build version to: $versionString..." -InformationAction Continue - $helperVI = Join-Path $PSScriptRoot '..' 'build-lvlibp-helpers' 'SetBuildVersionCaller.vi' + $helperVI = Join-Path $PSScriptRoot '..' 'build-spec-helpers' 'SetBuildVersionCaller.vi' if (-not (Test-Path $helperVI)) { throw "Helper VI not found at: $helperVI" @@ -143,7 +143,7 @@ try { Write-Information "Build version set successfully" -InformationAction Continue } else { - Write-Information "Skipping version set " -InformationAction Continue + Write-Information "Skipping build specification version set " -InformationAction Continue } # Construct LabVIEWCLI command @@ -191,6 +191,6 @@ try { exit 0 } catch { - Write-Error "BuildLvlibpGithubHostedWindows failed: $_" + Write-Error "BuildSpecGithubHostedWindows failed: $_" exit 1 } \ No newline at end of file diff --git a/scripts/build-lvlibp-helpers/README.md b/scripts/build-spec-helpers/README.md similarity index 74% rename from scripts/build-lvlibp-helpers/README.md rename to scripts/build-spec-helpers/README.md index cae16ccd..1c9c63b9 100644 --- a/scripts/build-lvlibp-helpers/README.md +++ b/scripts/build-spec-helpers/README.md @@ -1,6 +1,6 @@ -# Build LVLIBP Common Scripts +# Build LabVIEW Build Specification Common Scripts -This directory contains shared utilities used by all LVLIBP build actions. +This directory contains shared utilities used by all build specification actions. ## SetBuildVersion.vi @@ -32,7 +32,7 @@ Helper VI that sets the build version for LabVIEW build specification(s). LabVIEWCLI \ -OperationName RunVI \ -LabVIEWPath "/usr/local/natinst/LabVIEW-2025-64/labview" \ - -VIPath "/workspace/scripts/build-lvlibp-common/SetBuildVersion.vi" \ + -VIPath "/workspace/scripts/build-spec-helpers/SetBuildVersionCaller.vi" \ "/workspace/project.lvproj" "My PPL" "My Computer" "1.0.0.4"\ -Headless ``` @@ -43,16 +43,16 @@ LabVIEWCLI \ LabVIEWCLI \ -OperationName RunVI \ -LabVIEWPath "/usr/local/natinst/LabVIEW-2025-64/labview" \ - -VIPath "/workspace/scripts/build-lvlibp-common/SetBuildVersion.vi" \ + -VIPath "/workspace/scripts/build-spec-helpers/SetBuildVersionCaller.vi" \ "/workspace/project.lvproj" "" "My Computer" "2.0.0.4"\ -Headless ``` ### Used By -- [`build-lvlibp-docker-linux`](../build-lvlibp-docker-linux/BuildLvlibpDockerLinux.ps1) – When version parameters are provided -- [`build-lvlibp-docker-windows`](../build-lvlibp-docker-windows/BuildLvlibpDockerWindows.ps1) – When version parameters are provided -- [`build-lvlibp-github-hosted-windows`](../build-lvlibp-github-hosted-windows/BuildLvlibpGithubHostedWindows.ps1) – When version parameters are provided +- [`build-spec-docker-linux`](../build-spec-docker-linux/BuildSpecDockerLinux.ps1) – When version parameters are provided +- [`build-spec-docker-windows`](../build-spec-docker-windows/BuildSpecDockerWindows.ps1) – When version parameters are provided +- [`build-spec-github-hosted-windows`](../build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1) – When version parameters are provided ### When is the Helper VI Called? diff --git a/scripts/build-lvlibp-helpers/SetBuildVersion.vi b/scripts/build-spec-helpers/SetBuildVersion.vi similarity index 100% rename from scripts/build-lvlibp-helpers/SetBuildVersion.vi rename to scripts/build-spec-helpers/SetBuildVersion.vi diff --git a/scripts/build-spec-helpers/SetBuildVersionCaller.vi b/scripts/build-spec-helpers/SetBuildVersionCaller.vi new file mode 100644 index 0000000000000000000000000000000000000000..c8ea4408d6f16fcf8ba72625408697e515560f21 GIT binary patch literal 29345 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 Date: Fri, 3 Apr 2026 13:15:03 +0530 Subject: [PATCH 2/3] Update dispatcher with new action names [REQ-039][REQ-040][REQ-041] --- artifacts/linux/action-docs.json | 12 ++++++------ artifacts/linux/action-docs.md | 18 +++++++++--------- ci_evidence.txt | 2 +- dispatchers.json | 12 ++++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/artifacts/linux/action-docs.json b/artifacts/linux/action-docs.json index 4b9b4fc2..778b61cc 100644 --- a/artifacts/linux/action-docs.json +++ b/artifacts/linux/action-docs.json @@ -196,8 +196,8 @@ } } }, - "Invoke-BuildLvlibpDockerLinux": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-linux\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecDockerLinux": { + "description": "Builds LabVIEW build specification using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-linux\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", @@ -280,8 +280,8 @@ } } }, - "Invoke-BuildLvlibpDockerWindows": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-windows\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecDockerWindows": { + "description": "Builds LabVIEW build specification using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-windows\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", @@ -364,8 +364,8 @@ } } }, - "Invoke-BuildLvlibpGithubHostedWindows": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecGithubHostedWindows": { + "description": "Builds LabVIEW build specification using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", diff --git a/artifacts/linux/action-docs.md b/artifacts/linux/action-docs.md index c91bde00..1509afdf 100644 --- a/artifacts/linux/action-docs.md +++ b/artifacts/linux/action-docs.md @@ -75,8 +75,8 @@ Builds a LabVIEW Packed Library using a project and build spec. MinimumSupported pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildLvlibp -ArgsJson '{}' ``` -#### Invoke-BuildLvlibpDockerLinux -Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: "nationalinstruments/labview"). ImageTag: Docker image tag (defaults to "2026q1-linux"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. +#### Invoke-BuildSpecDockerLinux +Builds LabVIEW build specification using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: "nationalinstruments/labview"). ImageTag: Docker image tag (defaults to "2026q1-linux"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. | Parameter | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | Build | number | false | -1 | Build number component (optional, skips version setting if < 0) | @@ -95,11 +95,11 @@ Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container. Mi | gcliPath | string | false | | Optional path prepended to PATH for locating the g CLI | ```powershell -pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildLvlibpDockerLinux -ArgsJson '{}' +pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildSpecDockerLinux -ArgsJson '{}' ``` -#### Invoke-BuildLvlibpDockerWindows -Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: "nationalinstruments/labview"). ImageTag: Docker image tag (defaults to "2026q1-windows"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. +#### Invoke-BuildSpecDockerWindows +Builds LabVIEW build specification using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: "nationalinstruments/labview"). ImageTag: Docker image tag (defaults to "2026q1-windows"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. | Parameter | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | Build | number | false | -1 | Build number component (optional, skips version setting if < 0) | @@ -118,11 +118,11 @@ Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container. | gcliPath | string | false | | Optional path prepended to PATH for locating the g CLI | ```powershell -pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildLvlibpDockerWindows -ArgsJson '{}' +pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildSpecDockerWindows -ArgsJson '{}' ``` -#### Invoke-BuildLvlibpGithubHostedWindows -Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. +#### Invoke-BuildSpecGithubHostedWindows +Builds LabVIEW build specification using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., "2021", "2026"). SupportedBitness: Bitness of the LabVIEW environment ("32" or "64"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to "My Computer"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI. | Parameter | Type | Required | Default | Description | | --- | --- | --- | --- | --- | | Build | number | false | -1 | Build number component (optional, skips version setting if < 0) | @@ -139,7 +139,7 @@ Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runn | gcliPath | string | false | | Optional path prepended to PATH for locating the g CLI | ```powershell -pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildLvlibpGithubHostedWindows -ArgsJson '{}' +pwsh ./actions/Invoke-OSAction.ps1 -ActionName Invoke-BuildSpecGithubHostedWindows -ArgsJson '{}' ``` #### Invoke-BuildViPackage diff --git a/ci_evidence.txt b/ci_evidence.txt index 40536157..dd38ea0a 100644 --- a/ci_evidence.txt +++ b/ci_evidence.txt @@ -1 +1 @@ -{"pipeline":"Unknown","git_sha":"b439b25a20d56192a48da7ea67ee7a60e670330d","req_status":{"REQ-023":"PASS","REQ-024":"PASS","REQ-025":"PASS","REQ-026":"PASS","REQ-027":"PASS","REQ-028":"PASS","REQ-029":"PASS","REQ-030":"PASS","REQ-031":"PASS","REQ-032":"PASS","REQ-033":"PASS"}} \ No newline at end of file +{"pipeline":"Unknown","git_sha":"5fbaea9b62f424424f5c5608977e4a5489f405be","req_status":{"REQ-023":"PASS","REQ-024":"PASS","REQ-025":"PASS","REQ-026":"PASS","REQ-027":"PASS","REQ-028":"PASS","REQ-029":"PASS","REQ-030":"PASS","REQ-031":"PASS","REQ-032":"PASS","REQ-033":"PASS"}} \ No newline at end of file diff --git a/dispatchers.json b/dispatchers.json index e833f877..126b4f7a 100644 --- a/dispatchers.json +++ b/dispatchers.json @@ -194,8 +194,8 @@ } } }, - "Invoke-BuildLvlibpDockerLinux": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-linux\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecDockerLinux": { + "description": "Builds LabVIEW build specification using Linux Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-linux\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", @@ -278,8 +278,8 @@ } } }, - "Invoke-BuildLvlibpDockerWindows": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-windows\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecDockerWindows": { + "description": "Builds LabVIEW build specification using Windows Docker container. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DockerImage: Docker image name (default: \"nationalinstruments/labview\"). ImageTag: Docker image tag (defaults to \"2026q1-windows\"). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", @@ -362,8 +362,8 @@ } } }, - "Invoke-BuildLvlibpGithubHostedWindows": { - "description": "Builds LabVIEW Packed Project Library (.lvlibp) using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", + "Invoke-BuildSpecGithubHostedWindows": { + "description": "Builds LabVIEW build specification using Windows GitHub-hosted runner. MinimumSupportedLVVersion: LabVIEW version for the build (e.g., \"2021\", \"2026\"). SupportedBitness: Bitness of the LabVIEW environment (\"32\" or \"64\"). ProjectPath: Path to the LabVIEW project .lvproj file. TargetName: Target that contains the build specification (optional, defaults to \"My Computer\"). BuildSpecName: Name of the LabVIEW build specification (optional, builds all if empty). Major: Major version component (optional, skips version setting if < 0). Minor: Minor version component (optional, skips version setting if < 0). Patch: Patch version component (optional, skips version setting if < 0). Build: Build number component (optional, skips version setting if < 0). Commit: Commit hash or identifier (optional). DryRun: If set, prints the command instead of executing it. gcliPath: Optional path prepended to PATH for locating the g CLI.", "parameters": { "Build": { "type": "number", From 287b89c149012e6073ae10e5f65718bfaaa38770 Mon Sep 17 00:00:00 2001 From: Krishna Sharma Date: Fri, 3 Apr 2026 15:22:42 +0530 Subject: [PATCH 3/3] Update default action in github runner [REQ-041] --- docs/scripts/build-spec-docker-linux.md | 1 + .../BuildSpecGithubHostedWindows.ps1 | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/scripts/build-spec-docker-linux.md b/docs/scripts/build-spec-docker-linux.md index a7d2a30f..94236067 100644 --- a/docs/scripts/build-spec-docker-linux.md +++ b/docs/scripts/build-spec-docker-linux.md @@ -74,6 +74,7 @@ Leave `build_spec_name` empty and provide version to set the same version on all - Docker must be installed and running on the host system - The specified Linux Docker image must contain LabVIEWCLI - The LabVIEW project file must exist at the specified path +- The Build specification must be supported in Linux. For more information on build specifications, take a look at the [LabVIEW User Manual](https://www.ni.com/docs/en-US/bundle/labview/page/using-build-specifications.html) See also: [docs/actions/build-spec-docker-linux.md](../actions/build-spec-docker-linux.md) diff --git a/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 b/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 index 13b50b9e..b22f527b 100644 --- a/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 +++ b/scripts/build-spec-github-hosted-windows/BuildSpecGithubHostedWindows.ps1 @@ -128,9 +128,9 @@ try { # 3. TargetName (empty string to use VI default) # 4. Version (required when setting version) $projectArg = (Resolve-Path $ProjectPath).Path - $buildSpecArg = if ($BuildSpecName) { $BuildSpecName } else { '""' } - $targetArg = if ($TargetName) { $TargetName } else { '""' } - $versionArg = if ($versionString) { $versionString } else { '""' } + $buildSpecArg = if ($BuildSpecName) { $BuildSpecName } else { '' } + $targetArg = if ($TargetName) { $TargetName } else { '' } + $versionArg = if ($versionString) { $versionString } else { '' } Write-Host "Executing: LabVIEWCLI -OperationName RunVI -LabVIEWPath `"$LabVIEWPath`" -VIPath `"$helperVI`" `"$projectArg`" `"$buildSpecArg`" `"$targetArg`" `"$versionArg`" -Headless"