chore: bump version to 0.1.1 #4
Workflow file for this run
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: release | |
| on: | |
| push: | |
| tags: | |
| - "v[0-9]*.[0-9]*.[0-9]*" | |
| permissions: | |
| contents: read | |
| jobs: | |
| check: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: astral-sh/setup-uv@v9.0.0 | |
| with: | |
| python-version: "3.14" | |
| enable-cache: true | |
| - run: uv sync --locked | |
| - name: Verify release version | |
| run: | | |
| VERSION="$(uv run evdb --version)" | |
| test "v${VERSION#evdb }" = "${GITHUB_REF_NAME}" | |
| - run: make check | |
| build: | |
| needs: check | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| include: | |
| - runner: ubuntu-22.04 | |
| arch: amd64 | |
| - runner: ubuntu-22.04-arm | |
| arch: arm64 | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: astral-sh/setup-uv@v9.0.0 | |
| with: | |
| python-version: "3.14" | |
| enable-cache: true | |
| - run: uv sync --locked | |
| - run: make binary | |
| - name: Smoke test standalone executable | |
| run: | | |
| VERSION="$(dist/evdb --version)" | |
| test "v${VERSION#evdb }" = "${GITHUB_REF_NAME}" | |
| - name: Assemble release archive | |
| run: | | |
| ASSET="evdb_linux_${{ matrix.arch }}.tar.gz" | |
| install -d -m 0755 release/bin release/units artifacts | |
| install -m 0755 dist/evdb release/bin/evdb | |
| install -m 0644 src/evdb/units/*.service release/units/ | |
| install -m 0644 src/evdb/units/*.timer release/units/ | |
| (cd release && tar -czf "../artifacts/${ASSET}" bin/evdb units/*.service units/*.timer) | |
| tar -tzf "artifacts/${ASSET}" | |
| (cd artifacts && sha256sum "${ASSET}" > "${ASSET}.sha256") | |
| uv run python tools/check_release.py "artifacts/${ASSET}" "${GITHUB_REF_NAME}" | |
| working-directory: ${{ github.workspace }} | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: release-${{ matrix.arch }} | |
| path: artifacts/* | |
| if-no-files-found: error | |
| retention-days: 1 | |
| notes: | |
| needs: build | |
| runs-on: ubuntu-22.04 | |
| permissions: | |
| contents: read | |
| outputs: | |
| available: ${{ steps.result.outputs.available }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Set up Node.js for release notes | |
| id: node | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: "24" | |
| - name: Install OpenCode for release notes | |
| id: opencode | |
| if: steps.node.outcome == 'success' | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: npm install --global opencode-ai@1.18.6 | |
| - name: Generate release notes | |
| id: generate | |
| continue-on-error: true | |
| timeout-minutes: 10 | |
| env: | |
| RELEASE_LLM_URL: ${{ secrets.RELEASE_LLM_URL }} | |
| RELEASE_LLM_KEY: ${{ secrets.RELEASE_LLM_KEY }} | |
| OPENCODE_CONFIG_CONTENT: >- | |
| {"provider":{"openai":{"options":{"baseURL":"{env:RELEASE_LLM_URL}","apiKey":"{env:RELEASE_LLM_KEY}"},"models":{"gpt-5.6-sol":{"name":"gpt-5.6-sol","limit":{"context":353000,"output":128000},"variants":{"high":{"reasoningEffort":"high"}}}}}}} | |
| run: | | |
| test "${{ steps.node.outcome }}" = "success" | |
| test "${{ steps.opencode.outcome }}" = "success" | |
| test -n "${RELEASE_LLM_URL}" | |
| test -n "${RELEASE_LLM_KEY}" | |
| python3 tools/release_notes.py input "${GITHUB_REF_NAME}" release-input.md --target "${GITHUB_SHA}" | |
| opencode run --pure --command changelog | |
| python3 tools/release_notes.py check release-notes.md | |
| - name: Upload agent release notes | |
| id: upload | |
| if: steps.generate.outcome == 'success' | |
| continue-on-error: true | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: agent-release-notes | |
| path: release-notes.md | |
| if-no-files-found: error | |
| retention-days: 1 | |
| - name: Record release note availability | |
| id: result | |
| if: always() | |
| env: | |
| GENERATED: ${{ steps.generate.outcome }} | |
| UPLOADED: ${{ steps.upload.outcome }} | |
| run: | | |
| if test "${GENERATED}" = "success" && test "${UPLOADED}" = "success"; then | |
| echo "available=true" >> "${GITHUB_OUTPUT}" | |
| else | |
| echo "available=false" >> "${GITHUB_OUTPUT}" | |
| echo "::notice::Agent release notes unavailable; GitHub automatic notes will be used" | |
| fi | |
| publish: | |
| needs: [build, notes] | |
| if: ${{ !cancelled() && needs.build.result == 'success' }} | |
| runs-on: ubuntu-22.04 | |
| permissions: | |
| contents: write | |
| id-token: write | |
| attestations: write | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: release-* | |
| path: release | |
| merge-multiple: true | |
| - name: Add installer | |
| run: install -m 0755 install.sh release/install.sh | |
| - name: Attest release archives | |
| uses: actions/attest@v4 | |
| with: | |
| subject-path: release/evdb_linux_*.tar.gz | |
| - name: Download agent release notes | |
| id: notes-download | |
| if: needs.notes.outputs.available == 'true' | |
| continue-on-error: true | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: agent-release-notes | |
| path: . | |
| - name: Validate agent release notes | |
| id: notes | |
| if: steps.notes-download.outcome == 'success' | |
| continue-on-error: true | |
| run: python3 tools/release_notes.py check release-notes.md | |
| - name: Verify release tag is unchanged | |
| run: test "$(git rev-parse "refs/tags/${GITHUB_REF_NAME}^{commit}")" = "${GITHUB_SHA}" | |
| - name: Publish GitHub release with agent notes | |
| if: steps.notes.outcome == 'success' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: >- | |
| gh release create "${GITHUB_REF_NAME}" release/* | |
| --verify-tag --notes-file release-notes.md --title "${GITHUB_REF_NAME}" | |
| - name: Publish GitHub release with automatic notes | |
| if: steps.notes.outcome != 'success' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "::notice::Agent release notes unavailable; using GitHub automatic notes" | |
| gh release create "${GITHUB_REF_NAME}" release/* \ | |
| --verify-tag --generate-notes --title "${GITHUB_REF_NAME}" |