Updating OSVVM (RandomPkg) and Scripts (RivieraPRO) #521
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |