Skip to content

Commit 6492fbc

Browse files
committed
Test setup-nvc.
1 parent 983b93e commit 6492fbc

File tree

2 files changed

+129
-64
lines changed

2 files changed

+129
-64
lines changed

.github/OsvvmRegression.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
set ::osvvm::FailOnBuildErrors "false"
22
include ../OsvvmLibraries.pro
3-
include ../RunAllTests.pro
4-
include ../RunAllTestsVti.pro
3+
# include ../RunAllTests.pro
4+
# include ../RunAllTestsVti.pro

.github/workflows/Pipeline.yml

Lines changed: 127 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,34 @@ on:
88
- cron: '0 15 * * *'
99

1010
jobs:
11+
Variables:
12+
name: Compute pipeline variables
13+
runs-on: ubuntu-24.04
14+
outputs:
15+
branch: ${{ steps.Variables.outputs.branch }}
16+
tag: ${{ steps.Variables.outputs.tag }}
17+
steps:
18+
- name: Compute variables
19+
id: Variables
20+
run: |
21+
ref="${{ github.ref }}"
22+
23+
branch=""
24+
tag="2025.xx"
25+
if [[ "${{ startsWith(github.ref, 'refs/heads/') }}" == "true" ]]; then
26+
branch="${ref:11}"
27+
elif [[ "${{ startsWith(github.ref, 'refs/tags/') }}" == "true" ]]; then
28+
tag="${ref:10}"
29+
else
30+
printf "::error title=%s::%s\n" "Variables" "Unsupported Git reference format: '${ref}'."
31+
exit 1
32+
fi
33+
34+
tee "${GITHUB_OUTPUT}" <<EOF
35+
branch=${branch}
36+
tag=${tag}
37+
EOF
38+
1139
GHDL:
1240
name: ${{ matrix.os.icon }}${{ matrix.os.name }} - GHDL ${{ matrix.backend }}
1341
runs-on: ${{ matrix.os.image }}
@@ -97,63 +125,64 @@ jobs:
97125
if-no-files-found: error
98126

99127
NVC:
100-
name: 🪟Windows - NVC
101-
runs-on: windows-2022
128+
name: ${{ matrix.icon }}${{ matrix.name }} - NVC
129+
runs-on: ${{ matrix.image }}
130+
strategy:
131+
fail-fast: false
132+
matrix:
133+
include:
134+
- {icon: "🐧", name: "Ubuntu", image: "ubuntu-24.04", shell: "bash"}
135+
# - {icon: "🪟", name: "Windows", image: "windows-2022", shell: "powershell"} # No TCL environment available. The embedded TCL of NVC doesn't contain tcllib.
136+
- {icon: "🪟🟨", name: "Windows", image: "windows-2022", shell: "msys2 {0}"}
102137

103138
defaults:
104139
run:
105-
shell: "msys2 {0}"
140+
shell: ${{ matrix.shell }}
106141

107142
steps:
108143
- name: ⏬ Checkout repository
109144
uses: actions/checkout@v4
110145
with:
111146
submodules: recursive
112147

113-
- name: 🟨 Setup MSYS2 for UCRT64
148+
- name: ${{ matrix.icon }} Setup MSYS2 for UCRT64
149+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
114150
uses: msys2/setup-msys2@v2
115151
with:
116152
msystem: ucrt64
117153
update: true
118-
install: git
154+
install: git tree
119155
pacboy: tcl:p tcllib:p
120156

121-
- name: 🐧🛠️ Install NVC
157+
- name: 🐧🛠️ Install tcl and tcllib
158+
if: matrix.name == 'Ubuntu'
122159
run: |
123-
# See https://github.com/nickg/nvc/releases
124-
# and https://github.com/nickg/nvc/issues/1131
125-
NVC_VERSION="1.15.0"
126-
NVC_DATE="20250111"
127-
NVC_HASH="ec21477e"
128-
129-
ANSI_LIGHT_RED=$'\x1b[91m'
130-
ANSI_LIGHT_GREEN=$'\x1b[92m'
131-
ANSI_LIGHT_BLUE="\e[94m"
132-
ANSI_NOCOLOR=$'\x1b[0m'
133-
134-
DOWNLOAD_URL="https://github.com/nickg/nvc/releases/download/r${NVC_VERSION}/mingw-w64-ucrt-x86_64-nvc-${NVC_VERSION}.git${NVC_DATE}.${NVC_HASH}-1-any.pkg.tar.zst"
135-
printf "::group::${ANSI_LIGHT_BLUE}%s${ANSI_NOCOLOR}\n" "Downloading asset from '${DOWNLOAD_URL}' ..."
136-
curl -L "${DOWNLOAD_URL}" -o nvc.pkg.tar.zst
137-
printf "::endgroup::\n"
138-
139-
printf "::group::${ANSI_LIGHT_BLUE}%s${ANSI_NOCOLOR}\n" "Installing 'nvc.pkg.tar.zst' file ..."
140-
pacman -U --noconfirm nvc.pkg.tar.zst
141-
printf "::endgroup::\n"
142-
143-
printf "Deleting '%s' ... " "nvc.pkg.tar.zst"
144-
rm "nvc.pkg.tar.zst"
145-
if [[ $? -eq 0 ]]; then
146-
printf "%s\n" "${ANSI_LIGHT_GREEN}[OK]${ANSI_NOCOLOR}"
147-
else
148-
printf "%s\n" "${ANSI_LIGHT_RED}[FAILED]${ANSI_NOCOLOR}"
149-
printf "::warning title=%s::%s\n" "setup-nvc" "Failed to remove 'nvc.pkg.tar.zst'."
150-
fi
160+
sudo apt-get update
161+
sudo apt-get install -y --no-install-recommends tcl tcllib
151162
152-
- name: 🚧 Run tests'
163+
- name: Install NVC
164+
uses: nickg/setup-nvc-ci@v1
165+
with:
166+
version: latest
167+
168+
- name: 🚧 Run tests on Ubuntu
169+
if: matrix.name == 'Ubuntu'
170+
run: |
171+
mkdir temp
172+
cd temp
173+
174+
tclsh ../.github/test.tcl StartNVC.tcl
175+
176+
- name: 🚧 Run tests on Windows + MSYS2/UCRT64
177+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
153178
run: |
154179
mkdir temp
155180
cd temp
156181
182+
tree "/c/Program Files/NVC"
183+
184+
export PATH="/c/Program\ Files/NVC/bin:$PATH"
185+
157186
tclsh ../.github/test.tcl StartNVC.tcl
158187
159188
- name: '📤 Upload artifact: logs'
@@ -190,36 +219,15 @@ jobs:
190219
if-no-files-found: error
191220

