diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..9b50d07 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,86 @@ +name: Build + +on: + push: + pull_request: + release: + types: + - published + schedule: + # At 12:00 UTC on every day-of-month + - cron: "0 12 */1 * *" + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + build_dists: + name: Source and wheel distributions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build distributions + run: pipx run build[virtualenv] --sdist --wheel + + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/* + + - uses: actions/upload-artifact@v4 + with: + name: test-deps + path: | + tests/ + Makefile + requirements-dev.txt + + test: + needs: [build_dists] + name: 'Test' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + steps: + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python_version }}-dev + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist + - uses: actions/download-artifact@v4 + with: + name: test-deps + path: . + - name: Install wheel + run: | + python -m pip install dist/*.whl + - name: Install Python dependencies + run: | + python -m pip install -r requirements-dev.txt + - name: Disable ptrace security restrictions + run: | + echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope + - name: Test + run: | + make check + + upload_pypi: + needs: [test] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist + + - uses: pypa/gh-action-pypi-publish@v1.8.11 + with: + password: ${{ secrets.PYPI_PASSWORD }} diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index ff56bf1..a4f4155 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -28,28 +28,3 @@ jobs: - name: Lint sources run: | make PYTHON=python${{matrix.python_version}} lint - test: - name: 'Test' - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - steps: - - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python_version }}-dev - - name: Install Python dependencies - run: | - python${{matrix.python_version}} -m pip install -r requirements-dev.txt - - name: Install Package - run: | - python${{matrix.python_version}} -m pip install -e . - - name: Disable ptrace security restrictions - run: | - echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope - - name: Test - run: | - make PYTHON=python${{matrix.python_version}} check