88 - cron : ' 0 15 * * *'
99
1010jobs :
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,65 +125,68 @@ 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
118154 install : git
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'
153170 run : |
154171 mkdir temp
155172 cd temp
156173
157174 tclsh ../.github/test.tcl StartNVC.tcl
158175
176+ - name : 🚧 Run tests on Windows + MSYS2/UCRT64
177+ if : matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
178+ run : |
179+ mkdir temp
180+ cd temp
181+
182+ ls /c/
183+ ls "/c/Program Files"
184+ tree "/c/Program Files/NVC"
185+
186+ export PATH="/c/Program\ Files/NVC/bin:$PATH"
187+
188+ tclsh ../.github/test.tcl StartNVC.tcl
189+
159190 - name : ' 📤 Upload artifact: logs'
160191 uses : actions/upload-artifact@v4
161192 with :
@@ -230,6 +261,7 @@ jobs:
230261 uses : actions/checkout@v4
231262 with :
232263 path : OsvvmLibraries
264+ submodules : recursive
233265
234266 - name : List content of 'OsvvmLibraries' ...
235267 run : |
@@ -241,4 +273,60 @@ jobs:
241273 name : osvvm
242274 path : |
243275 OsvvmLibraries/*
276+ include-hidden-files : true
244277 if-no-files-found : error
278+
279+ Release :
280+ uses : pyTooling/Actions/.github/workflows/NightlyRelease.yml@dev
281+ needs :
282+ - Variables
283+ - Package
284+ # if: github.ref == 'refs/tags/testing'
285+ # if: startsWith(github.ref, 'refs/tags/v')
286+ secrets : inherit
287+ permissions :
288+ contents : write
289+ actions : write
290+ attestations : write
291+ with :
292+ prerelease : true
293+ replacements : |
294+ osvvm=${{ needs.Variables.outputs.tag }}
295+ nightly_name : testing
296+ nightly_description : |
297+ This release contains all important artifacts created by OSVVM's CI pipeline.
298+
299+ # OSVVM %osvvm%
300+
301+ All Git repositories and submodules have been packaged in a single zip file. This file contains the following
302+ OSVVM components.
303+
304+ ## Core Components
305+ * [OSVVM Utility Library](https://github.com/OSVVM/OSVVM)
306+ * [OSVVM Model Independent Transactions](https://github.com/OSVVM/OSVVM-Common)
307+
308+ ## Verification Components
309+ * [AXI4](https://github.com/OSVVM/AXI4)
310+ * [CoSim](https://github.com/OSVVM/CoSim)
311+ * [DpRam](https://github.com/OSVVM/DpRam)
312+ * [Ethernet](https://github.com/OSVVM/Ethernet)
313+ * [UART](https://github.com/OSVVM/UART)
314+
315+ ## Third-Party Verification Components
316+ * [SPI (by Guy Eschemann)](https://github.com/OSVVM/SPI_GuyEschemann)
317+ * [VideoBus (by Louis Adriaens)](https://github.com/OSVVM/VideoBus_LouisAdriaens)
318+
319+ ## Scripting
320+ * [OSVVM Scripts](https://github.com/OSVVM/OSVVM-Scripts)
321+
322+ ## Documentation
323+
324+ * [Documentation](https://github.com/OSVVM/Documentation)
325+
326+ inventory-json : " inventory.json"
327+ inventory-version : ${{ needs.Variables.outputs.tag }}
328+ inventory-categories : " kind"
329+ assets : |
330+ osvvm: !OsvvmLibraries-%osvvm%.zip: osvvm,zip: OsvvmLibraries - %osvvm% - all-in-one (ZIP)
331+ osvvm: $OsvvmLibraries-%osvvm%.tar.gz: osvvm,tgz: OsvvmLibraries - %osvvm% - all-in-one (TAR/GZ)
332+ osvvm: $OsvvmLibraries-%osvvm%.tar.zst: osvvm,tzst: OsvvmLibraries - %osvvm% - all-in-one (TAR/ZST)
0 commit comments