Add release script #232
This file contains 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
# inspired by: | |
# https://github.com/messense/rjmespath-py/blob/main/.github/workflows/CI.yml | |
name: Build package | |
on: | |
push: | |
branches: [ master ] | |
tags: [ '*' ] | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
jobs: | |
linux: | |
name: Build package | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: [x86_64, x86, | |
# aarch64, armv7, s390x, ppc64le | |
] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup git config | |
run: git config --global --add safe.directory '*' | |
- name: Git submodule init | |
run: git submodule sync --recursive && git submodule update --init --force | |
# install python & rust | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
architecture: x64 | |
- uses: dtolnay/rust-toolchain@nightly | |
# run tests | |
- name: Setup test dependencies | |
run: ./ci/prepare-ci-test.sh | |
- name: Test | |
run: source .env/bin/activate && ./test.sh | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
rust-toolchain: nightly | |
sccache: 'true' | |
manylinux: auto | |
before-script-linux: "./ci/prepare-ci-container.sh" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
build-docs: | |
name: Build docs | |
runs-on: ubuntu-latest | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v3 | |
- name: install, build and upload | |
uses: withastro/action@v1 | |
with: | |
# root path | |
path: docs | |
# node-version: 18 # The specific version of Node that should be used to build your site. Defaults to 18. (optional) | |
changelog: | |
name: Changelog | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get changelog version | |
id: changelog_version | |
run: | | |
if [[ "$GITHUB_REF" == "refs/tags/*" ]]; then | |
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
else | |
echo "version=Unreleased" >> $GITHUB_OUTPUT | |
fi | |
- name: Get changelog entry | |
id: changelog | |
uses: mindsers/changelog-reader-action@v2 | |
with: | |
validation_level: error | |
version: ${{ steps.changelog_version.outputs.version }} | |
path: ./CHANGELOG.md | |
deploy: | |
name: Deploy package | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [linux] | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
- name: Upload binaries to release | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ./*.whl | |
tag: ${{ github.ref }} | |
overwrite: true | |
file_glob: true | |
body: ${{ steps.changelog.outputs.changes }} | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --non-interactive --skip-existing * | |
deploy-docs: | |
name: Deploy docs | |
needs: [linux, build-docs] | |
runs-on: ubuntu-latest | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v1 | |
deploy-package-aur: | |
name: Deploy packge AUR | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [linux] | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
path: wheels | |
- name: Generate PKGBUILD | |
env: | |
TARGET: ${{ matrix.target }} | |
#RELEASE_TAG: ${{ needs.create_release.outputs.release_tag }} | |
RELEASE_TAG: ${{ github.ref_name }} | |
run: ./ci/generate-pkgbuild.py | |
- name: Publish to AUR | |
uses: KSXGitHub/github-actions-deploy-aur@v2.5.0 | |
with: | |
pkgname: python-map2 | |
pkgbuild: ./dist/aur/PKGBUILD | |
commit_username: ${{ secrets.AUR_USERNAME }} | |
commit_email: ${{ secrets.AUR_EMAIL }} | |
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} | |
#commit_message: ${{ needs.create_release.outputs.release_tag }} | |
commit_message: ${{ github.ref_name }} | |
force_push: 'true' |