192221
PublishTestResults:
193-
name: 📊 Publish Unit Tests Results
194-
runs-on: ubuntu-24.04
222+
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r4
195223
needs:
196224
- GHDL
197225
- NVC
198-
199-
if: always()
200-
201-
steps:
202-
- name: ⏬ Checkout repository
203-
uses: actions/checkout@v4
204-
205-
- name: '📥 Download artifact: package'
206-
uses: actions/download-artifact@v4
207-
with:
208-
path: artifacts
209-
pattern: xml-*
210-
211-
- name: List all artifacts
212-
run: |
213-
tree artifacts
214-
215-
- name: 📊 Publish Unit Test Results
216-
uses: dorny/test-reporter@v1
217-
with:
218-
name: OSVVM VC Regression Results
219-
path: artifacts/**/*.xml
220-
reporter: java-junit
221-
list-suites: all
222-
list-tests: failed
226+
with:
227+
unittest_artifacts_pattern: 'xml-*'
228+
merged_junit_artifact: 'xml'
229+
additional_merge_args: '-d "--render=tree" "--name=OSVVM Regression" "--pytest=rewrite-dunder-init;reduce-depth:pytest.testsuite.pyunit;split:pytest"'
230+
publish: ${{ github.event_name != 'pull_request' }}
223231

224232
Package:
225233
name: Package OSVVMLibraries incl. all Git submodules as artifact
@@ -230,6 +238,7 @@ jobs:
230238
uses: actions/checkout@v4
231239
with:
232240
path: OsvvmLibraries
241+
submodules: recursive
233242

234243
- name: List content of 'OsvvmLibraries' ...
235244
run: |
@@ -241,4 +250,60 @@ jobs:
241250
name: osvvm
242251
path: |
243252
OsvvmLibraries/*
253+
include-hidden-files: true
244254
if-no-files-found: error
255+
256+
Release:
257+
uses: pyTooling/Actions/.github/workflows/NightlyRelease.yml@dev
258+
needs:
259+
- Variables
260+
- Package
261+
# if: github.ref == 'refs/tags/testing'
262+
# if: startsWith(github.ref, 'refs/tags/v')
263+
secrets: inherit
264+
permissions:
265+
contents: write
266+
actions: write
267+
attestations: write
268+
with:
269+
prerelease: true
270+
replacements: |
271+
osvvm=${{ needs.Variables.outputs.tag }}
272+
nightly_name: testing
273+
nightly_description: |
274+
This release contains all important artifacts created by OSVVM's CI pipeline.
275+
276+
# OSVVM %osvvm%
277+
278+
All Git repositories and submodules have been packaged in a single zip file. This file contains the following
279+
OSVVM components.
280+
281+
## Core Components
282+
* [OSVVM Utility Library](https://github.com/OSVVM/OSVVM)
283+
* [OSVVM Model Independent Transactions](https://github.com/OSVVM/OSVVM-Common)
284+
285+
## Verification Components
286+
* [AXI4](https://github.com/OSVVM/AXI4)
287+
* [CoSim](https://github.com/OSVVM/CoSim)
288+
* [DpRam](https://github.com/OSVVM/DpRam)
289+
* [Ethernet](https://github.com/OSVVM/Ethernet)
290+
* [UART](https://github.com/OSVVM/UART)
291+
292+
## Third-Party Verification Components
293+
* [SPI (by Guy Eschemann)](https://github.com/OSVVM/SPI_GuyEschemann)
294+
* [VideoBus (by Louis Adriaens)](https://github.com/OSVVM/VideoBus_LouisAdriaens)
295+
296+
## Scripting
297+
* [OSVVM Scripts](https://github.com/OSVVM/OSVVM-Scripts)
298+
299+
## Documentation
300+
301+
* [Documentation](https://github.com/OSVVM/Documentation)
302+
303+
inventory-json: "inventory.json"
304+
inventory-version: ${{ needs.Variables.outputs.tag }}
305+
inventory-categories: "kind"
306+
assets: |
307+
osvvm: !OsvvmLibraries-%osvvm%.zip: osvvm,zip: OsvvmLibraries - %osvvm% - all-in-one (ZIP)
308+
osvvm: $OsvvmLibraries-%osvvm%.tar.gz: osvvm,tgz: OsvvmLibraries - %osvvm% - all-in-one (TAR/GZ)
309+
osvvm: $OsvvmLibraries-%osvvm%.tar.zst: osvvm,tzst: OsvvmLibraries - %osvvm% - all-in-one (TAR/ZST)

0 commit comments

Comments
 (0)