fix(status): show active provider route instead of legacy provider bu… #14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| concurrency: | |
| group: auto-release-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| release-please: | |
| if: ${{ github.repository == 'Gitlawb/openclaude' }} | |
| name: Release Please | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| outputs: | |
| release_created: ${{ steps.release.outputs.release_created }} | |
| tag_name: ${{ steps.release.outputs.tag_name }} | |
| version: ${{ steps.release.outputs.version }} | |
| steps: | |
| - name: Run release-please | |
| id: release | |
| uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| release-type: node | |
| publish-npm: | |
| name: Publish to npm | |
| needs: release-please | |
| if: ${{ needs.release-please.outputs.release_created == 'true' }} | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout release tag | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| ref: ${{ needs.release-please.outputs.tag_name }} | |
| fetch-depth: 0 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version: 24 | |
| registry-url: https://registry.npmjs.org | |
| - name: Set up Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version-file: .bun-version | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Build | |
| run: bun run build | |
| - name: Run unit tests | |
| run: bun test --feature=UNATTENDED_RETRY --max-concurrency=1 | |
| - name: Smoke test | |
| run: bun run smoke | |
| - name: Dry-run package | |
| run: npm pack --dry-run | |
| - name: Clear token auth for trusted publishing | |
| run: | | |
| unset NODE_AUTH_TOKEN | |
| echo "NODE_AUTH_TOKEN=" >> "$GITHUB_ENV" | |
| - name: Publish to npm | |
| run: npm publish --access public --provenance | |
| - name: Verify npm latest dist-tag | |
| env: | |
| EXPECTED_VERSION: ${{ needs.release-please.outputs.version }} | |
| run: | | |
| set -euo pipefail | |
| if [ -z "${EXPECTED_VERSION}" ]; then | |
| echo "release-please did not provide an expected version" >&2 | |
| exit 1 | |
| fi | |
| for attempt in $(seq 1 30); do | |
| published_version="$(npm view @gitlawb/openclaude version 2>/dev/null || true)" | |
| latest_tag="$(npm view @gitlawb/openclaude dist-tags.latest 2>/dev/null || true)" | |
| latest_version="$(npm view @gitlawb/openclaude@latest version 2>/dev/null || true)" | |
| echo "Attempt ${attempt}: version=${published_version:-<empty>} latest=${latest_tag:-<empty>} @latest=${latest_version:-<empty>} expected=${EXPECTED_VERSION}" | |
| if [ "$published_version" = "$EXPECTED_VERSION" ] && \ | |
| [ "$latest_tag" = "$EXPECTED_VERSION" ] && \ | |
| [ "$latest_version" = "$EXPECTED_VERSION" ]; then | |
| echo "npm latest verified for @gitlawb/openclaude@${EXPECTED_VERSION}" | |
| exit 0 | |
| fi | |
| sleep 10 | |
| done | |
| echo "npm latest dist-tag did not resolve to ${EXPECTED_VERSION}" >&2 | |
| echo "Observed package version: ${published_version:-<empty>}" >&2 | |
| echo "Observed dist-tags.latest: ${latest_tag:-<empty>}" >&2 | |
| echo "Observed @latest version: ${latest_version:-<empty>}" >&2 | |
| exit 1 | |
| - name: Release summary | |
| run: | | |
| { | |
| echo "## Released ${{ needs.release-please.outputs.tag_name }}" | |
| echo | |
| echo "- npm: https://www.npmjs.com/package/@gitlawb/openclaude" | |
| echo "- GitHub: https://github.com/Gitlawb/openclaude/releases/tag/${{ needs.release-please.outputs.tag_name }}" | |
| } >> "$GITHUB_STEP_SUMMARY" | |
| docker: | |
| name: Build & Push Docker Image | |
| needs: release-please | |
| if: ${{ needs.release-please.outputs.release_created == 'true' }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout release tag | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| ref: ${{ needs.release-please.outputs.tag_name }} | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 | |
| - name: Log in to GitHub Container Registry | |
| uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0 | |
| with: | |
| images: ghcr.io/${{ github.repository }} | |
| tags: | | |
| type=semver,pattern={{version}},value=${{ needs.release-please.outputs.version }} | |
| type=semver,pattern={{major}}.{{minor}},value=${{ needs.release-please.outputs.version }} | |
| type=raw,value=latest | |
| - name: Build and load locally | |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 | |
| with: | |
| context: . | |
| load: true | |
| tags: openclaude:smoke | |
| cache-from: type=gha | |
| - name: Smoke test | |
| run: docker run --rm openclaude:smoke --version | |
| - name: Build and push | |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max |