Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
34f814c
initial test
bashandbone Dec 6, 2025
3b287ea
fix: enhance CI configuration with Python version support and Mise en…
bashandbone Dec 6, 2025
036b74b
fix: enhance CI configuration with Python version support and Mise en…
bashandbone Dec 6, 2025
f48671c
fix: prevent CI skip by disabling env export in mise-action
claude Dec 6, 2025
e8136d6
Merge remote-tracking branch 'origin/claude/debug-ci-skip-issue-01Bwf…
bashandbone Dec 6, 2025
596900d
fix: remove unnecessary echo statement for Mise Python version in CI …
bashandbone Dec 6, 2025
5cbce61
fix: add mise bin directory to PATH for proper command execution
claude Dec 6, 2025
257d1ba
Merge remote-tracking branch 'origin/claude/debug-ci-skip-issue-01Bwf…
bashandbone Dec 6, 2025
9dfdd3c
fix: add outputs section to composite action for proper output exposure
claude Dec 6, 2025
4727733
Merge remote-tracking branch 'origin/claude/debug-ci-skip-issue-01Bwf…
bashandbone Dec 6, 2025
fb5ad88
fix: missing tools on path
bashandbone Dec 6, 2025
147548c
Apply suggestions from code review
bashandbone Dec 6, 2025
a639786
Initial plan
Copilot Dec 6, 2025
eae8605
fix: remove duplicate Setup Mise Environment step
Copilot Dec 6, 2025
dba88c8
Merge pull request #197 from knitli/copilot/sub-pr-196
bashandbone Dec 6, 2025
db32aad
fix: update PATH in workflows and improve MCP Registry submission pro…
bashandbone Dec 7, 2025
7631fdc
fix: removed 'frozen' flag from uv for experimental python installs. …
bashandbone Dec 7, 2025
38d0508
Apply suggestions from code review
bashandbone Dec 7, 2025
6092ce7
fix: remove mcp-publisher CLI installation step and streamline submis…
bashandbone Dec 7, 2025
9508d15
fix: enhance CI workflows by adding outputs and environment variables…
bashandbone Dec 7, 2025
0fa134c
fix: update Python setup action to include outputs for PYTHON_PATH an…
bashandbone Dec 7, 2025
df20998
fix: update CI workflows to ensure uv is available when called
bashandbone Dec 7, 2025
855c5ba
fix: add tools to mise check task for CI availability
bashandbone Dec 7, 2025
b7dbc41
fix: add setup step for mise dev installs in CI
bashandbone Dec 7, 2025
0bf4081
Apply suggestions from code review
bashandbone Dec 7, 2025
47a8614
fix: improve CI workflows by setting PATH for mise and cleaning up te…
bashandbone Dec 7, 2025
766575c
Update .github/workflows/mcp-registry-submit.yml
bashandbone Dec 7, 2025
407161d
fix: enhance CI workflows by adding NEWPATH output and updating PATH …
bashandbone Dec 7, 2025
cb8618c
fix: update cloud setup task environment variables for consistency
bashandbone Dec 7, 2025
0d76871
fix: enhance setup and testing workflows by adding missing dependenci…
bashandbone Dec 7, 2025
c40e7c1
Apply suggestions from code review
bashandbone Dec 7, 2025
a5ce307
fix: improve cleanup process in MCP Registry submission workflow
bashandbone Dec 7, 2025
b7169d9
Apply suggestions from code review
bashandbone Dec 7, 2025
9a7a2f8
Apply suggestions from code review
bashandbone Dec 7, 2025
7a6fe77
Apply suggestions from code review
bashandbone Dec 7, 2025
6e93e42
fix: add missing outputs to actions and simplify CI workflows
claude Dec 7, 2025
a48462a
Merge branch 'fix-test-ci-action-failures' into claude/fix-ci-test-fa…
bashandbone Dec 7, 2025
d36cf56
Merge pull request #199 from knitli/claude/fix-ci-test-failures-0187v…
bashandbone Dec 7, 2025
3e7dd13
Fix: Add missing 'runs-on' specification for lint job
bashandbone Dec 8, 2025
3983e83
Apply suggestions from code review
bashandbone Dec 8, 2025
d95e9de
fix: update CI workflows and environment setup for consistency
bashandbone Dec 8, 2025
3dfa0bd
fix: fixed a malformed block in setup-mise-env, consolidated freethre…
bashandbone Dec 8, 2025
0a594b3
fix: update hk installation in CI setup and add HK_MISE environment v…
bashandbone Dec 8, 2025
2988ad7
fix: update CI workflows and environment setup, remove unused variables
bashandbone Dec 8, 2025
d4eb4aa
Apply suggestions from code review
bashandbone Dec 8, 2025
c2505a6
fix: update setup-mise-env and reusable-lint workflows for consistenc…
bashandbone Dec 8, 2025
f82fd38
Apply suggestions from code review
bashandbone Dec 8, 2025
9c14d52
fix: streamline mise configuration by consolidating tool definitions …
bashandbone Dec 8, 2025
582f1c9
fix: incorrect-tool references in mise.toml
bashandbone Dec 8, 2025
1b079c0
fix: add mise-debug input for enhanced output in setup-mise-env actio…
bashandbone Dec 8, 2025
e448519
Apply suggestions from code review
bashandbone Dec 8, 2025
f82e802
Change condition for inserting Free-Threaded Python
bashandbone Dec 8, 2025
3733e41
Add MISE_PYTHON_COMPILE variable to action.yml
bashandbone Dec 8, 2025
63949f2
fix: remove minor version check for uv
bashandbone Dec 8, 2025
108b400
fix: update dependency references for type checking to use latest ver…
bashandbone Dec 8, 2025
a069b52
fix: streamline system dependency installation and update free-thread…
bashandbone Dec 8, 2025
c1d1cae
fix: add command to list available Python versions in mise setup
bashandbone Dec 8, 2025
53f5b2e
fix: correct command for creating virtual environment in mise.toml
bashandbone Dec 8, 2025
6c97503
fix: remove compile settings to experiment if cause of a CI failure.
bashandbone Dec 8, 2025
bb6d19b
fix: refine free-threaded Python installation process in CI setup
bashandbone Dec 8, 2025
7247982
fix: enhance cloud setup script with informative messages and streaml…
bashandbone Dec 8, 2025
6ba86ed
fix: add message to ensure Python version is installed during cloud s…
bashandbone Dec 9, 2025
0d22f2e
fix: improve cloud setup script to ensure mise activation and Python …
bashandbone Dec 9, 2025
7612f13
fix: enhance cloud setup with mise doctor output and ensure latest uv…
bashandbone Dec 9, 2025
d40d78e
fix: enhance cloud setup with improved mise activation and debugging …
bashandbone Dec 9, 2025
4ed9426
fix: remove auto-venv to debug CI issue
bashandbone Dec 9, 2025
d4f45d3
Apply suggestions from code review
bashandbone Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 119 additions & 13 deletions .github/actions/setup-mise-env/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,28 @@ inputs:
description: Task profile to use for mise setup one of 'minimal', 'reviewer', 'dev'
required: true
default: 'minimal'
mise-debug:
description: Enable debug output for mise commands
required: false
default: 'false'

