From 97b82e1d77dfe344e80d84d761ce85dcca650c17 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:36:51 +0000 Subject: [PATCH 1/4] chore(deps): update googleapis/release-please-action action to v5 --- .github/workflows/release-please.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index fa55514..7056451 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -27,7 +27,7 @@ jobs: tag_name: ${{ inputs.tag || steps.release.outputs.tag_name }} steps: # Only run the bot on push events; skip it for manual re-publish triggers. - - uses: googleapis/release-please-action@5c625bfb5d1ff62eadeeb3772007f7f66fdcf071 # v4 + - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5 id: release if: github.event_name == 'push' with: From 9e54235b6bae453ae0c01790d12b91fba098ade0 Mon Sep 17 00:00:00 2001 From: Michael D'Angelo Date: Fri, 18 Sep 2026 10:25:20 -0700 Subject: [PATCH 2/4] ci(deps): exercise release-please on pull requests --- .github/workflows/release-please.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 7056451..c631039 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -9,6 +9,10 @@ on: push: branches: - main + pull_request: + paths: + - ".github/workflows/release-please.yml" + - "release-please-config.json" workflow_dispatch: inputs: tag: @@ -18,6 +22,7 @@ on: jobs: release-please: + if: github.event_name != 'pull_request' runs-on: ubuntu-latest permissions: contents: write @@ -67,7 +72,7 @@ jobs: TAG: ${{ needs.release-please.outputs.tag_name }} run: | EXPECTED_VERSION="${TAG#promptfoo-v}" - if ls dist/*-${EXPECTED_VERSION}-*.whl 1> /dev/null 2>&1; then + if compgen -G "dist/*-${EXPECTED_VERSION}-*.whl" > /dev/null; then echo "✓ Package version ${EXPECTED_VERSION} matches release tag ${TAG}" else echo "ERROR: Package version mismatch!" @@ -106,3 +111,17 @@ jobs: uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1 with: print-hash: true + + validate-action: + name: Validate release-please action (read-only) + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + steps: + - name: Start the same release action without creating releases or pull requests + uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5 + with: + skip-github-release: true + skip-github-pull-request: true From 3a847b12a3cf3f92fee8ce3d0a36dca347cf4d43 Mon Sep 17 00:00:00 2001 From: Michael D'Angelo Date: Fri, 18 Sep 2026 10:37:57 -0700 Subject: [PATCH 3/4] ci(deps): isolate Windows npm installations --- .github/workflows/test.yml | 53 ++++---------------------------------- 1 file changed, 5 insertions(+), 48 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7067c19..003c6ba 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -91,36 +91,12 @@ jobs: if: matrix.os == 'windows-latest' shell: pwsh run: | - # Configure cache location (applies immediately to this step) $cacheDir = Join-Path $env:RUNNER_TEMP "npm-cache" - New-Item -ItemType Directory -Force -Path $cacheDir | Out-Null - npm config set cache $cacheDir --location=user - - # Configure prefix location (applies immediately to this step) - $globalPrefix = npm config get prefix - if (-not $globalPrefix -or $globalPrefix -eq "undefined") { - $globalPrefix = Join-Path $env:APPDATA "npm" - } - $globalPrefix = $globalPrefix.Trim() - npm config set prefix $globalPrefix --location=user - - # NOW clean and verify cache (cleans the correctly-configured cache) - npm cache clean --force - npm cache verify - - # Export settings for future steps + $globalPrefix = Join-Path $env:RUNNER_TEMP "npm-global" + New-Item -ItemType Directory -Force -Path $cacheDir, $globalPrefix | Out-Null "NPM_CONFIG_CACHE=$cacheDir" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append "NPM_CONFIG_PREFIX=$globalPrefix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - "npm_config_prefix=$globalPrefix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - # Add global bin directories to PATH - $binPaths = @($globalPrefix, (Join-Path $globalPrefix "bin")) | Where-Object { Test-Path $_ } - foreach ($binPath in $binPaths) { - $binPath | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - } - - Write-Host "npm cache: $cacheDir" - Write-Host "npm prefix: $globalPrefix" + $globalPrefix | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: Install promptfoo globally run: npm install -g promptfoo@latest @@ -171,30 +147,11 @@ jobs: if: matrix.os == 'windows-latest' shell: pwsh run: | - # Configure cache location (applies immediately to this step) $cacheDir = Join-Path $env:RUNNER_TEMP "npm-cache" - New-Item -ItemType Directory -Force -Path $cacheDir | Out-Null - npm config set cache $cacheDir --location=user - - # Configure prefix location (applies immediately to this step) - $globalPrefix = npm config get prefix - if (-not $globalPrefix -or $globalPrefix -eq "undefined") { - $globalPrefix = Join-Path $env:APPDATA "npm" - } - $globalPrefix = $globalPrefix.Trim() - npm config set prefix $globalPrefix --location=user - - # NOW clean and verify cache (cleans the correctly-configured cache) - npm cache clean --force - npm cache verify - - # Export settings for future steps + $globalPrefix = Join-Path $env:RUNNER_TEMP "npm-global" + New-Item -ItemType Directory -Force -Path $cacheDir, $globalPrefix | Out-Null "NPM_CONFIG_CACHE=$cacheDir" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append "NPM_CONFIG_PREFIX=$globalPrefix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - "npm_config_prefix=$globalPrefix" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - - Write-Host "npm cache: $cacheDir" - Write-Host "npm prefix: $globalPrefix" # Intentionally skip installing promptfoo globally # This tests the npx fallback path From 8064ca1a308aac7b11f97e77d8936666c90bb626 Mon Sep 17 00:00:00 2001 From: Michael D'Angelo Date: Fri, 18 Sep 2026 12:22:27 -0700 Subject: [PATCH 4/4] docs: correct pre-1.0 release version rules --- AGENTS.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 5fa6815..e9496d2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -51,7 +51,7 @@ git push # This bypasses PR review! All commits must follow the [Conventional Commits](https://www.conventionalcommits.org/) specification: -- `feat:` - New feature (bumps minor version pre-1.0.0) +- `feat:` - New feature (bumps the patch version while the project is pre-1.0.0) - `fix:` - Bug fix (bumps patch version) - `docs:` - Documentation changes - `chore:` - Maintenance tasks @@ -101,11 +101,13 @@ This repository uses **release-please** for automated releases. We're currently pre-1.0.0, which uses special semver rules: -- `fix:` commits → **minor** version bump (0.2.0 → 0.3.0) -- `feat:` commits → **minor** version bump (0.2.0 → 0.3.0) -- `BREAKING CHANGE:` → **major** version bump (0.2.0 → 1.0.0) +- `fix:` commits → **patch** version bump (0.2.0 → 0.2.1) +- `feat:` commits → **patch** version bump (0.2.0 → 0.2.1) +- Breaking commits (`type!:` or a `BREAKING CHANGE:` footer) → **minor** version bump (0.2.0 → 0.3.0) -This is configured via `bump-patch-for-minor-pre-major: true` in `release-please-config.json`. +This is configured by both `bump-minor-pre-major: true` and `bump-patch-for-minor-pre-major: true` +in `release-please-config.json`. See the [release-please versioning options](https://github.com/googleapis/release-please/blob/main/docs/cli.md#creatingupdating-release-prs) +for their behavior before 1.0.0. ### Release Configuration Files