name: build on: push: branches: - main - 'dev/**' pull_request: branches: [ main ] release: types: - published # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: test: strategy: matrix: python-version: - "3.10" - "3.11" - "3.12" - "3.13" - "3.14" include: - os: ubuntu-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - name: Install UV uses: astral-sh/setup-uv@v6 - name: Set up Python ${{ matrix.python-version }} run: | uv venv -p ${{ matrix.python-version }} .venv - name: Install dependencies run: | uv sync --group test - name: Install run: | python -m pip install ".[cli]" - name: Test run: | cd tests pytest --cov=peakrdl_busdecoder --synth-tool skip --sim-tool stub - name: Coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COVERALLS_PARALLEL: true run: | cd tests coveralls --service=github finish_coveralls: needs: test runs-on: ubuntu-latest steps: - name: Setup Python uses: actions/setup-python@v4 with: python-version: 3.x - name: Coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COVERALLS_PARALLEL: true run: | python -m pip install coveralls>=3.0.0 coveralls --service=github --finish #------------------------------------------------------------------------------- lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Install dependencies run: | python -m pip install -r tests/requirements.txt - name: Install run: | python -m pip install ".[cli]" - name: Run Lint run: | pylint --rcfile tests/pylint.rc peakrdl_busdecoder #------------------------------------------------------------------------------- mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Install dependencies run: | python -m pip install -r tests/requirements.txt - name: Install run: | python -m pip install ".[cli]" - name: Type Check run: | mypy --config-file tests/mypy.ini src/peakrdl_busdecoder #------------------------------------------------------------------------------- build: needs: - test - lint - mypy name: Build distributions runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 name: Install Python with: python-version: "3.10" - name: Install dependencies run: | python -m pip install build - name: Build sdist run: python -m build - uses: actions/upload-artifact@v4 with: name: dist path: | dist/*.tar.gz dist/*.whl #------------------------------------------------------------------------------- deploy: needs: - build runs-on: ubuntu-latest environment: release permissions: id-token: write # Only publish when a GitHub Release is created. if: github.event_name == 'release' steps: - uses: actions/download-artifact@v4 with: name: dist path: dist - uses: pypa/gh-action-pypi-publish@release/v1