updated builds and release pipeline setup (without pypi publish) (#219)

* updated builds and release pipeline setup (without pypi publish)

* add label prefix action

* updated uv versions

* final uv updates

* moved uv version semver into variable
This commit is contained in:
Eduard van Valkenburg
2025-07-24 09:15:00 +02:00
committed by GitHub
Unverified
parent 5e9b24e532
commit 517955ce66
18 changed files with 702 additions and 447 deletions
+72
View File
@@ -0,0 +1,72 @@
name: Label title prefix
on:
issues:
types: [labeled]
pull_request_target:
types: [labeled]
jobs:
add_title_prefix:
name: "Issue/PR: add title prefix"
continue-on-error: true
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/github-script@v6
name: "Issue/PR: update title"
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
let prefixLabels = {
"python": "Python",
".NET": ".Net"
};
function addTitlePrefix(title, prefix)
{
// Update the title based on the label and prefix
// Check if the title starts with the prefix (case-sensitive)
if (!title.startsWith(prefix + ": ")) {
// If not, check if the first word is the label (case-insensitive)
if (title.match(new RegExp(`^${prefix}`, 'i'))) {
// If yes, replace it with the prefix (case-sensitive)
title = title.replace(new RegExp(`^${prefix}`, 'i'), prefix);
} else {
// If not, prepend the prefix to the title
title = prefix + ": " + title;
}
}
return title;
}
labelAdded = context.payload.label.name
// Check if the issue or PR has the label
if (labelAdded in prefixLabels) {
let prefix = prefixLabels[labelAdded];
switch(context.eventName) {
case 'issues':
github.rest.issues.update({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
title: addTitlePrefix(context.payload.issue.title, prefix)
});
break
case 'pull_request_target':
github.rest.pulls.update({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
title: addTitlePrefix(context.payload.pull_request.title, prefix)
});
break
default:
core.setFailed('Unrecognited eventName: ' + context.eventName);
}
}
+4 -1
View File
@@ -7,6 +7,9 @@ on:
paths:
- "python/**"
env:
UV_SEMVER: "0.8.x"
jobs:
pre-commit:
name: Checks
@@ -29,7 +32,7 @@ jobs:
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "**/uv.lock"
+4 -3
View File
@@ -13,6 +13,7 @@ env:
# Configure a constant location for the uv cache
UV_CACHE_DIR: /tmp/.uv-cache
RUN_INTEGRATION_TESTS: "true"
UV_SEMVER: "0.8.x"
jobs:
python-tests-main:
@@ -38,7 +39,7 @@ jobs:
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "**/uv.lock"
@@ -91,7 +92,7 @@ jobs:
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "**/uv.lock"
@@ -151,7 +152,7 @@ jobs:
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "**/uv.lock"
+60
View File
@@ -0,0 +1,60 @@
name: Python - Build Release Assets
on:
release:
types: [published]
permissions:
contents: write
id-token: write
env:
UV_SEMVER: "0.8.x"
jobs:
python-build-assets:
if: github.event_name == 'release' && startsWith(github.event.release.tag_name, 'python-')
name: Python Build Assets and add to Release
runs-on: ubuntu-latest
environment: "integration"
env:
UV_PYTHON: "3.13"
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v4
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ env.UV_PYTHON }}
cache-dependency-glob: "**/uv.lock"
- name: Set environment variables
run: |
# Extract package name from tag (format: python-<package>-<version>)
TAG="${{ github.event.release.tag_name }}"
PACKAGE=$(echo "$TAG" | sed 's/^python-\([^-]*\)-.*$/\1/')
# Validate package exists
if [[ ! -d "packages/$PACKAGE" ]]; then
echo "Error: Package '$PACKAGE' not found in packages/ directory"
echo "Available packages: $(ls packages/)"
exit 1
fi
echo "PACKAGE=$PACKAGE" >> $GITHUB_ENV
echo "Building package: $PACKAGE"
- name: Check version
run: |
echo "Building and uploading Python package version: ${{ github.event.release.tag_name }}"
echo "Package directory: packages/${{ env.PACKAGE }}"
- name: Build the package
run: uv run poe --directory packages/${{ env.PACKAGE }} build
- name: Release
uses: softprops/action-gh-release@v2
with:
files: |
python/dist/*
+2 -1
View File
@@ -8,6 +8,7 @@ on:
env:
# Configure a constant location for the uv cache
UV_CACHE_DIR: /tmp/.uv-cache
UV_SEMVER: "0.8.x"
jobs:
python-tests:
@@ -30,7 +31,7 @@ jobs:
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
version: "0.7.x"
version: ${{ env.UV_SEMVER }}
enable-cache: true
cache-suffix: ${{ runner.os }}-${{ matrix.python-version }}
cache-dependency-glob: "**/uv.lock"