
This change means that tests will succeed even if the system Yosys binary is broken. yices2 must still be present on the system.
148 lines
4.1 KiB
YAML
148 lines
4.1 KiB
YAML
on:
|
|
push:
|
|
pull_request:
|
|
merge_group:
|
|
|
|
name: CI
|
|
jobs:
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version:
|
|
- '3.8'
|
|
- '3.9'
|
|
- '3.10'
|
|
- '3.11'
|
|
- 'pypy-3.8'
|
|
- 'pypy-3.9'
|
|
allow-failure:
|
|
- false
|
|
include:
|
|
- python-version: '3.12-dev'
|
|
allow-failure: true
|
|
continue-on-error: '${{ matrix.allow-failure }}'
|
|
name: 'test (${{ matrix.python-version }})'
|
|
steps:
|
|
- name: Preserve Wasm cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/wasmtime
|
|
~/.cache/YoWASP
|
|
key: ${{ runner.os }}-wasm
|
|
- name: Check out source code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Set up PDM
|
|
uses: pdm-project/setup-pdm@v3
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FA8E1301F4D3932C
|
|
sudo add-apt-repository 'deb http://ppa.launchpad.net/sri-csl/formal-methods/ubuntu bionic main'
|
|
sudo apt-get update
|
|
sudo apt-get install yices2
|
|
pip install codecov
|
|
pdm install --dev
|
|
- name: Run tests
|
|
run: |
|
|
pdm run test
|
|
- name: Submit code coverage
|
|
run:
|
|
codecov
|
|
|
|
document:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Fetch tags from upstream repository
|
|
run: |
|
|
git fetch --tags https://github.com/amaranth-lang/amaranth.git
|
|
- name: Set up PDM
|
|
uses: pdm-project/setup-pdm@v3
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Install dependencies
|
|
run: |
|
|
pdm install --dev
|
|
- name: Build documentation
|
|
run: |
|
|
pdm run document
|
|
- name: Upload documentation archive
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: docs
|
|
path: docs/_build
|
|
|
|
required: # group all required workflows into one for the required status check
|
|
needs:
|
|
- test
|
|
- document
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: |
|
|
true
|
|
|
|
publish-docs:
|
|
needs: document
|
|
if: github.repository == 'amaranth-lang/amaranth'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Download documentation archive
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: docs
|
|
path: docs/
|
|
- name: Publish development documentation
|
|
if: github.event_name == 'push' && github.event.ref == 'refs/heads/main'
|
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
|
with:
|
|
repository-name: amaranth-lang/amaranth-lang.github.io
|
|
ssh-key: ${{ secrets.PAGES_DEPLOY_KEY }}
|
|
branch: main
|
|
folder: docs/
|
|
target-folder: docs/amaranth/latest/
|
|
- name: Publish release documentation
|
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
|
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
|
with:
|
|
repository-name: amaranth-lang/amaranth-lang.github.io
|
|
ssh-key: ${{ secrets.PAGES_DEPLOY_KEY }}
|
|
branch: main
|
|
folder: docs/
|
|
target-folder: docs/amaranth/${{ github.ref_name }}/
|
|
|
|
publish-docs-dev:
|
|
needs: document
|
|
if: github.repository != 'amaranth-lang/amaranth'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Download documentation archive
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: docs
|
|
path: pages/docs/${{ github.ref_name }}/
|
|
- name: Disable Jekyll
|
|
run: |
|
|
touch pages/.nojekyll
|
|
- name: Publish documentation for a branch
|
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
|
with:
|
|
folder: pages/
|
|
clean: false
|