outputs:
# MISE_PATH, MISE_ENV, and PYTHON_PATH are typically in uppercase and may be case sensitive in some environments
MISE_PATH:
description: Path to mise executable
value: ${{ steps.mise-outputs.outputs.MISE_PATH }}
MISE_ENV:
description: Mise environment name
value: ${{ steps.mise-outputs.outputs.MISE_ENV }}
PROFILE:
description: Profile used for setup
value: ${{ steps.mise-outputs.outputs.PROFILE }}
PYTHON_PATH:
description: Path to Python executable
value: ${{ steps.mise-outputs.outputs.PYTHON_PATH }}
MISE_PYTHON_VERSION:
description: Python version used by mise
value: ${{ steps.mise-outputs.outputs.MISE_PYTHON_VERSION }}

runs:
using: composite
Expand All @@ -36,27 +58,56 @@ runs:
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
with:
fetch-depth: ${{ inputs.fetch-depth }}
- name: Free up disk space
shell: bash
run: ./scripts/dev-env/ci-free-disk-space.sh
- name: Install system dependencies
shell: bash
run: |
sudo apt-get update && sudo apt-get install -y zsh curl git
- name: Free up disk space
# ensure build-python dependencies are installed
sudo mkdir -p /etc/apt/apt.conf.d/ && echo 'DPkg::Post-Invoke {"/bin/rm -f /var/cache/apt/archives/*.deb || true";};' | sudo tee /etc/apt/apt.conf.d/99-local-cleanup
sudo apt-get update && sudo apt-get install -y curl git libreadline-dev libbz2-dev zlib1g-dev

