diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 36023574..bca0bc7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,9 +5,15 @@ on: branches: [ dev ] pull_request: branches: [ dev ] + workflow_dispatch: + inputs: + ref: + description: 'Branch or ref to build/test' + required: true + type: string concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.ref }} cancel-in-progress: true env: @@ -22,12 +28,14 @@ jobs: pull-requests: read runs-on: ubuntu-latest outputs: - code_changes: ${{ steps.filter.outputs.code_changes }} + code_changes: ${{ github.event_name == 'workflow_dispatch' || steps.filter.outputs.code_changes }} steps: - uses: actions/checkout@v4 + if: github.event_name != 'workflow_dispatch' - name: Detect build-relevant changes id: filter + if: github.event_name != 'workflow_dispatch' uses: dorny/paths-filter@v4 with: filters: | @@ -50,6 +58,8 @@ jobs: needs: changes steps: - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} - name: Skip build for workflow-only changes if: needs.changes.outputs.code_changes != 'true' @@ -87,6 +97,8 @@ jobs: needs: [changes, build] steps: - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} - name: Skip unit tests for workflow-only changes if: needs.changes.outputs.code_changes != 'true' @@ -112,6 +124,8 @@ jobs: needs: [changes, unit-test] steps: - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} - name: Skip integration tests for workflow-only changes if: needs.changes.outputs.code_changes != 'true' diff --git a/.github/workflows/opencode-test-writer.yml b/.github/workflows/opencode-test-writer.yml index 2c0b8e58..73438535 100644 --- a/.github/workflows/opencode-test-writer.yml +++ b/.github/workflows/opencode-test-writer.yml @@ -230,11 +230,13 @@ jobs: if: steps.check-existing.outputs.skip != 'true' run: | sleep 5 - PR_NUM=$(gh pr list --base dev --head "opencode/dispatch-" --label automated-test --state open --json number --jq '.[0].number') + BRANCH="${{ steps.select-module.outputs.branch }}" + PR_NUM=$(gh pr list --base dev --head "$BRANCH" --label automated-test --state open --json number --jq '.[0].number') if [ -n "$PR_NUM" ]; then echo "Triggering Build and opencode review for PR #$PR_NUM" SHA=$(gh api repos/OpenStaticFish/ZigCraft/pulls/$PR_NUM --jq '.head.sha') - gh workflow run build.yml --field ref="opencode/dispatch-" || echo "Build trigger attempted" + BRANCH=$(gh api repos/OpenStaticFish/ZigCraft/pulls/$PR_NUM --jq '.head.ref') + gh workflow run build.yml --field ref="$BRANCH" || echo "Build trigger attempted" gh workflow run opencode-pr.yml --field pr_number="$PR_NUM" --field head_sha="$SHA" else echo "No PR found to trigger workflows"