summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/FUNDING.yml13
-rw-r--r--.github/actions/setup-poetry-env/action.yml33
-rw-r--r--.github/workflows/master.yml70
-rw-r--r--.github/workflows/on-release-master.yml56
4 files changed, 172 insertions, 0 deletions
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..e46cbf8
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,13 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: exislow
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+custom: ["https://www.buymeacoffee.com/exislow"]
diff --git a/.github/actions/setup-poetry-env/action.yml b/.github/actions/setup-poetry-env/action.yml
new file mode 100644
index 0000000..22e4053
--- /dev/null
+++ b/.github/actions/setup-poetry-env/action.yml
@@ -0,0 +1,33 @@
+name: "setup-poetry-env"
+description: "Composite action to setup the Python and poetry environment."
+
+inputs:
+ python-version:
+ required: false
+ description: "The python version to use"
+ default: "3.11"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Set up python
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ inputs.python-version }}
+
+ - name: Install Poetry
+ uses: snok/install-poetry@v1
+ with:
+ virtualenvs-in-project: true
+
+ - name: Load cached venv
+ id: cached-poetry-dependencies
+ uses: actions/cache@v3
+ with:
+ path: .venv
+ key: venv-${{ runner.os }}-${{ inputs.python-version }}-${{ hashFiles('poetry.lock') }}
+
+ - name: Install dependencies
+ if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
+ run: poetry install --no-interaction
+ shell: bash
diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml
new file mode 100644
index 0000000..866460b
--- /dev/null
+++ b/.github/workflows/master.yml
@@ -0,0 +1,70 @@
+name: master
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [opened, synchronize, reopened]
+
+jobs:
+ quality:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out
+ uses: actions/checkout@v3
+
+ - uses: actions/cache@v3
+ with:
+ path: ~/.cache/pre-commit
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
+
+ - name: Set up the environment
+ uses: ./.github/actions/setup-poetry-env
+
+ - name: Run checks
+ run: make check
+
+ tox:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.10", "3.11", "3.12"]
+ fail-fast: false
+ steps:
+ - name: Check out
+ uses: actions/checkout@v3
+
+ - name: Set up python
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Install Poetry
+ uses: snok/install-poetry@v1
+
+ - name: Load cached venv
+ uses: actions/cache@v3
+ with:
+ path: .tox
+ key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('poetry.lock') }}
+
+ - name: Install tox
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install tox tox-gh-actions
+
+ - name: Test with tox
+ run: tox
+
+ check-docs:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out
+ uses: actions/checkout@v3
+
+ - name: Set up the environment
+ uses: ./.github/actions/setup-poetry-env
+
+ - name: Check if documentation can be built
+ run: poetry run mkdocs build -s
diff --git a/.github/workflows/on-release-master.yml b/.github/workflows/on-release-master.yml
new file mode 100644
index 0000000..4ea640a
--- /dev/null
+++ b/.github/workflows/on-release-master.yml
@@ -0,0 +1,56 @@
+name: release-master
+
+permissions:
+ contents: write
+
+on:
+ # release:
+ # types: [published]
+ # branches: [master]
+ push:
+ tags:
+ - "v*.*.*"
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out
+ uses: actions/checkout@v3
+
+ - name: Set up the environment
+ uses: ./.github/actions/setup-poetry-env
+
+ - name: Export tag
+ id: vars
+ run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
+
+ - name: Build and publish
+ run: |
+ source .venv/bin/activate
+ poetry version $RELEASE_VERSION
+ make build-and-publish
+ env:
+ PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
+ RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
+
+ - name: GitHub Release
+ uses: softprops/action-gh-release@v1
+ with:
+ draft: false
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ deploy-docs:
+ needs: publish
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out
+ uses: actions/checkout@v3
+
+ - name: Set up the environment
+ uses: ./.github/actions/setup-poetry-env
+
+ - name: Deploy documentation
+ run: poetry run mkdocs gh-deploy --force
+# TODO: Build Qt GUI Standalone.