- name: Set up Environment for Free-Threaded Python
shell: bash
run: ./scripts/dev-env/ci-free-disk-space.sh
env:
MISE_PYTHON_VERSION: ${{ inputs.python-version }}
UV_PYTHON: ${{ inputs.python-version }}
PYTHON_VERSION: ${{ inputs.python-version }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
run: |
if [[ "${PYTHON_VERSION}" != *t ]]; then
echo "Using standard Python version ${PYTHON_VERSION}..."
echo "MISE_PYTHON_VERSION=${PYTHON_VERSION}" >> "$GITHUB_ENV"
echo "UV_PYTHON=${PYTHON_VERSION}" >> "$GITHUB_ENV"
exit 0
fi
echo "Setting up environment for free-threaded Python ${PYTHON_VERSION}..."
python_version="${PYTHON_VERSION}"
base_version="${python_version%t}"
echo "Base version: ${base_version}"
# I couldn't get Mise's handling of free-threaded Python versions to work correctly...
# So, instead, we'll let mise install the base version, and use uv to get the free-threaded version
# and then sync uv and mise and tell mise to use that version
echo "MISE_PYTHON_VERSION=${base_version}" >> "$GITHUB_ENV"
echo "UV_PYTHON=${base_version}+freethreaded" >> "$GITHUB_ENV"

- name: Setup Mise for Minimal Profile
if: inputs.profile == 'minimal'
uses: jdx/mise-action@eb508e65f0eb73d4fc9fc9505569833136217cc9
env:
MISE_YES: 1
MISE_EXPERIMENTAL: 1
UV_PYTHON: ${{ inputs.python-version }}
UV_PYTHON: ${{ env.UV_PYTHON }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
MISE_PYTHON_COMPILE: 0
Copy link

Copilot AI Dec 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Setting MISE_PYTHON_COMPILE=0 disables Python compilation which may impact performance for compute-intensive operations. While this speeds up installation in CI, it means tests run on unoptimized Python builds.

Consider documenting this trade-off in a comment, or making it configurable:

# Disable Python compilation for faster CI setup (trade: slower runtime)
MISE_PYTHON_COMPILE: 0

This helps future maintainers understand the performance implications.

Copilot uses AI. Check for mistakes.
with:
github_token: ${{ inputs.github-token }}
experimental: true
install: true
cache: true
cache_key_prefix: ${{ inputs.profile }}
env: false
id: mise-setup-minimal
- name: Setup Mise for Reviewer Profile
if: inputs.profile == 'reviewer'
Expand All @@ -65,16 +116,22 @@ runs:
MISE_YES: 1
MISE_EXPERIMENTAL: 1
MISE_ENV: dev
UV_PYTHON: ${{ inputs.python-version }}
UV_PYTHON: ${{ env.UV_PYTHON }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
MISE_PYTHON_COMPILE: 0
with:
github_token: ${{ inputs.github-token }}
experimental: true
install: true
cache: true
cache_key_prefix: ${{ inputs.profile }}
env: false
- name: Activate Reviewer Profile Environment
if: inputs.profile == 'reviewer'
shell: bash
env:
MISE_GITHUB_TOKEN: ${{ inputs.github-token }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
id: mise-setup-reviewer
run: |
uv sync
Expand All @@ -85,23 +142,72 @@ runs:
MISE_YES: 1
MISE_EXPERIMENTAL: 1
MISE_ENV: dev
UV_PYTHON: ${{ inputs.python-version }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
UV_PYTHON: ${{ env.UV_PYTHON }}
MISE_PYTHON_COMPILE: 0
with:
github_token: ${{ inputs.github-token }}
experimental: true
install: true
cache: true
cache_key_prefix: ${{ inputs.profile }}
env: false
id: mise-setup-dev
- name: Insert Free-Threaded Python into Dev Profile
if: inputs.profile == 'dev' && endsWith(inputs.python-version, 't')
shell: bash
id: mise-setup-dev-insert
env:
MISE_PYTHON_VERSION: ${{ env.MISE_PYTHON_VERSION }}
UV_PYTHON: ${{ env.UV_PYTHON }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
run: |
echo "Inserting free-threaded Python version $UV_PYTHON into dev profile..."
mise use -g uv@latest
uv python install -U "cpython-${UV_PYTHON}" 2>&1
# after a lot of trial and error, it seems that combined with setting MISE_PYTHON_VERSION to the base version, and using uv to install the free-threaded version, and syncing uv and mise, this works
# the favored version is now the free-threaded version -- as mise list python will show:
Comment on lines +168 to +169
Copy link

Copilot AI Dec 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The comment spans two lines and could be more concise. Long comments in shell scripts embedded in YAML can be hard to read. Consider breaking it into multiple single-line comments or shortening it:

# After trial and error: set MISE_PYTHON_VERSION to base version, install free-threaded via uv, then sync.
# The favored version is now free-threaded -- visible in: mise list python
Suggested change
# after a lot of trial and error, it seems that combined with setting MISE_PYTHON_VERSION to the base version, and using uv to install the free-threaded version, and syncing uv and mise, this works
# the favored version is now the free-threaded version -- as mise list python will show:
# Set MISE_PYTHON_VERSION to base version, install free-threaded via uv, then sync.
# After these steps, the favored version is free-threaded (see: mise list python).

Copilot uses AI. Check for mistakes.
mise sync python --uv
mise list python 2>&1
- name: Activate Dev Profile Environment
if: inputs.profile == 'dev'
shell: bash
id: mise-setup-dev-activate
env:
MISE_ENV: dev
MISE_EXPERIMENTAL: 1
MISE_YES: 1
MISE_GITHUB_TOKEN: ${{ inputs.github-token }}
MISE_PYTHON_VERSION: ${{ env.MISE_PYTHON_VERSION }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
run: |
echo "Activating shims"
eval "$(mise activate bash --shims)" 2>&1 || true
echo "starting cloud setup for $MISE_PYTHON_VERSION"
echo "Mise doctor output:"
mise doctor 2>&1
echo "Ensuring uv is set to latest..."
mise use -g uv@latest
echo "Starting cloud-setup task..."
mise //:cloud-setup 2>&1

- name: Set outputs
shell: bash
id: mise-outputs
env:
MISE_PYTHON_VERSION: ${{ env.MISE_PYTHON_VERSION }}
MISE_ENV: ${{ env.MISE_ENV }}
MISE_VERBOSE: ${{ inputs.mise-debug }}
PROFILE: ${{ inputs.profile }}
run: |
echo "MISE_PATH=$(which mise)" >> $GITHUB_OUTPUT
echo "MISE_ENV=$MISE_ENV" >> $GITHUB_OUTPUT
echo "PROFILE=${{ inputs.profile }}" >> $GITHUB_OUTPUT
echo "PYTHON_VERSION=$(python --version | awk '{print $2}')" >> $GITHUB_OUTPUT
echo "PYTHON_PATH=$(which python)" >> $GITHUB_OUTPUT


MISE_PATH="$(which mise)"
echo "MISE_PATH=$MISE_PATH" >> "$GITHUB_OUTPUT"
mise_bin_dir="$(dirname "$MISE_PATH")"
python_path="$(which python)"
python_bin_dir="$(dirname "$python_path")"
echo "MISE_BIN_DIR=$mise_bin_dir" >> "$GITHUB_OUTPUT"
echo "PYTHON_BIN_DIR=$python_bin_dir" >> "$GITHUB_OUTPUT"
echo "PROFILE=$PROFILE" >> "$GITHUB_OUTPUT"
echo "PYTHON_PATH=$python_path" >> "$GITHUB_OUTPUT"
echo "MISE_PYTHON_VERSION=$MISE_PYTHON_VERSION" >> "$GITHUB_OUTPUT"
echo "MISE_ENV=${MISE_ENV:-}" >> "$GITHUB_OUTPUT"
11 changes: 11 additions & 0 deletions .github/actions/setup-python-env/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ inputs:
required: false
default: ''

outputs:
PYTHON_PATH:
description: Path to the Python executable
value: ${{ steps.python-setup.outputs.PYTHON_PATH }}
uv_path:
description: Path to uv executable
value: ${{ steps.python-setup.outputs.uv_path }}

runs:
using: composite
steps:
Expand All @@ -45,7 +53,10 @@ runs:
allow-prereleases: true
- name: Install pip packages
shell: bash
id: python-setup
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install uv
echo "PYTHON_PATH=$(which python)" >> "$GITHUB_OUTPUT"
echo "uv_path=$(which uv)" >> "$GITHUB_OUTPUT"

14 changes: 8 additions & 6 deletions .github/actions/setup-uv-env/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,14 @@ inputs:
required: false
default: 'false'

outputs:
uv-path:
description: Path to uv executable
value: ${{ steps.setup-uv.outputs.uv-path }}
uvx-path:
description: Path to uvx executable
value: ${{ steps.setup-uv.outputs.uvx-path }}

runs:
using: composite
steps:
Expand All @@ -54,10 +62,4 @@ runs:
prune-cache: "true"
add-problem-matchers: "true"
id: setup-uv
- name: Export outputs
shell: bash
id: uv-outputs
run: |
echo "UV_PATH=${{ steps.setup-uv.outputs.uv-path }}" >> $GITHUB_OUTPUT
echo "UVX_PATH=${{ steps.setup-uv.outputs.uvx-path }}" >> $GITHUB_OUTPUT

5 changes: 3 additions & 2 deletions .github/workflows/_reusable-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ jobs:
build:
name: Build Package
runs-on: ubuntu-latest
env:
UV_PYTHON: ${{ inputs.python-version }}
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
with:
fetch-depth: 0
fetch-depth: 2

- name: Setup UV and build
uses: ./.github/actions/setup-uv-env
Expand All @@ -54,7 +56,6 @@ jobs:
- name: Build package with UV
env:
UV_PATH: ${{ steps.setup-uv.outputs.uv-path }}
UV_PYTHON: ${{ inputs.python-version }}
run: |
if [ "${{ inputs.clean-build }}" = "true" ]; then
"$UV_PATH" build --clear
Expand Down
33 changes: 13 additions & 20 deletions .github/workflows/_reusable-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,20 @@ on:
type: boolean
default: true

env:
MISE_EXPERIMENTAL: 1
MISE_YES: 1
PROFILE: "reviewer"

jobs:
lint:
permissions:
contents: read
name: Lint and Format
runs-on: ubuntu-latest
env:
MISE_ENV: ci
MISE_EXPERIMENTAL: 1
MISE_PYTHON_VERSION: ${{ inputs.python-version }}
UV_PYTHON: ${{ inputs.python-version }}
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
Expand All @@ -41,31 +46,19 @@ jobs:
with:
python-version: ${{ inputs.python-version }}
github-token: ${{ secrets.GITHUB_TOKEN }}
profile: "reviewer"
profile: "${{ env.PROFILE }}"
skip-checkout: true
id: mise-outputs
id: mise-setup

- name: Check code style and linting
env:
MISE_YES: 1
MISE_PYTHON: ${{ inputs.python-version }}
UV_PYTHON: ${{ inputs.python-version }}
MISE_EXPERIMENTAL: 1
PYTHON_PATH: ${{ steps.mise-outputs.outputs.PYTHON_PATH }}
run: |
export PATH="$HOME/.local/bin:$PATH"
mise //:lint || echo "::warning::Lint checks failed but allowing workflow to continue"
MISE_PYTHON_VERSION: ${{ steps.mise-setup.outputs.MISE_PYTHON_VERSION }}
run: mise run lint || echo "::warning::Lint checks failed but allowing workflow to continue"
continue-on-error: true

- name: Check formatting and licenses
if: inputs.run-format-check
env:
MISE_YES: 1
MISE_PYTHON: ${{ inputs.python-version }}
UV_PYTHON: ${{ inputs.python-version }}
MISE_EXPERIMENTAL: 1
PYTHON_PATH: ${{ steps.mise-outputs.outputs.PYTHON_PATH }}
run: |
export PATH="$HOME/.local/bin:$PATH"
mise //:format || echo "::warning::License checks or formatting checks failed but allowing workflow to continue"
MISE_PYTHON_VERSION: ${{ steps.mise-setup.outputs.MISE_PYTHON_VERSION }}
run: mise run format || echo "::warning::License checks or formatting checks failed but allowing workflow to continue"
continue-on-error: true
Loading
Loading