Skip to content

ci: add e2e-staging workflow for nightly staging tests - #1253

Open
piotr-iohk wants to merge 5 commits into
masterfrom
cursor/e2e-staging-workflow-d3c9
Open

ci: add e2e-staging workflow for nightly staging tests#1253
piotr-iohk wants to merge 5 commits into
masterfrom
cursor/e2e-staging-workflow-d3c9

Conversation

@piotr-iohk

@piotr-iohk piotr-iohk commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Fixes synonymdev/bitkit-e2e-tests#221 (PR A — android)

Description

Adds a new workflow .github/workflows/e2e-staging.yml that runs staging E2E tests:

  • Triggers:

    • schedule: runs daily at 04:00 UTC (after migration cron at 02:00)
    • workflow_dispatch: manual dispatch with inputs:
      • e2e_branch — branch of bitkit-e2e-tests to use
      • notify_slack — checkbox to post failure to Slack (off by default)
    • No PR trigger — nightly + dispatch only
  • Staging shards:

    • @multi_address_2
    • @pubky
    • @hardware_wallet
    • @transfer_max
    • @transfer_1 — temporarily omitted; will return in PR B / e2e-tests fix
  • Build: Uses BACKEND=regtest with TREZOR_BRIDGE: true matching existing staging build config

  • Slack: Notifies #bitkit-staging-nightly via secrets.SLACK_WEBHOOK_URL_STAGING on failure (pinned Slack action SHA). Covers failures in build-staging, e2e-branch, and e2e-tests-staging jobs.

    • On schedule: Slack always fires on failure
    • On workflow_dispatch: Slack fires only when notify_slack checkbox is checked

The existing e2e.yml workflow remains unchanged — the e2e-status merge gate is unaffected.

Design

N/A — no UI changes.

Preview

N/A

QA Notes

To dispatch after merge:

gh workflow run e2e-staging.yml -f e2e_branch=main
# or with Slack notification on failure:
gh workflow run e2e-staging.yml -f e2e_branch=main -f notify_slack=true

The workflow runs nightly at 04:00 UTC or via manual dispatch.

Open in Web Open in Cursor 

Co-authored-by: piotr-iohk <piotr-iohk@users.noreply.github.com>
@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Regtest APK

Built from 3fa1500 (run).

Download bitkit-dev-debug universal APK (expires in 30 days).

@greptile-apps

greptile-apps Bot commented Sep 11, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

The workflow should not merge until scheduled and manual build or branch-selection failures reliably trigger the promised Slack notification.

Findings

  1. P1 Upstream Failures Skip Alerts
  2. P2 Pull Requests Duplicate Shards

Summary

  • Builds a network-backed regtest APK with Trezor Bridge support.
  • Runs multi-address, Pubky, hardware-wallet, and transfer shards with retries.
  • Uploads failure artifacts and attempts to notify the staging Slack channel.
  • The failure notification currently misses upstream failures, and the pull-request trigger duplicates existing staging shards on future PRs.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  Trigger[Schedule / Manual / Pull Request] --> Build[build-staging]
  Trigger --> Branch[e2e-branch]
  Build --> Tests[e2e-tests-staging matrix]
  Branch --> Tests
  Tests -->|failure| Notify[notify-failure]
  Build -. failure skips tests .-> Missed[No Slack notification]
  Branch -. failure skips tests .-> Missed
Loading

Reviews (1) · Last reviewed commit: "ci: add e2e-staging workflow for nightly..."

Comment thread .github/workflows/e2e-staging.yml Outdated
Comment thread .github/workflows/e2e-staging.yml Outdated
cursoragent and others added 3 commits September 11, 2026 19:04
Co-authored-by: piotr-iohk <piotr-iohk@users.noreply.github.com>
- Remove pull_request trigger, keep only schedule (0 4 * * *) and workflow_dispatch
- Remove transfer_staging shard (@transfer_1|@transfer_max) - deferred to PR B
- Remove draft check conditions (no longer needed without PR trigger)
- Keep notify-failure with pinned slack action SHA

Co-authored-by: piotr-iohk <piotr-iohk@users.noreply.github.com>
Co-authored-by: piotr-iohk <piotr-iohk@users.noreply.github.com>
Co-authored-by: piotr-iohk <piotr-iohk@users.noreply.github.com>

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 1 file: adds a nightly and manually dispatched E2E Staging workflow that builds the staging regtest APK and runs four staging shards, notifying Slack when any upstream job fails. 1 non-blocking finding inline.

Coverage

Total: 0% (whole PR, 1 file)

  • Journeys: 0% - the change is CI workflow config and exercises no user journey
  • Unit tests: 0% - no production Kotlin changes; the repo's only test that reads workflow artifact paths is BuildOutputContractTest.kt
  • QA: 0% - Manual Tests not run

Reviewed by Codex (deepseek-v4.1-flash-high) via gh-pr-review-loop skill

uses: actions/upload-artifact@v7
with:
name: bitkit-e2e-apk-staging_${{ github.run_number }}
path: app/build/outputs/bitkit/devDebug/bitkit_e2e.apk

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new workflow reads the collected APK from app/build/outputs/bitkit/devDebug, which makes it another consumer of the AGP-collected output, but BuildOutputContractTest.kt still lists only Justfile, e2e.yml, e2e_migration.yml, release.yml, release-internal.yml, and .agents/commands/release.md. That list is what catches a consumer left behind if the collected output path moves. Could we add .github/workflows/e2e-staging.yml to ARTIFACT_CONSUMERS in BuildOutputContractTest.kt?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci: split local merge-gate E2E from staging nightly/release

2 participants