CI: use venv again, explicitly use brew-installed python3.13 instead … #652
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
name: build-and-publish | |
on: | |
push: | |
branches: | |
- master | |
- main | |
tags: | |
- '*' | |
pull_request: | |
jobs: | |
build-on-ubuntu: | |
uses: livMatS/dtool-lookup-gui/.github/workflows/build-on-ubuntu.yml@master | |
build-on-windows: | |
uses: livMatS/dtool-lookup-gui/.github/workflows/build-on-windows.yml@master | |
build-installer-on-windows: | |
uses: livMatS/dtool-lookup-gui/.github/workflows/build-installer-on-windows.yml@master | |
build-on-macos: | |
uses: livMatS/dtool-lookup-gui/.github/workflows/build-on-macos.yml@master | |
build-python-package: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update -qy | |
sudo apt-get install -y \ | |
libgirepository1.0-dev \ | |
libcairo2-dev \ | |
pkg-config \ | |
python3-dev \ | |
gir1.2-gtk-3.0 \ | |
libgtksourceview-4-0 | |
- name: Install requirements | |
run: | | |
pip install --upgrade build | |
pip install --upgrade setuptools wheel setuptools-scm[toml] | |
pip list | |
- name: Package distribution | |
run: | | |
python -m build | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
publish-to-testpypi: | |
name: Publish to TestPyPI | |
needs: | |
- build-python-package | |
runs-on: ubuntu-latest | |
environment: | |
name: testpypi | |
url: https://test.pypi.org/p/dtool-lookup-gui | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the dists | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Publish distribution 📦 to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
verbose: true | |
skip-existing: true | |
publish-to-pypi: | |
name: Publish to PyPI | |
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes | |
needs: | |
- build-python-package | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/dtool-lookup-gui # Replace <package-name> with your PyPI project name | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Publish distribution to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
verbose: true | |
publish-on-github: | |
name: >- | |
Make github release | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write # IMPORTANT: mandatory for making GitHub Releases | |
id-token: write # IMPORTANT: mandatory for sigstore | |
needs: | |
- build-on-ubuntu | |
- build-on-macos | |
- build-on-windows | |
- build-installer-on-windows | |
- publish-to-pypi | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Get version | |
id: get_version | |
uses: battila7/get-version-action@v2 | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Fix setuptools_scm-generated version | |
id: fix_version | |
run: | | |
pip install setuptools_scm | |
version=$(SETUPTOOLS_SCM_DEBUG=1 python -m setuptools_scm) | |
echo "version=$version" >> $GITHUB_OUTPUT | |
- name: Download Linux build | |
uses: actions/download-artifact@v4 | |
with: | |
name: dtool-lookup-gui-linux-release | |
- name: Download Windows build | |
uses: actions/download-artifact@v4 | |
with: | |
name: dtool-lookup-gui-windows-release | |
- name: Download Windows installer build | |
uses: actions/download-artifact@v4 | |
with: | |
name: dtool-lookup-gui-windows-installer-release | |
- name: Download MacOS build | |
uses: actions/download-artifact@v4 | |
with: | |
name: dtool-lookup-gui-macos-release | |
- name: List release builds | |
run: | | |
ls -lhv . | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Sign with Sigstore | |
uses: sigstore/[email protected] | |
with: | |
inputs: >- | |
./dist/*.tar.gz | |
./dist/*.whl | |
- name: Get master HEAD SHA | |
id: get_master_sha | |
run: | | |
git fetch --depth 1 origin master | |
echo "Commit that triggered this workflow: ${{ github.sha }}" | |
echo "HEAD at master: $(git rev-parse master)" | |
echo "sha=$(git rev-parse origin/master)" >> $GITHUB_OUTPUT | |
- name: Create GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: >- | |
gh release create | |
'${{ github.ref_name }}' | |
--repo '${{ github.repository }}' | |
--notes "" | |
- name: Upload artifact signatures to GitHub Release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
# Upload to GitHub Release using the `gh` CLI. | |
# `dist/` contains the built packages, and the | |
# sigstore-produced signatures and certificates. | |
run: >- | |
gh release upload | |
'${{ github.ref_name }}' \ | |
--repo '${{ github.repository }}' \ | |
dist/** \ | |
dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-linux.tar.gz \ | |
dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-macos.dmg \ | |
dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-windows.zip \ | |
dtool-lookup-gui-${{ steps.fix_version.outputs.version }}-windows-installer.exe |