Skip to content

Updating OSVVM (RandomPkg) and Scripts (RivieraPRO) #521

Updating OSVVM (RandomPkg) and Scripts (RivieraPRO)

Updating OSVVM (RandomPkg) and Scripts (RivieraPRO) #521

Workflow file for this run

name: OSVVM Regression Testing
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 15 * * *'
jobs:
Prepare:
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@r7
with:
release_tag_pattern: '2\d{3}\.\d{2}[a-z]?'
GHDL:
name: ${{ matrix.os.icon }}${{ matrix.os.name }} - GHDL ${{ matrix.backend }}
runs-on: ${{ matrix.os.image }}
strategy:
fail-fast: false
matrix:
os:
- {icon: "🐧", name: "Ubuntu", image: "ubuntu-24.04", shell: "bash", runtime: ""}
- {icon: "🍏", name: "macOS", image: "macos-15", shell: "bash", runtime: ""} # Wrong float values in generated XML, due to missing elapsed time in YAML files.
- {icon: "🪟🟨", name: "Windows", image: "windows-2025", shell: "msys2 {0}", runtime: "ucrt64"}
backend:
- mcode
- llvm
exclude:
- {os: {name: "macOS"}, backend: "mcode"} # mcode is not supported for aarch64
defaults:
run:
shell: ${{ matrix.os.shell }}
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: ${{ matrix.os.icon }} Setup MSYS2 for ${{ matrix.os.runtime }}
uses: msys2/setup-msys2@v2
if: runner.os == 'Windows' && matrix.os.runtime != ''
with:
msystem: ${{ matrix.os.runtime }}
update: true
install: git
pacboy: tcl:p tcllib:p
- name: ⚙️ Setup GHDL
uses: ghdl/setup-ghdl@v1
with:
version: nightly
runtime: ${{ matrix.os.runtime }}
backend: ${{ matrix.backend }}
- name: 🐧🛠️ Install tcl and tcllib
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends tcl tcllib
- name: 🍏🔧 Install newer TCL on macOS
if: runner.os == 'macOS'
run: |
brew install tcl-tk
- name: 🐛 Debug TCL version
run: |
echo 'puts [info patchlevel];exit 0' | tclsh
echo 'puts $tcl_version;exit 0' | tclsh
- name: 🚧 Run tests
run: |
mkdir temp
cd temp
tclsh ../.github/test.tcl StartGHDL.tcl
- name: '📤 Upload artifact: logs'
uses: actions/upload-artifact@v4
with:
name: log-html-${{ matrix.os.name }}-ghdl-${{ matrix.backend }}
include-hidden-files: true
path: |
temp/**/*.log
temp/**/*.html
temp/**/reports/*.html
temp/**/reports/**/*.html
temp/**/logs/**/*.*
temp/**/reports/*.css
temp/**/reports/*.png
temp/**/results/**/*.log
temp/**/results/**/*.txt
if-no-files-found: error
retention-days: 1
- name: '📤 Upload artifact: yaml'
uses: actions/upload-artifact@v4
with:
name: yaml-${{ matrix.os.name }}-ghdl-${{ matrix.backend }}
include-hidden-files: true
path: |
temp/**/*.yml
if-no-files-found: error
retention-days: 1
- name: '📤 Upload artifact: xml'
uses: actions/upload-artifact@v4
with:
name: xml-${{ matrix.os.name }}-ghdl-${{ matrix.backend }}
include-hidden-files: true
path: |
temp/**/*.xml
if-no-files-found: error
retention-days: 1
NVC:
name: ${{ matrix.icon }}${{ matrix.name }} - NVC
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- {icon: "🐧", name: "Ubuntu", image: "ubuntu-24.04", shell: "bash"}
## - {icon: "🪟", name: "Windows", image: "windows-2025", shell: "powershell"} # No TCL environment available. The embedded TCL of NVC doesn't contain tcllib.
- {icon: "🪟🟨", name: "Windows", image: "windows-2025", shell: "msys2 {0}"} # Installation in Windows via MSI, but called from UCRT64.
defaults:
run:
shell: ${{ matrix.shell }}
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: ${{ matrix.icon }} Setup MSYS2 for UCRT64
uses: msys2/setup-msys2@v2
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
with:
msystem: ucrt64
update: true
install: git tree
pacboy: tcl:p tcllib:p
- name: 🐧🛠️ Install tcl and tcllib
if: matrix.name == 'Ubuntu'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends tcl tcllib
- name: 🔧 Install NVC
uses: nickg/setup-nvc-ci@v1
with:
version: latest
- name: 🚧 Run tests on Ubuntu
if: matrix.name == 'Ubuntu'
run: |
mkdir temp
cd temp
tclsh ../.github/test.tcl StartNVC.tcl
- name: 🚧 Run tests on Windows + MSYS2/UCRT64
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
run: |
export PATH="/c/Program Files/NVC/bin:$PATH"
mkdir temp
cd temp
tclsh ../.github/test.tcl StartNVC.tcl
- name: '📤 Upload artifact: logs'
uses: actions/upload-artifact@v4
with:
name: log-html-${{ matrix.name }}-nvc
include-hidden-files: true
path: |
temp/**/*.log
temp/**/*.html
temp/**/reports/*.html
temp/**/reports/**/*.html
temp/**/logs/**/*.*
temp/**/reports/*.css
temp/**/reports/*.png
temp/**/results/**/*.log
temp/**/results/**/*.txt
if-no-files-found: error
retention-days: 1
- name: '📤 Upload artifact: yaml'
uses: actions/upload-artifact@v4
with:
name: yaml-${{ matrix.name }}-nvc
include-hidden-files: true
path: |
temp/**/*.yml
if-no-files-found: error
retention-days: 1
- name: '📤 Upload artifact: xml'
uses: actions/upload-artifact@v4
with:
name: xml-${{ matrix.name }}-nvc
include-hidden-files: true
path: |
temp/**/*.xml
if-no-files-found: error
retention-days: 1
PublishTestResults:
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r7
needs:
- GHDL
- NVC
if: success() || failure()
with:
unittest_artifacts_pattern: 'xml-*'
testsuite-summary-name: 'OSVVM Regression'
merge-input-dialect: 'Any-JUnit'
merge-output-dialect: 'pyTest-JUnit'
additional_merge_args: '--render=tree'
merged_junit_artifact: 'xml'
dorny: 'true'
Package:
name: 📦 Package OSVVMLibraries incl. all Git submodules as artifact
runs-on: ubuntu-24.04
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v6
with:
path: OsvvmLibraries
submodules: recursive
- name: Remove .git directory
run: |
rm -Rf OsvvmLibraries/.git
- name: 🔎 Inspect content of 'OsvvmLibraries' ...
run: |
tree OsvvmLibraries
- name: '📤 Upload artifact: osvvm'
uses: pyTooling/upload-artifact@v6
with:
name: osvvm
working-directory: OsvvmLibraries
path: |
*
.git*
include-hidden-files: true
if-no-files-found: error
retention-days: 1
TriggerTaggedRelease:
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@r7
needs:
- Prepare
- Package
- GHDL
- NVC
if: needs.Prepare.outputs.is_release_commit == 'true' && github.event_name != 'schedule'
permissions:
contents: write # required for create tag
actions: write # required for trigger workflow
with:
version: ${{ needs.Prepare.outputs.version }}
auto_tag: ${{ needs.Prepare.outputs.is_release_commit }}
secrets: inherit
Release:
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@r7
needs:
- Prepare
- Package
- GHDL
- NVC
if: needs.Prepare.outputs.is_release_tag == 'true'
permissions:
contents: write
actions: write
with:
replacements: |
osvvm=${{ needs.Prepare.outputs.version }}
tag: ${{ needs.Prepare.outputs.version }}
description_file: '.github/ReleaseDescription.md'
inventory-json: 'inventory.json'
inventory-version: ${{ needs.Prepare.outputs.version }}
inventory-categories: 'kind'
assets: |
osvvm: !OsvvmLibraries-%osvvm%.zip: osvvm,zip: OsvvmLibraries - %osvvm% - all-in-one (ZIP)
osvvm: $OsvvmLibraries-%osvvm%.tar.gz: osvvm,tgz: OsvvmLibraries - %osvvm% - all-in-one (TAR/GZ)
osvvm: $OsvvmLibraries-%osvvm%.tar.zst: osvvm,tzst: OsvvmLibraries - %osvvm% - all-in-one (TAR/ZST)
secrets: inherit