From 3ad477fe14182e17269e8101d17dc0b406311182 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:01:28 +0000 Subject: [PATCH 1/9] ci: fall back when e2e clone ref is gone Co-authored-by: piotr-iohk --- .github/workflows/e2e-staging.yml | 67 ++++++++++++++++++++++++++--- .github/workflows/e2e.yml | 32 ++++++++++++-- .github/workflows/e2e_migration.yml | 67 ++++++++++++++++++++++++++--- 3 files changed, 153 insertions(+), 13 deletions(-) diff --git a/.github/workflows/e2e-staging.yml b/.github/workflows/e2e-staging.yml index 6791bf6356..501cbcc80f 100644 --- a/.github/workflows/e2e-staging.yml +++ b/.github/workflows/e2e-staging.yml @@ -98,17 +98,43 @@ jobs: name: e2e-tests-staging - ${{ matrix.shard.name }} steps: + # Soft-fallback to main if determine's companion is gone at clone time. + # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref + # (set and neither empty, main, nor default-feature-branch). - name: Show selected E2E branch + id: e2e-ref env: - E2E_BRANCH: ${{ needs.e2e-branch.outputs.branch }} - run: echo $E2E_BRANCH + SELECTED: ${{ needs.e2e-branch.outputs.branch }} + CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} + run: | + set -euo pipefail + SELECTED="${SELECTED:-}" + CUSTOM_INPUT="${CUSTOM_INPUT:-}" + REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" + + if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then + REF="main" + elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then + REF="$SELECTED" + else + if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then + echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." + exit 1 + fi + echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." + REF="main" + fi + + echo "Selected e2e branch: ${SELECTED:-}" + echo "Effective e2e branch: $REF" + echo "ref=$REF" >> "$GITHUB_OUTPUT" - name: Clone E2E tests uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests path: bitkit-e2e-tests - ref: ${{ needs.e2e-branch.outputs.branch }} + ref: ${{ steps.e2e-ref.outputs.ref }} - name: Enable KVM run: | @@ -242,11 +268,42 @@ jobs: needs: [build-staging, e2e-branch, e2e-tests-staging] runs-on: ubuntu-latest steps: + # Soft-fallback to main if determine's companion is gone at clone time. + # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref + # (set and neither empty, main, nor default-feature-branch). + - name: Show selected E2E branch + id: e2e-ref + env: + SELECTED: ${{ needs.e2e-branch.outputs.branch }} + CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} + run: | + set -euo pipefail + SELECTED="${SELECTED:-}" + CUSTOM_INPUT="${CUSTOM_INPUT:-}" + REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" + + if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then + REF="main" + elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then + REF="$SELECTED" + else + if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then + echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." + exit 1 + fi + echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." + REF="main" + fi + + echo "Selected e2e branch: ${SELECTED:-}" + echo "Effective e2e branch: $REF" + echo "ref=$REF" >> "$GITHUB_OUTPUT" + - name: Checkout E2E tests uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests - ref: ${{ needs.e2e-branch.outputs.branch }} + ref: ${{ steps.e2e-ref.outputs.ref }} - name: Post Slack summary run: python3 scripts/slack_summary.py e2e-staging @@ -259,4 +316,4 @@ jobs: E2E_TESTS_RESULT: ${{ needs.e2e-tests-staging.result }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} RUN_ATTEMPT: ${{ github.run_attempt }} - E2E_TESTS_REF: ${{ needs.e2e-branch.outputs.branch }} + E2E_TESTS_REF: ${{ steps.e2e-ref.outputs.ref }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index bfa92deaf4..844c35947d 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -116,17 +116,43 @@ jobs: name: e2e-tests-local - ${{ matrix.shard.name }} steps: + # Soft-fallback to main if determine's companion is gone at clone time. + # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref + # (set and neither empty, main, nor default-feature-branch). - name: Show selected E2E branch + id: e2e-ref env: - E2E_BRANCH: ${{ needs.e2e-branch.outputs.branch }} - run: echo $E2E_BRANCH + SELECTED: ${{ needs.e2e-branch.outputs.branch }} + CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} + run: | + set -euo pipefail + SELECTED="${SELECTED:-}" + CUSTOM_INPUT="${CUSTOM_INPUT:-}" + REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" + + if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then + REF="main" + elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then + REF="$SELECTED" + else + if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then + echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." + exit 1 + fi + echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." + REF="main" + fi + + echo "Selected e2e branch: ${SELECTED:-}" + echo "Effective e2e branch: $REF" + echo "ref=$REF" >> "$GITHUB_OUTPUT" - name: Clone E2E tests uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests path: bitkit-e2e-tests - ref: ${{ needs.e2e-branch.outputs.branch }} + ref: ${{ steps.e2e-ref.outputs.ref }} - name: Enable KVM run: | diff --git a/.github/workflows/e2e_migration.yml b/.github/workflows/e2e_migration.yml index 3a5e1e20c6..2ade336d51 100644 --- a/.github/workflows/e2e_migration.yml +++ b/.github/workflows/e2e_migration.yml @@ -104,17 +104,43 @@ jobs: name: e2e-tests - ${{ matrix.rn_version }} - ${{ matrix.scenario.name }} steps: + # Soft-fallback to main if determine's companion is gone at clone time. + # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref + # (set and neither empty, main, nor default-feature-branch). - name: Show selected E2E branch + id: e2e-ref env: - E2E_BRANCH: ${{ needs.e2e-branch.outputs.branch }} - run: echo $E2E_BRANCH + SELECTED: ${{ needs.e2e-branch.outputs.branch }} + CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} + run: | + set -euo pipefail + SELECTED="${SELECTED:-}" + CUSTOM_INPUT="${CUSTOM_INPUT:-}" + REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" + + if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then + REF="main" + elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then + REF="$SELECTED" + else + if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then + echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." + exit 1 + fi + echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." + REF="main" + fi + + echo "Selected e2e branch: ${SELECTED:-}" + echo "Effective e2e branch: $REF" + echo "ref=$REF" >> "$GITHUB_OUTPUT" - name: Clone E2E tests uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests path: bitkit-e2e-tests - ref: ${{ needs.e2e-branch.outputs.branch }} + ref: ${{ steps.e2e-ref.outputs.ref }} - name: Enable KVM run: | @@ -242,11 +268,42 @@ jobs: needs: [build, e2e-branch, e2e-tests] runs-on: ubuntu-latest steps: + # Soft-fallback to main if determine's companion is gone at clone time. + # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref + # (set and neither empty, main, nor default-feature-branch). + - name: Show selected E2E branch + id: e2e-ref + env: + SELECTED: ${{ needs.e2e-branch.outputs.branch }} + CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} + run: | + set -euo pipefail + SELECTED="${SELECTED:-}" + CUSTOM_INPUT="${CUSTOM_INPUT:-}" + REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" + + if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then + REF="main" + elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then + REF="$SELECTED" + else + if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then + echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." + exit 1 + fi + echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." + REF="main" + fi + + echo "Selected e2e branch: ${SELECTED:-}" + echo "Effective e2e branch: $REF" + echo "ref=$REF" >> "$GITHUB_OUTPUT" + - name: Checkout E2E tests uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests - ref: ${{ needs.e2e-branch.outputs.branch }} + ref: ${{ steps.e2e-ref.outputs.ref }} - name: Post Slack summary run: python3 scripts/slack_summary.py e2e-migration @@ -259,4 +316,4 @@ jobs: E2E_TESTS_RESULT: ${{ needs.e2e-tests.result }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} RUN_ATTEMPT: ${{ github.run_attempt }} - E2E_TESTS_REF: ${{ needs.e2e-branch.outputs.branch }} + E2E_TESTS_REF: ${{ steps.e2e-ref.outputs.ref }} From ad799ee091c4c5001ed1ed64305ce12aec305ccd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:18:40 +0000 Subject: [PATCH 2/9] ci: use shared resolve-e2e-ref action Co-authored-by: piotr-iohk --- .github/workflows/e2e-staging.yml | 68 +++++------------------------ .github/workflows/e2e.yml | 34 +++------------ .github/workflows/e2e_migration.yml | 68 +++++------------------------ 3 files changed, 25 insertions(+), 145 deletions(-) diff --git a/.github/workflows/e2e-staging.yml b/.github/workflows/e2e-staging.yml index 501cbcc80f..fd0555dd72 100644 --- a/.github/workflows/e2e-staging.yml +++ b/.github/workflows/e2e-staging.yml @@ -98,36 +98,12 @@ jobs: name: e2e-tests-staging - ${{ matrix.shard.name }} steps: - # Soft-fallback to main if determine's companion is gone at clone time. - # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref - # (set and neither empty, main, nor default-feature-branch). - - name: Show selected E2E branch + - name: Resolve E2E tests ref id: e2e-ref - env: - SELECTED: ${{ needs.e2e-branch.outputs.branch }} - CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} - run: | - set -euo pipefail - SELECTED="${SELECTED:-}" - CUSTOM_INPUT="${CUSTOM_INPUT:-}" - REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" - - if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then - REF="main" - elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then - REF="$SELECTED" - else - if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then - echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." - exit 1 - fi - echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." - REF="main" - fi - - echo "Selected e2e branch: ${SELECTED:-}" - echo "Effective e2e branch: $REF" - echo "ref=$REF" >> "$GITHUB_OUTPUT" + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.e2e-branch.outputs.branch }} + e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} - name: Clone E2E tests uses: actions/checkout@v7 @@ -268,36 +244,12 @@ jobs: needs: [build-staging, e2e-branch, e2e-tests-staging] runs-on: ubuntu-latest steps: - # Soft-fallback to main if determine's companion is gone at clone time. - # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref - # (set and neither empty, main, nor default-feature-branch). - - name: Show selected E2E branch + - name: Resolve E2E tests ref id: e2e-ref - env: - SELECTED: ${{ needs.e2e-branch.outputs.branch }} - CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} - run: | - set -euo pipefail - SELECTED="${SELECTED:-}" - CUSTOM_INPUT="${CUSTOM_INPUT:-}" - REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" - - if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then - REF="main" - elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then - REF="$SELECTED" - else - if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then - echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." - exit 1 - fi - echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." - REF="main" - fi - - echo "Selected e2e branch: ${SELECTED:-}" - echo "Effective e2e branch: $REF" - echo "ref=$REF" >> "$GITHUB_OUTPUT" + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.e2e-branch.outputs.branch }} + e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} - name: Checkout E2E tests uses: actions/checkout@v7 diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 844c35947d..ba8226ee4c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -116,36 +116,12 @@ jobs: name: e2e-tests-local - ${{ matrix.shard.name }} steps: - # Soft-fallback to main if determine's companion is gone at clone time. - # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref - # (set and neither empty, main, nor default-feature-branch). - - name: Show selected E2E branch + - name: Resolve E2E tests ref id: e2e-ref - env: - SELECTED: ${{ needs.e2e-branch.outputs.branch }} - CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} - run: | - set -euo pipefail - SELECTED="${SELECTED:-}" - CUSTOM_INPUT="${CUSTOM_INPUT:-}" - REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" - - if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then - REF="main" - elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then - REF="$SELECTED" - else - if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then - echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." - exit 1 - fi - echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." - REF="main" - fi - - echo "Selected e2e branch: ${SELECTED:-}" - echo "Effective e2e branch: $REF" - echo "ref=$REF" >> "$GITHUB_OUTPUT" + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.e2e-branch.outputs.branch }} + e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} - name: Clone E2E tests uses: actions/checkout@v7 diff --git a/.github/workflows/e2e_migration.yml b/.github/workflows/e2e_migration.yml index 2ade336d51..c18e602560 100644 --- a/.github/workflows/e2e_migration.yml +++ b/.github/workflows/e2e_migration.yml @@ -104,36 +104,12 @@ jobs: name: e2e-tests - ${{ matrix.rn_version }} - ${{ matrix.scenario.name }} steps: - # Soft-fallback to main if determine's companion is gone at clone time. - # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref - # (set and neither empty, main, nor default-feature-branch). - - name: Show selected E2E branch + - name: Resolve E2E tests ref id: e2e-ref - env: - SELECTED: ${{ needs.e2e-branch.outputs.branch }} - CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} - run: | - set -euo pipefail - SELECTED="${SELECTED:-}" - CUSTOM_INPUT="${CUSTOM_INPUT:-}" - REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" - - if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then - REF="main" - elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then - REF="$SELECTED" - else - if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then - echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." - exit 1 - fi - echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." - REF="main" - fi - - echo "Selected e2e branch: ${SELECTED:-}" - echo "Effective e2e branch: $REF" - echo "ref=$REF" >> "$GITHUB_OUTPUT" + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.e2e-branch.outputs.branch }} + e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} - name: Clone E2E tests uses: actions/checkout@v7 @@ -268,36 +244,12 @@ jobs: needs: [build, e2e-branch, e2e-tests] runs-on: ubuntu-latest steps: - # Soft-fallback to main if determine's companion is gone at clone time. - # Hard-fail when workflow_dispatch e2e_branch is a missing custom ref - # (set and neither empty, main, nor default-feature-branch). - - name: Show selected E2E branch + - name: Resolve E2E tests ref id: e2e-ref - env: - SELECTED: ${{ needs.e2e-branch.outputs.branch }} - CUSTOM_INPUT: ${{ github.event.inputs.e2e_branch }} - run: | - set -euo pipefail - SELECTED="${SELECTED:-}" - CUSTOM_INPUT="${CUSTOM_INPUT:-}" - REPO_URL="https://github.com/synonymdev/bitkit-e2e-tests.git" - - if [ -z "$SELECTED" ] || [ "$SELECTED" = "main" ]; then - REF="main" - elif git ls-remote --exit-code "$REPO_URL" "refs/heads/$SELECTED" >/dev/null; then - REF="$SELECTED" - else - if [ -n "$CUSTOM_INPUT" ] && [ "$CUSTOM_INPUT" != "main" ] && [ "$CUSTOM_INPUT" != "default-feature-branch" ]; then - echo "::error title=E2E branch missing::Custom e2e branch '$SELECTED' does not exist in synonymdev/bitkit-e2e-tests." - exit 1 - fi - echo "::warning title=E2E branch missing::Selected e2e branch '$SELECTED' no longer exists; falling back to main." - REF="main" - fi - - echo "Selected e2e branch: ${SELECTED:-}" - echo "Effective e2e branch: $REF" - echo "ref=$REF" >> "$GITHUB_OUTPUT" + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.e2e-branch.outputs.branch }} + e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} - name: Checkout E2E tests uses: actions/checkout@v7 From 20926a1ed95ef6420b26da50aaed3939ed2eff20 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:36:58 +0000 Subject: [PATCH 3/9] ci: temporary resolve-e2e-ref smoke workflow Co-authored-by: piotr-iohk --- .github/workflows/resolve-e2e-ref-smoke.yml | 57 +++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/resolve-e2e-ref-smoke.yml diff --git a/.github/workflows/resolve-e2e-ref-smoke.yml b/.github/workflows/resolve-e2e-ref-smoke.yml new file mode 100644 index 0000000000..46c37ab1db --- /dev/null +++ b/.github/workflows/resolve-e2e-ref-smoke.yml @@ -0,0 +1,57 @@ +name: resolve-e2e-ref smoke + +on: + workflow_dispatch: + inputs: + e2e_branch: + description: "E2E branch input (main | default-feature-branch | custom)" + required: false + default: "default-feature-branch" + type: string + pre_resolve_sleep_seconds: + description: "Sleep before resolve job (race simulation)" + required: false + default: "0" + type: string + +jobs: + determine: + uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main + with: + app_branch: ${{ github.ref_name }} + e2e_branch_input: ${{ inputs.e2e_branch }} + + resolve: + needs: determine + runs-on: ubuntu-latest + steps: + - name: Optional pre-resolve sleep + if: inputs.pre_resolve_sleep_seconds != '0' + run: | + echo "Sleeping ${{ inputs.pre_resolve_sleep_seconds }}s before resolve..." + sleep "${{ inputs.pre_resolve_sleep_seconds }}" + + - name: Resolve e2e ref + id: e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.determine.outputs.branch }} + e2e_branch_input: ${{ inputs.e2e_branch }} + + - name: Checkout e2e tests + uses: actions/checkout@v4 + with: + repository: synonymdev/bitkit-e2e-tests + ref: ${{ steps.e2e-ref.outputs.ref }} + fetch-depth: 1 + path: e2e-tests + + - name: Confirm checkout + working-directory: e2e-tests + run: | + echo "selected=${{ needs.determine.outputs.branch }}" + echo "effective=${{ steps.e2e-ref.outputs.ref }}" + echo "HEAD=$(git rev-parse HEAD)" + git branch -r || true + git log -1 --oneline + echo "PASS" From 34ce9a3905da6f0e790941559628e03a7bce5b61 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:38:49 +0000 Subject: [PATCH 4/9] ci: smoke trigger via push/PR for resolve-e2e-ref Co-authored-by: piotr-iohk --- .github/workflows/resolve-e2e-ref-smoke.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/resolve-e2e-ref-smoke.yml b/.github/workflows/resolve-e2e-ref-smoke.yml index 46c37ab1db..7a3abebeff 100644 --- a/.github/workflows/resolve-e2e-ref-smoke.yml +++ b/.github/workflows/resolve-e2e-ref-smoke.yml @@ -4,29 +4,37 @@ on: workflow_dispatch: inputs: e2e_branch: - description: "E2E branch input (main | default-feature-branch | custom)" + description: "E2E branch input" required: false default: "default-feature-branch" type: string pre_resolve_sleep_seconds: - description: "Sleep before resolve job (race simulation)" + description: "Sleep before resolve" required: false default: "0" type: string + push: + branches: + - 'cursor/e2e-clone-missing-branch-fallback-d3b1' + paths: + - '.github/workflows/resolve-e2e-ref-smoke.yml' + pull_request: + paths: + - '.github/workflows/resolve-e2e-ref-smoke.yml' jobs: determine: uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main with: - app_branch: ${{ github.ref_name }} - e2e_branch_input: ${{ inputs.e2e_branch }} + app_branch: ${{ github.head_ref || github.ref_name }} + e2e_branch_input: ${{ inputs.e2e_branch || 'default-feature-branch' }} resolve: needs: determine runs-on: ubuntu-latest steps: - name: Optional pre-resolve sleep - if: inputs.pre_resolve_sleep_seconds != '0' + if: ${{ (inputs.pre_resolve_sleep_seconds || '0') != '0' }} run: | echo "Sleeping ${{ inputs.pre_resolve_sleep_seconds }}s before resolve..." sleep "${{ inputs.pre_resolve_sleep_seconds }}" @@ -36,7 +44,7 @@ jobs: uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref with: selected: ${{ needs.determine.outputs.branch }} - e2e_branch_input: ${{ inputs.e2e_branch }} + e2e_branch_input: ${{ inputs.e2e_branch || 'default-feature-branch' }} - name: Checkout e2e tests uses: actions/checkout@v4 From d1ff5ecfad8f7b716626ff06c986cc316921a01f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:41:37 +0000 Subject: [PATCH 5/9] ci: smoke cases A/B/C for resolve-e2e-ref Co-authored-by: piotr-iohk --- .github/workflows/resolve-e2e-ref-smoke.yml | 101 +++++++++++++++----- 1 file changed, 76 insertions(+), 25 deletions(-) diff --git a/.github/workflows/resolve-e2e-ref-smoke.yml b/.github/workflows/resolve-e2e-ref-smoke.yml index 7a3abebeff..ad72a46651 100644 --- a/.github/workflows/resolve-e2e-ref-smoke.yml +++ b/.github/workflows/resolve-e2e-ref-smoke.yml @@ -1,18 +1,6 @@ name: resolve-e2e-ref smoke on: - workflow_dispatch: - inputs: - e2e_branch: - description: "E2E branch input" - required: false - default: "default-feature-branch" - type: string - pre_resolve_sleep_seconds: - description: "Sleep before resolve" - required: false - default: "0" - type: string push: branches: - 'cursor/e2e-clone-missing-branch-fallback-d3b1' @@ -21,31 +9,58 @@ on: pull_request: paths: - '.github/workflows/resolve-e2e-ref-smoke.yml' + workflow_dispatch: jobs: - determine: + determine-A: uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main with: app_branch: ${{ github.head_ref || github.ref_name }} - e2e_branch_input: ${{ inputs.e2e_branch || 'default-feature-branch' }} + e2e_branch_input: main - resolve: - needs: determine + resolve-A: + needs: determine-A runs-on: ubuntu-latest steps: - - name: Optional pre-resolve sleep - if: ${{ (inputs.pre_resolve_sleep_seconds || '0') != '0' }} + - name: Resolve e2e ref + id: e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.determine-A.outputs.branch }} + e2e_branch_input: main + - name: Checkout e2e tests + uses: actions/checkout@v4 + with: + repository: synonymdev/bitkit-e2e-tests + ref: ${{ steps.e2e-ref.outputs.ref }} + fetch-depth: 1 + path: e2e-tests + - name: Confirm checkout + working-directory: e2e-tests run: | - echo "Sleeping ${{ inputs.pre_resolve_sleep_seconds }}s before resolve..." - sleep "${{ inputs.pre_resolve_sleep_seconds }}" + echo "case=A" + echo "selected=${{ needs.determine-A.outputs.branch }}" + echo "effective=${{ steps.e2e-ref.outputs.ref }}" + echo "HEAD=$(git rev-parse HEAD)" + git log -1 --oneline + echo "PASS" + determine-B: + uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main + with: + app_branch: ${{ github.head_ref || github.ref_name }} + e2e_branch_input: default-feature-branch + + resolve-B: + needs: determine-B + runs-on: ubuntu-latest + steps: - name: Resolve e2e ref id: e2e-ref uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref with: - selected: ${{ needs.determine.outputs.branch }} - e2e_branch_input: ${{ inputs.e2e_branch || 'default-feature-branch' }} - + selected: ${{ needs.determine-B.outputs.branch }} + e2e_branch_input: default-feature-branch - name: Checkout e2e tests uses: actions/checkout@v4 with: @@ -53,13 +68,49 @@ jobs: ref: ${{ steps.e2e-ref.outputs.ref }} fetch-depth: 1 path: e2e-tests + - name: Confirm checkout + working-directory: e2e-tests + run: | + echo "case=B" + echo "selected=${{ needs.determine-B.outputs.branch }}" + echo "effective=${{ steps.e2e-ref.outputs.ref }}" + echo "HEAD=$(git rev-parse HEAD)" + git log -1 --oneline + echo "PASS" + determine-C: + uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main + with: + app_branch: ${{ github.head_ref || github.ref_name }} + e2e_branch_input: default-feature-branch + + resolve-C: + needs: determine-C + runs-on: ubuntu-latest + steps: + - name: Pre-resolve sleep for race simulation + run: | + echo "Sleeping 90s before resolve (case C race)..." + sleep 90 + - name: Resolve e2e ref + id: e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + with: + selected: ${{ needs.determine-C.outputs.branch }} + e2e_branch_input: default-feature-branch + - name: Checkout e2e tests + uses: actions/checkout@v4 + with: + repository: synonymdev/bitkit-e2e-tests + ref: ${{ steps.e2e-ref.outputs.ref }} + fetch-depth: 1 + path: e2e-tests - name: Confirm checkout working-directory: e2e-tests run: | - echo "selected=${{ needs.determine.outputs.branch }}" + echo "case=C" + echo "selected=${{ needs.determine-C.outputs.branch }}" echo "effective=${{ steps.e2e-ref.outputs.ref }}" echo "HEAD=$(git rev-parse HEAD)" - git branch -r || true git log -1 --oneline echo "PASS" From f1d6616b51a4762d05ce1493edf1f7474dbf0fcd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:48:46 +0000 Subject: [PATCH 6/9] ci: smoke case C race only Co-authored-by: piotr-iohk --- .github/workflows/resolve-e2e-ref-smoke.yml | 70 +-------------------- 1 file changed, 2 insertions(+), 68 deletions(-) diff --git a/.github/workflows/resolve-e2e-ref-smoke.yml b/.github/workflows/resolve-e2e-ref-smoke.yml index ad72a46651..7666578a98 100644 --- a/.github/workflows/resolve-e2e-ref-smoke.yml +++ b/.github/workflows/resolve-e2e-ref-smoke.yml @@ -12,72 +12,6 @@ on: workflow_dispatch: jobs: - determine-A: - uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main - with: - app_branch: ${{ github.head_ref || github.ref_name }} - e2e_branch_input: main - - resolve-A: - needs: determine-A - runs-on: ubuntu-latest - steps: - - name: Resolve e2e ref - id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref - with: - selected: ${{ needs.determine-A.outputs.branch }} - e2e_branch_input: main - - name: Checkout e2e tests - uses: actions/checkout@v4 - with: - repository: synonymdev/bitkit-e2e-tests - ref: ${{ steps.e2e-ref.outputs.ref }} - fetch-depth: 1 - path: e2e-tests - - name: Confirm checkout - working-directory: e2e-tests - run: | - echo "case=A" - echo "selected=${{ needs.determine-A.outputs.branch }}" - echo "effective=${{ steps.e2e-ref.outputs.ref }}" - echo "HEAD=$(git rev-parse HEAD)" - git log -1 --oneline - echo "PASS" - - determine-B: - uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main - with: - app_branch: ${{ github.head_ref || github.ref_name }} - e2e_branch_input: default-feature-branch - - resolve-B: - needs: determine-B - runs-on: ubuntu-latest - steps: - - name: Resolve e2e ref - id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref - with: - selected: ${{ needs.determine-B.outputs.branch }} - e2e_branch_input: default-feature-branch - - name: Checkout e2e tests - uses: actions/checkout@v4 - with: - repository: synonymdev/bitkit-e2e-tests - ref: ${{ steps.e2e-ref.outputs.ref }} - fetch-depth: 1 - path: e2e-tests - - name: Confirm checkout - working-directory: e2e-tests - run: | - echo "case=B" - echo "selected=${{ needs.determine-B.outputs.branch }}" - echo "effective=${{ steps.e2e-ref.outputs.ref }}" - echo "HEAD=$(git rev-parse HEAD)" - git log -1 --oneline - echo "PASS" - determine-C: uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main with: @@ -90,8 +24,8 @@ jobs: steps: - name: Pre-resolve sleep for race simulation run: | - echo "Sleeping 90s before resolve (case C race)..." - sleep 90 + echo "Sleeping 120s before resolve (case C race)..." + sleep 120 - name: Resolve e2e ref id: e2e-ref uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref From 65b7897dbf0d20743690f9030005f360ddc303a9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 13:55:17 +0000 Subject: [PATCH 7/9] ci: remove temporary resolve-e2e-ref smoke Co-authored-by: piotr-iohk --- .github/workflows/resolve-e2e-ref-smoke.yml | 50 --------------------- 1 file changed, 50 deletions(-) delete mode 100644 .github/workflows/resolve-e2e-ref-smoke.yml diff --git a/.github/workflows/resolve-e2e-ref-smoke.yml b/.github/workflows/resolve-e2e-ref-smoke.yml deleted file mode 100644 index 7666578a98..0000000000 --- a/.github/workflows/resolve-e2e-ref-smoke.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: resolve-e2e-ref smoke - -on: - push: - branches: - - 'cursor/e2e-clone-missing-branch-fallback-d3b1' - paths: - - '.github/workflows/resolve-e2e-ref-smoke.yml' - pull_request: - paths: - - '.github/workflows/resolve-e2e-ref-smoke.yml' - workflow_dispatch: - -jobs: - determine-C: - uses: synonymdev/bitkit-e2e-tests/.github/workflows/determine-e2e-branch.yml@main - with: - app_branch: ${{ github.head_ref || github.ref_name }} - e2e_branch_input: default-feature-branch - - resolve-C: - needs: determine-C - runs-on: ubuntu-latest - steps: - - name: Pre-resolve sleep for race simulation - run: | - echo "Sleeping 120s before resolve (case C race)..." - sleep 120 - - name: Resolve e2e ref - id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref - with: - selected: ${{ needs.determine-C.outputs.branch }} - e2e_branch_input: default-feature-branch - - name: Checkout e2e tests - uses: actions/checkout@v4 - with: - repository: synonymdev/bitkit-e2e-tests - ref: ${{ steps.e2e-ref.outputs.ref }} - fetch-depth: 1 - path: e2e-tests - - name: Confirm checkout - working-directory: e2e-tests - run: | - echo "case=C" - echo "selected=${{ needs.determine-C.outputs.branch }}" - echo "effective=${{ steps.e2e-ref.outputs.ref }}" - echo "HEAD=$(git rev-parse HEAD)" - git log -1 --oneline - echo "PASS" From ac52b61717717145a9eb6cd364ab2060a392e7d5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 14:13:39 +0000 Subject: [PATCH 8/9] ci: pin resolve-e2e-ref to main Co-authored-by: piotr-iohk --- .github/workflows/e2e-staging.yml | 4 ++-- .github/workflows/e2e.yml | 2 +- .github/workflows/e2e_migration.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-staging.yml b/.github/workflows/e2e-staging.yml index fd0555dd72..2b7a4393b1 100644 --- a/.github/workflows/e2e-staging.yml +++ b/.github/workflows/e2e-staging.yml @@ -100,7 +100,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} @@ -246,7 +246,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index ba8226ee4c..8a6c402ae6 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -118,7 +118,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} diff --git a/.github/workflows/e2e_migration.yml b/.github/workflows/e2e_migration.yml index c18e602560..6085099797 100644 --- a/.github/workflows/e2e_migration.yml +++ b/.github/workflows/e2e_migration.yml @@ -106,7 +106,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} @@ -246,7 +246,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref - uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@ci/resolve-e2e-ref + uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} e2e_branch_input: ${{ github.event.inputs.e2e_branch || 'default-feature-branch' }} From 1ff0fd123fafea6960f37ec4282d45cfd63e63a2 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 22 Sep 2026 12:39:33 +0000 Subject: [PATCH 9/9] ci: soften slack-report e2e resolve so posts still fire Co-authored-by: piotr-iohk --- .github/workflows/e2e-staging.yml | 3 ++- .github/workflows/e2e_migration.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-staging.yml b/.github/workflows/e2e-staging.yml index 2b7a4393b1..2facb6f500 100644 --- a/.github/workflows/e2e-staging.yml +++ b/.github/workflows/e2e-staging.yml @@ -246,6 +246,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref + continue-on-error: true uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} @@ -255,7 +256,7 @@ jobs: uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests - ref: ${{ steps.e2e-ref.outputs.ref }} + ref: ${{ steps.e2e-ref.outputs.ref || 'main' }} - name: Post Slack summary run: python3 scripts/slack_summary.py e2e-staging diff --git a/.github/workflows/e2e_migration.yml b/.github/workflows/e2e_migration.yml index 6085099797..9ad93829a3 100644 --- a/.github/workflows/e2e_migration.yml +++ b/.github/workflows/e2e_migration.yml @@ -246,6 +246,7 @@ jobs: steps: - name: Resolve E2E tests ref id: e2e-ref + continue-on-error: true uses: synonymdev/bitkit-e2e-tests/.github/actions/resolve-e2e-ref@main with: selected: ${{ needs.e2e-branch.outputs.branch }} @@ -255,7 +256,7 @@ jobs: uses: actions/checkout@v7 with: repository: synonymdev/bitkit-e2e-tests - ref: ${{ steps.e2e-ref.outputs.ref }} + ref: ${{ steps.e2e-ref.outputs.ref || 'main' }} - name: Post Slack summary run: python3 scripts/slack_summary.py e2e-migration