Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
164041f
docs: use Material theme for MkDocs
Aug 19, 2025
e686019
Merge pull request #21 from LabVIEW-Community-CI-CD/codex/update-mkdo…
Aug 19, 2025
c7999d6
docs: enable markdown extensions
Aug 19, 2025
3bc68e6
Merge pull request #22 from LabVIEW-Community-CI-CD/codex/add-markdow…
Aug 19, 2025
d9e634f
Update mkdocs.yml
Aug 19, 2025
6202842
feat: enable mkdocs plugins
Aug 19, 2025
183e383
Merge pull request #23 from LabVIEW-Community-CI-CD/codex/append-plug…
Aug 19, 2025
135aae8
docs: watch scripts and enforce strict mode
Aug 19, 2025
f1caca2
Merge pull request #24 from LabVIEW-Community-CI-CD/codex/update-mkdo…
Aug 19, 2025
bef5483
docs: add workflow examples
Aug 19, 2025
378130c
Merge pull request #25 from LabVIEW-Community-CI-CD/codex/create-work…
Aug 19, 2025
6048eb4
feat: add palette to mkdocs
Aug 19, 2025
84448a5
Merge pull request #26 from LabVIEW-Community-CI-CD/codex/add-palette…
Aug 19, 2025
51eeb5d
docs: add architecture flow diagram
Aug 19, 2025
a2816f8
Merge pull request #27 from LabVIEW-Community-CI-CD/codex/create-flow…
Aug 19, 2025
b6f3e14
docs: group actions by workflow stage
Aug 19, 2025
36d5482
Merge pull request #28 from LabVIEW-Community-CI-CD/codex/refactor-ac…
Aug 19, 2025
61df698
Enable PATH restoration tests
Aug 19, 2025
3422b17
Merge pull request #29 from LabVIEW-Community-CI-CD/codex/identify-sk…
Aug 19, 2025
47d2fa5
refactor: extract markdown utilities
Aug 19, 2025
72a03d0
Merge pull request #30 from LabVIEW-Community-CI-CD/codex/create-mark…
Aug 19, 2025
6d458b6
feat: centralize test status counting
Aug 19, 2025
b28e1d2
Merge pull request #31 from LabVIEW-Community-CI-CD/codex/add-compute…
Aug 19, 2025
b9bd4cb
refactor: modularize CI summary
Aug 19, 2025
f5a67b8
Merge pull request #32 from LabVIEW-Community-CI-CD/codex/refactor-su…
Aug 19, 2025
50cbd7c
test: verify summary markdown generation
Aug 19, 2025
0672cc1
Merge pull request #33 from LabVIEW-Community-CI-CD/codex/add-tests-f…
Aug 19, 2025
16a4bc5
refactor: use junit parser for test collection
Aug 19, 2025
dc2a2bc
Merge pull request #34 from LabVIEW-Community-CI-CD/codex/refactor-co…
Aug 19, 2025
b4eb3e6
refactor: modularize CI summary helpers
Aug 19, 2025
463d633
Merge pull request #35 from LabVIEW-Community-CI-CD/codex/create-summ…
Aug 19, 2025
5754c9f
Escape additional Markdown characters
Aug 19, 2025
86cd752
Merge pull request #36 from LabVIEW-Community-CI-CD/codex/update-esca…
Aug 19, 2025
fced859
Handle invalid JUnit files gracefully
Aug 19, 2025
0924df7
Merge pull request #37 from LabVIEW-Community-CI-CD/codex/wrap-xml-pa…
Aug 19, 2025
c7af2b3
test: cover groupToMarkdown truncation
Aug 19, 2025
c5a7561
Merge pull request #38 from LabVIEW-Community-CI-CD/codex/add-tests-f…
Aug 19, 2025
6101e44
feat: validate requirement schema
Aug 19, 2025
61d4089
Merge pull request #39 from LabVIEW-Community-CI-CD/codex/define-inte…
Aug 19, 2025
b2e7cf4
refactor report job to use artifacts
Aug 19, 2025
9f47ce4
Merge pull request #40 from LabVIEW-Community-CI-CD/codex/refactor-re…
Aug 19, 2025
486208e
Limit CI summary to current artifacts
Aug 19, 2025
0ca1cf0
Merge pull request #41 from LabVIEW-Community-CI-CD/codex/narrow-defa…
Aug 19, 2025
5062944
Handle latest Pester JUnit artifacts
Aug 19, 2025
5a7aa15
Merge pull request #42 from LabVIEW-Community-CI-CD/codex/filter-late…
Aug 19, 2025
61544bd
docs: fix markdown link check instructions
Aug 19, 2025
7210c12
Merge pull request #43 from LabVIEW-Community-CI-CD/codex/fix-agents.…
Aug 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/ci.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
{
"run": "npm run derive:registry"
},
{
"run": "rm -rf artifacts"
},
{
"run": "npm run generate:summary",
"env": {
Expand Down Expand Up @@ -174,10 +177,13 @@
{
"run": "npm install"
},
{
"run": "rm -rf artifacts"
},
{
"uses": "actions/download-artifact@v4",
"with": {
"path": "./downloaded"
"path": "./artifacts"
}
},
{
Expand All @@ -186,10 +192,10 @@
{
"run": "npm run generate:summary",
"env": {
"TEST_RESULTS_GLOBS": "downloaded/test-results/**/*junit*.xml\ndownloaded/pester-junit-*/pester-junit.xml\n",
"TEST_RESULTS_GLOBS": "artifacts/test-results/**/*junit*.xml\nartifacts/pester-junit-*/pester-junit.xml\n",
"REQ_MAPPING_FILE": "requirements.json",
"DISPATCHER_REGISTRY": "dispatchers.json",
"EVIDENCE_DIR": "downloaded/evidence"
"EVIDENCE_DIR": "artifacts/evidence"
}
},
{
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
- run: npm run link:check
- run: npm run test:ci
- run: npm run derive:registry
- run: rm -rf artifacts
- run: npm run generate:summary
env:
TEST_RESULTS_GLOBS: test-results/*junit*.xml
Expand Down Expand Up @@ -142,16 +143,17 @@ jobs:
node-version: 24
- run: npm run check:node
- run: npm install
- run: rm -rf artifacts
- uses: actions/download-artifact@v4
with:
path: ./downloaded
path: ./artifacts
- run: npm run derive:registry
- run: npm run generate:summary
env:
TEST_RESULTS_GLOBS: |
downloaded/test-results/**/*junit*.xml
downloaded/pester-junit-*/pester-junit.xml
artifacts/test-results/**/*junit*.xml
artifacts/pester-junit-*/pester-junit.xml
REQ_MAPPING_FILE: requirements.json
DISPATCHER_REGISTRY: dispatchers.json
EVIDENCE_DIR: downloaded/evidence
EVIDENCE_DIR: artifacts/evidence
- run: npx tsx scripts/print-pester-traceability.ts >> "$GITHUB_STEP_SUMMARY"
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@
- Run `npm install` to ensure Node dependencies are available.
- Run `npm test`.
- Run `npm run lint:md` to lint Markdown files.
- Run `npx --yes markdown-link-check -q -c .markdown-link-check.json README.md $(find docs scripts -name '*.md')` to verify links.
- Run `npx --yes markdown-link-check -c .markdown-link-check.json README.md $(find docs scripts -name '*.md')` to verify links and ensure failures are visible.
- Run `actionlint` to validate GitHub Actions workflows.
- Run `pwsh -NoLogo -Command "$cfg = New-PesterConfiguration; $cfg.Run.Path = './tests/pester'; $cfg.TestResult.Enabled = $false; Invoke-Pester -Configuration $cfg"` and ensure all tests pass (XML output is intentionally disabled).
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ npm install
npm test
```

For CI, `npm run test:ci` emits a JUnit XML report that [scripts/generate-ci-summary.ts](scripts/generate-ci-summary.ts) parses to build requirement traceability files in OS‑specific subdirectories (e.g., `artifacts/windows`, `artifacts/linux`) based on the `RUNNER_OS` environment variable.
For CI, `npm run test:ci` emits a JUnit XML report that [scripts/generate-ci-summary.ts](scripts/generate-ci-summary.ts) parses to build requirement traceability files in OS‑specific subdirectories (e.g., `artifacts/windows`, `artifacts/linux`) based on the `RUNNER_OS` environment variable. The summary script searches `artifacts/` by default; set `TEST_RESULTS_GLOBS` if your reports are elsewhere.

Pester tests cover the dispatcher and helper modules. See [docs/testing-pester.md](docs/testing-pester.md) for guidelines on using the canonical argument helper and adding new tests. Run them with:

Expand Down
2 changes: 2 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ The Open Source LabVIEW Actions project exposes multiple LabVIEW CI/CD steps thr

`Invoke-OSAction.ps1` routes incoming requests to the appropriate adapter script. The dispatcher discovers available actions, forwards command-line arguments, and preserves exit codes.

![Dispatcher to adapter to action flow](images/architecture.svg)

## Adapter scripts

Each action lives in a `scripts/<action-name>` folder. These PowerShell scripts implement the build or test work and are invoked by the dispatcher with the JSON arguments supplied by the GitHub Action.
Expand Down
6 changes: 5 additions & 1 deletion docs/contributing-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,11 @@ MkDocs serves the site at <http://127.0.0.1:8000/> by default. The server automa

## JUnit integration

The CI pipeline collects JUnit XML output from both Node and PowerShell tests. `scripts/generate-ci-summary.ts` parses these files to build the requirement traceability report. Use `npm run test:ci` to produce the Node JUnit report when verifying documentation updates.
The CI pipeline collects JUnit XML output from both Node and PowerShell tests. `scripts/generate-ci-summary.ts` parses these files to build the requirement traceability report. Use `npm run test:ci` to produce the Node JUnit report when verifying documentation updates. By default, the summary script only searches `artifacts/` for JUnit XML files; if your results are elsewhere, pass a glob via `TEST_RESULTS_GLOBS`, for example:

```bash
TEST_RESULTS_GLOBS='test-results/*junit*.xml' npm run generate:summary
```

### Pester properties

Expand Down
43 changes: 43 additions & 0 deletions docs/images/architecture.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 17 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,20 @@ Open Source LabVIEW Actions unifies LabVIEW CI/CD scripts behind a single PowerS

| Workflow | Purpose |
| --- | --- |
| [run-pester-tests](workflows/run-pester-tests.md) | Run Pester tests in a target repository. |
| [add-token-to-labview](workflows/add-token-to-labview.md) | Add a custom library path token to the LabVIEW INI file so LabVIEW can locate project libraries. |
| [apply-vipc](workflows/apply-vipc.md) | Apply a VI Package Configuration (.vipc) file to a specific LabVIEW installation using g-cli. |
| [build-lvlibp](workflows/build-lvlibp.md) | Build a LabVIEW project’s build specification into a Packed Project Library (.lvlibp). |
| [build-vi-package](workflows/build-vi-package.md) | Update VIPB display information and build a VI package using g-cli. |
| [build](workflows/build.md) | Automate building the LabVIEW Icon Editor project, including cleaning, building libraries, and packaging. |
| [close-labview](workflows/close-labview.md) | Gracefully close a running LabVIEW instance via g-cli. |
| [generate-release-notes](workflows/generate-release-notes.md) | Generate release notes from the git history and write them to a markdown file. |
| [missing-in-project](workflows/missing-in-project.md) | Check that all files in a LabVIEW project are present by scanning for items missing from the `.lvproj`. |
| [modify-vipb-display-info](workflows/modify-vipb-display-info.md) | Update display information in a VIPB file and rebuild the VI package. |
| [prepare-labview-source](workflows/prepare-labview-source.md) | Run PrepareIESource.vi via g-cli to unzip components and configure LabVIEW for building. |
| [rename-file](workflows/rename-file.md) | Rename a file if it exists. |
| [restore-setup-lv-source](workflows/restore-setup-lv-source.md) | Restore the LabVIEW source setup by unzipping the LabVIEW Icon API and removing the INI token. |
| [revert-development-mode](workflows/revert-development-mode.md) | Restore the repository from development mode by restoring packaged sources and closing LabVIEW. |
| [run-pester-tests](workflows/run-pester-tests.md) | Run PowerShell Pester tests in a repository. |
| [run-unit-tests](workflows/run-unit-tests.md) | Run LabVIEW unit tests via the LabVIEW Unit Test Framework CLI and report pass/fail/error using standard exit codes. |
| [set-development-mode](workflows/set-development-mode.md) | Configure the repository for development mode by removing packed libraries, adding tokens, preparing sources, and closing LabVIEW. |
| [setup-mkdocs](workflows/setup-mkdocs.md) | Install a pinned MkDocs with caching. |
49 changes: 49 additions & 0 deletions docs/workflows/add-token-to-labview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# add-token-to-labview workflow

## Purpose

Dispatch the [add-token-to-labview](../actions/add-token-to-labview.md) action to a target repository through `Invoke-OSAction.ps1`.

## Inputs

| Input | Description |
| --- | --- |
| `repository` | Repository in `owner/repo` format to operate on. |
| `ref` | Branch or tag to check out. Defaults to `main`. |

## Required secrets

| Secret | Description |
| --- | --- |
| `REPO_TOKEN` | Personal access token with permission to read the target repository. |

## Example

```yaml
name: add-token-to-labview
on:
workflow_dispatch:
inputs:
repository:
description: 'owner/repo of the repository to target'
required: true
ref:
description: 'Branch or tag to check out'
required: false
default: 'main'
jobs:
add-token-to-labview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout target repository
uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
path: target
token: ${{ secrets.REPO_TOKEN }}
- name: Run add-token-to-labview
shell: pwsh
run: ./actions/Invoke-OSAction.ps1 -ActionName add-token-to-labview -WorkingDirectory "${{ github.workspace }}/target"
```
49 changes: 49 additions & 0 deletions docs/workflows/apply-vipc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# apply-vipc workflow

## Purpose

Dispatch the [apply-vipc](../actions/apply-vipc.md) action to a target repository through `Invoke-OSAction.ps1`.

## Inputs

| Input | Description |
| --- | --- |
| `repository` | Repository in `owner/repo` format to operate on. |
| `ref` | Branch or tag to check out. Defaults to `main`. |

## Required secrets

| Secret | Description |
| --- | --- |
| `REPO_TOKEN` | Personal access token with permission to read the target repository. |

## Example

```yaml
name: apply-vipc
on:
workflow_dispatch:
inputs:
repository:
description: 'owner/repo of the repository to target'
required: true
ref:
description: 'Branch or tag to check out'
required: false
default: 'main'
jobs:
apply-vipc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout target repository
uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
path: target
token: ${{ secrets.REPO_TOKEN }}
- name: Run apply-vipc
shell: pwsh
run: ./actions/Invoke-OSAction.ps1 -ActionName apply-vipc -WorkingDirectory "${{ github.workspace }}/target"
```
49 changes: 49 additions & 0 deletions docs/workflows/build-lvlibp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# build-lvlibp workflow

## Purpose

Dispatch the [build-lvlibp](../actions/build-lvlibp.md) action to a target repository through `Invoke-OSAction.ps1`.

## Inputs

| Input | Description |
| --- | --- |
| `repository` | Repository in `owner/repo` format to operate on. |
| `ref` | Branch or tag to check out. Defaults to `main`. |

## Required secrets

| Secret | Description |
| --- | --- |
| `REPO_TOKEN` | Personal access token with permission to read the target repository. |

## Example

```yaml
name: build-lvlibp
on:
workflow_dispatch:
inputs:
repository:
description: 'owner/repo of the repository to target'
required: true
ref:
description: 'Branch or tag to check out'
required: false
default: 'main'
jobs:
build-lvlibp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout target repository
uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
path: target
token: ${{ secrets.REPO_TOKEN }}
- name: Run build-lvlibp
shell: pwsh
run: ./actions/Invoke-OSAction.ps1 -ActionName build-lvlibp -WorkingDirectory "${{ github.workspace }}/target"
```
49 changes: 49 additions & 0 deletions docs/workflows/build-vi-package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# build-vi-package workflow

## Purpose

Dispatch the [build-vi-package](../actions/build-vi-package.md) action to a target repository through `Invoke-OSAction.ps1`.

## Inputs

| Input | Description |
| --- | --- |
| `repository` | Repository in `owner/repo` format to operate on. |
| `ref` | Branch or tag to check out. Defaults to `main`. |

## Required secrets

| Secret | Description |
| --- | --- |
| `REPO_TOKEN` | Personal access token with permission to read the target repository. |

## Example

```yaml
name: build-vi-package
on:
workflow_dispatch:
inputs:
repository:
description: 'owner/repo of the repository to target'
required: true
ref:
description: 'Branch or tag to check out'
required: false
default: 'main'
jobs:
build-vi-package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout target repository
uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
path: target
token: ${{ secrets.REPO_TOKEN }}
- name: Run build-vi-package
shell: pwsh
run: ./actions/Invoke-OSAction.ps1 -ActionName build-vi-package -WorkingDirectory "${{ github.workspace }}/target"
```
Loading
Loading