diff --git a/.github/workflows/agent.yml b/.github/workflows/agent.yml index 0ed12a4..684f4ed 100644 --- a/.github/workflows/agent.yml +++ b/.github/workflows/agent.yml @@ -40,7 +40,7 @@ concurrency: jobs: agent: - uses: YiAgent/OpenCI/.github/workflows/reusable-agent.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-agent.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: task: ${{ inputs.task }} prompt: ${{ inputs.prompt }} diff --git a/.github/workflows/ci-self-test.yml b/.github/workflows/ci-self-test.yml index 1d22cea..b2c207e 100644 --- a/.github/workflows/ci-self-test.yml +++ b/.github/workflows/ci-self-test.yml @@ -44,7 +44,7 @@ concurrency: jobs: self-test: - uses: YiAgent/OpenCI/.github/workflows/reusable-self-test.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-self-test.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: runner: ubuntu-latest secrets: inherit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d76d20b..cffcde8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,7 @@ jobs: ci: needs: guard if: needs.guard.outputs.has-dockerfile == 'true' - uses: YiAgent/OpenCI/.github/workflows/reusable-ci.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-ci.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ github.sha }} registry: ghcr.io diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 3900c5f..144d35d 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -15,6 +15,6 @@ concurrency: jobs: deps: - uses: YiAgent/OpenCI/.github/workflows/reusable-deps.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-deps.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: runner: blacksmith-2vcpu-ubuntu-2404 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index aa9aaf3..551f88a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -27,7 +27,7 @@ concurrency: jobs: docs: - uses: YiAgent/OpenCI/.github/workflows/reusable-docs.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-docs.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: build-cmd: ${{ vars.DOCS_BUILD_CMD || '' }} docs-path: ${{ vars.DOCS_DIR || 'docs' }} diff --git a/.github/workflows/issue-ops.yml b/.github/workflows/issue-ops.yml index b031251..7f2b541 100644 --- a/.github/workflows/issue-ops.yml +++ b/.github/workflows/issue-ops.yml @@ -39,7 +39,7 @@ jobs: && !contains(github.actor, '[bot]')) || (github.event_name == 'issue_comment' && !contains(github.event.comment.user.login, '[bot]')) - uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: mode: lifecycle runner: blacksmith-2vcpu-ubuntu-2404 @@ -52,7 +52,7 @@ jobs: maintenance: if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.mode == 'maintenance') - uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: mode: maintenance runner: blacksmith-2vcpu-ubuntu-2404 @@ -65,7 +65,7 @@ jobs: manual: if: github.event_name == 'workflow_dispatch' && inputs.mode != 'maintenance' - uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-issue.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: mode: ${{ inputs.mode }} runner: blacksmith-2vcpu-ubuntu-2404 diff --git a/.github/workflows/on-main-bump-sha.yml b/.github/workflows/on-main-bump-sha.yml index f92b701..b8d1835 100644 --- a/.github/workflows/on-main-bump-sha.yml +++ b/.github/workflows/on-main-bump-sha.yml @@ -210,12 +210,14 @@ jobs: echo "::notice::Created PR #${pr_number}" fi - # 4) Enable auto-merge on the PR so it merges once required checks pass. - # The bump commit only changes manifest.yml and was already tested - # as part of the triggering merge — auto-merging avoids manual - # intervention while still respecting branch protection rules. + # 4) Auto-merge the bump PR. The bump commit only changes SHAs + # (manifest.yml + workflow files) — it was already tested as + # part of the triggering merge. The guard condition prevents + # infinite loops when this merge triggers the workflow again. + # Uses direct squash-merge because auto-merge (--auto) requires + # branch protection rules on main, which aren't configured. if [ -n "${pr_number}" ]; then - gh pr merge "${pr_number}" --auto --squash \ + gh pr merge "${pr_number}" --squash --delete-branch \ --subject "chore(manifest): bump YiAgent/OpenCI SHA to ${short_new} (#${pr_number})" \ - || echo "::warning::Auto-merge not enabled — repo may lack 'Allow auto-merge' setting." + || echo "::warning::Failed to auto-merge PR #${pr_number} — manual merge required." fi diff --git a/.github/workflows/on-maintenance.yml b/.github/workflows/on-maintenance.yml index 4533f67..2fb97b4 100644 --- a/.github/workflows/on-maintenance.yml +++ b/.github/workflows/on-maintenance.yml @@ -118,7 +118,7 @@ jobs: if: | !contains(fromJSON('["pr-review","flag-audit"]'), needs.resolve-mode.outputs.mode) - uses: YiAgent/OpenCI/.github/workflows/reusable-maintenance.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-maintenance.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: mode: ${{ needs.resolve-mode.outputs.mode }} openci-ref: ${{ needs.resolve-mode.outputs.openci-ref }} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 29a8653..a31095f 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -28,7 +28,7 @@ concurrency: jobs: checks: - uses: YiAgent/OpenCI/.github/workflows/reusable-pr.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-pr.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: enable-ai-review: true enable-eval: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 059d76c..fcf45f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ concurrency: jobs: release: - uses: YiAgent/OpenCI/.github/workflows/reusable-release.yml@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/.github/workflows/reusable-release.yml@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 secrets: inherit with: mode: ${{ inputs.mode || 'marketplace' }} diff --git a/.github/workflows/reusable-ci.yml b/.github/workflows/reusable-ci.yml index 56275e5..a4ebd63 100644 --- a/.github/workflows/reusable-ci.yml +++ b/.github/workflows/reusable-ci.yml @@ -123,7 +123,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Probe secrets @@ -149,7 +149,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - id: detect @@ -173,7 +173,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - id: build @@ -199,7 +199,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - id: scan @@ -218,7 +218,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 @@ -261,7 +261,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - uses: ./.openci/actions/ci/check-migration @@ -280,7 +280,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - uses: ./.openci/actions/ci/eval-smoke @@ -303,7 +303,7 @@ jobs: persist-credentials: false fetch-depth: 0 # required so git ls-tree can resolve the self-ref SHA - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Install yq @@ -467,7 +467,7 @@ jobs: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Download ci-context artifact diff --git a/.github/workflows/reusable-pr.yml b/.github/workflows/reusable-pr.yml index 211e72f..905daa1 100644 --- a/.github/workflows/reusable-pr.yml +++ b/.github/workflows/reusable-pr.yml @@ -96,7 +96,7 @@ jobs: with: persist-credentials: false - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Probe secrets @@ -128,7 +128,7 @@ jobs: with: persist-credentials: false - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Detect (or honour caller override) @@ -414,7 +414,7 @@ jobs: persist-credentials: false fetch-depth: 0 # required so git ls-tree can resolve the self-ref SHA - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: ${{ inputs.openci-ref }} - name: Install yq diff --git a/.github/workflows/reusable-self-test.yml b/.github/workflows/reusable-self-test.yml index 14a630a..67f2291 100644 --- a/.github/workflows/reusable-self-test.yml +++ b/.github/workflows/reusable-self-test.yml @@ -70,7 +70,7 @@ jobs: with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: main @@ -187,7 +187,7 @@ jobs: with: { persist-credentials: false } - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: main @@ -210,7 +210,7 @@ jobs: fetch-depth: 0 - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: main @@ -255,7 +255,7 @@ jobs: persist-credentials: false - name: Resolve OpenCI ref and checkout - uses: YiAgent/OpenCI/actions/_common/resolve-openci@9b40a02acafd321f967761716fafcedb4a713f50 + uses: YiAgent/OpenCI/actions/_common/resolve-openci@34a93579aac0d1682cc65ab8b7c2c9e2d06b0953 with: openci-ref: main diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 47c30cf..3458645 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -# test.yml — Self-bootstrapping comprehensive test suite for OpenCI. +# test.yml — Self-34a93579aac0d1682cc65ab8b7c2c9e2d06b0953ping comprehensive test suite for OpenCI. # # Test pyramid: # Layer 1: Unit tests (BATS shell + Node.js) — fast, offline, always run @@ -6,7 +6,7 @@ # Layer 3: Agentic eval — calls Claude API to validate skill output shape # Layer 4: Live E2E — fires a real test issue, observes full agentic pipeline # -# The live E2E test makes this workflow self-bootstrapping: OpenCI tests +# The live E2E test makes this workflow self-34a93579aac0d1682cc65ab8b7c2c9e2d06b0953ping: OpenCI tests # itself by triggering its own issue-ops pipeline and verifying the response. name: test @@ -27,7 +27,7 @@ on: type: boolean default: false run-live-e2e: - description: "Run self-bootstrapping live E2E test (creates a real issue)" + description: "Run self-34a93579aac0d1682cc65ab8b7c2c9e2d06b0953ping live E2E test (creates a real issue)" type: boolean default: false run-pr-e2e: @@ -257,7 +257,7 @@ jobs: echo "skip=false" >> "$GITHUB_OUTPUT" fi - - name: Run self-bootstrapping E2E test + - name: Run self-34a93579aac0d1682cc65ab8b7c2c9e2d06b0953ping E2E test if: steps.e2e-gate.outputs.skip != 'true' env: GH_TOKEN: ${{ github.token }}