diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..18252bf --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,75 @@ +name: release.yml +on: + push: + tags: + - '*' + +jobs: + tests: + name: tests + uses: ./.github/workflows/tests.yml + + build: + name: Build distribution + runs-on: ubuntu-latest + needs: tests + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + - name: Install dependencies + run: make install-ci + - name: Build package + run: make build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: packages-${{ github.ref_name }} + path: dist/* + + release: + name: Release to PyPI + needs: build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/project/${{ github.repository }} + permissions: + id-token: write + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: packages-${{ github.ref_name }} + path: dist/ + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} + + github-release: + name: Create release on Github + needs: build + runs-on: ubuntu-latest + steps: + - name: Get packages + uses: actions/download-artifact@v3 + with: + name: packages-${{ github.ref_name }} + path: dist/ + + - name: Create new release + continue-on-error: true + uses: softprops/action-gh-release@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + body: | + What's changed: + * TODO + + Get it [here](https://pypi.org/project/${{ github.repository }}/${{ github.ref_name }}) + draft: true + files: dist/* diff --git a/Makefile b/Makefile index 607a2dc..5ce06c4 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,9 @@ lint: test: lint $(BIN)/tox run +install-ci: + $(PYTHON) -m pip install --upgrade pip setuptools wheel twine . + .PHONY: build build: $(PYTHON) setup.py sdist bdist_wheel