Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 10 additions & 4 deletions .github/workflows/live-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ on:
required: false
default: main
type: string
workflow_call:
inputs:
ref:
description: Git ref to validate
required: false
type: string

concurrency:
group: "live-smoke-${{ github.workflow }}-${{ inputs.ref || github.ref }}"
Expand All @@ -23,14 +29,13 @@ jobs:
live-smoke:
name: Run live smoke tests
runs-on: ubuntu-latest
environment:
name: live-smoke
environment: live-smoke

steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
ref: ${{ inputs.ref || github.sha }}

- name: Set up Python
uses: actions/setup-python@v5
Expand Down Expand Up @@ -69,6 +74,7 @@ jobs:
AISH_LIVE_SMOKE_MODEL: ${{ secrets.AISH_LIVE_SMOKE_MODEL }}
run: |
set -euo pipefail
mkdir -p build
uv run --group dev python -m pytest tests/live_smoke -v -m live_smoke --run-live-smoke --basetemp build/pytest-live-smoke

- name: Upload live smoke diagnostics
Expand All @@ -87,7 +93,7 @@ jobs:
cat <<EOF >> "$GITHUB_STEP_SUMMARY"
# Live Smoke Summary

- Ref: ${{ inputs.ref }}
- Ref: ${{ inputs.ref || github.sha }}
- Model: ${LIVE_MODEL:-<missing>}
- Diagnostics artifact: live-smoke-diagnostics-${{ github.run_id }}

Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/release-preparation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,23 @@ jobs:
path: artifacts/${{ matrix.arch }}/*
if-no-files-found: error

live-smoke-validation:
name: Live smoke validation
needs:
- release-meta
- dry-run-package-validation
uses: ./.github/workflows/live-smoke.yml
with:
ref: ${{ github.sha }}
secrets: inherit

release-preparation-summary:
name: Summarize release preparation validation
needs:
- release-meta
- prepare-release
- dry-run-package-validation
- live-smoke-validation
runs-on: ubuntu-latest
steps:
- name: Write final summary
Expand All @@ -137,5 +148,5 @@ jobs:
- Tag: ${{ needs.release-meta.outputs.tag }}
- Previous stable tag: ${{ needs.release-meta.outputs.previous_stable_tag || 'none' }}

Release metadata artifacts and dry-run bundle artifacts have been uploaded for review.
Release metadata artifacts, dry-run bundle artifacts, and live smoke validation have completed successfully.
EOF
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Welcome to make Shell smarter!
- `Auto response` is the repository's community bot for Issues and PRs. Reply text lives in `.github/auto-response-config.json`, and runtime logic lives in `.github/scripts/auto-response.cjs`.
- `Release Metadata` is the shared release action that normalizes stable version inputs, validates repository version state, and uploads both markdown and JSON metadata artifacts.
- `make prepare-release-files VERSION=X.Y.Z [DATE=YYYY-MM-DD]` updates `pyproject.toml`, `src/aish/__init__.py`, `uv.lock`, and inserts a dated release section at the top of `CHANGELOG.md`.
- Prepare release files locally in a normal PR, merge that PR into `main`, then run `Release Preparation` as the preflight validation for the target stable version.
- Prepare release files locally in a normal PR, merge that PR into `main`, then run `Release Preparation` as the single preflight validation for the target stable version. It now includes release metadata checks, bundle dry-run validation, and live smoke validation with real provider credentials.
- `Release Preparation` validates the target stable version, generates a release summary from the versioned changelog section, builds dry-run bundles, and runs install smoke checks before publication.
- `Release` is triggered by pushing a stable tag `vX.Y.Z`. It validates the tag against repository metadata, verifies that the tagged commit is on `main`, waits on the protected `release` environment approval gate, creates the GitHub Release entry with generated notes, and uploads bundle assets.
- Configure the GitHub Environment named `release` with required reviewers if you want manual approval before production publishing.
Expand Down
Loading