forked from mempool/mempool
-
Notifications
You must be signed in to change notification settings - Fork 0
release: promote verified Bitcoin Explorer baseline #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
74 commits
Select commit
Hold shift + click to select a range
9ac73f0
backend: import mining pool metadata from a bundled first-party file
bitcoinuniverseadmin e74c054
backend: publish what this deployment can serve, and refuse an incohe…
bitcoinuniverseadmin e19ae4a
backend: let a statistics read failure reach the route layer
bitcoinuniverseadmin 1eb7037
frontend: give every remote read a lifecycle that ends
bitcoinuniverseadmin a58abe8
release: gate the cutover on the deployed configuration, not on fixtures
bitcoinuniverseadmin be33a11
theme: the Universe pink system, and the gates that hold its roles apart
bitcoinuniverseadmin 2d3dc5e
protocols: let the authority decide what is readable, not the registry
bitcoinuniverseadmin 094d5a2
fiat: leave the amount blank when there is no price, rather than show…
bitcoinuniverseadmin 692a325
design: finish the primary action in the house style, and say why in …
bitcoinuniverseadmin 0f7a663
ci: compare the coverage table by content, not by line ending
bitcoinuniverseadmin bc35956
qa: fail a page that never finishes, and check production without mocks
bitcoinuniverseadmin b72a9bc
docs: say what the deployment actually runs, and what a status means
bitcoinuniverseadmin 4ca8c39
fix: give a group one visible answer, a label its place, and an error…
bitcoinuniverseadmin f7a8e14
backend: satisfy the unhandled-await rule the new code broke
bitcoinuniverseadmin 9c2b526
charts: one fee rate, one colour, and a fixture large enough to see it
bitcoinuniverseadmin 5e8a1a6
qa: prove the unfinished-page gate fires, rather than trusting it
bitcoinuniverseadmin 64fffcd
a11y: name the icon-only controls on the graphs page
bitcoinuniverseadmin 2954fee
ops: run the synthetic check on the host, every five minutes
bitcoinuniverseadmin ff9a0b1
qa: give the release identity page something to render, and state the…
bitcoinuniverseadmin 76ec75e
release: refuse an address backend with nothing behind it
bitcoinuniverseadmin 4356d61
design: drop the inherited page decoration, and give a bar's label it…
bitcoinuniverseadmin 93e19b4
theme: stop spending the informational blue on decoration
bitcoinuniverseadmin 0a61ef2
protocols: bound the registry read, and judge the waiting state on wh…
bitcoinuniverseadmin 920a347
qa: keep harness output out of the repository
bitcoinuniverseadmin 0a3139f
charts: say how far back the data goes when it is less than the range
bitcoinuniverseadmin 6080691
charts: say "1 hour", and stop walking the series on every render
bitcoinuniverseadmin 58773f9
qa: check the two modes the route matrix never opened
bitcoinuniverseadmin 58e1d28
fix: a green at 2.37:1 that nothing could see, and the gate that let …
bitcoinuniverseadmin 2b604e4
ops: back the database up on a schedule, and write down what it costs
bitcoinuniverseadmin 88183aa
docs: point the rollback notes at the scheduled backup
bitcoinuniverseadmin 9c001dc
ci: prove the call sites use the foreground pairs, not just that they…
bitcoinuniverseadmin ffb94dd
test: start the integration database from a known state
bitcoinuniverseadmin 9f12cf7
ci: hold the built output to the punctuation rule, not just the source
bitcoinuniverseadmin 5e33ed3
fix: the address page, which has been showing an error in every scree…
bitcoinuniverseadmin df4526b
gateway: wait out an upstream restart instead of answering 502
bitcoinuniverseadmin 5810e13
release: leave the gateway up when its own code has not changed
bitcoinuniverseadmin ff476e7
docs: record what a cutover actually does to the origin
bitcoinuniverseadmin d701185
qa: stop the modes check racing the router
bitcoinuniverseadmin 61db3f9
search: let the group label sit above its results instead of beside them
bitcoinuniverseadmin 6edc89e
docs: list the gates that exist now, and say why the fixtures are par…
bitcoinuniverseadmin 21dae53
qa: judge a page on what is on screen, and give it a real deadline
bitcoinuniverseadmin 7007f64
qa: block on the routes this work covers, and keep reporting the rest
bitcoinuniverseadmin ae4ba8e
Merge the production go-state work into the pink brand system
bitcoinuniverseadmin 867717a
fix: the four pages the gate found, so it can hold them too
bitcoinuniverseadmin 8c9a539
a11y: the tracker stages on the inset surface read at 4.5:1
bitcoinuniverseadmin 6d48139
ci: serve each visual run on its own port, and prove the server is ours
bitcoinuniverseadmin 20ea595
qa: fill the gaps that were failing the unfinished-page gate, and sto…
bitcoinuniverseadmin 39bcac0
Merge pull request #6: production go-state fixes
bitcoinuniverseadmin c38bb77
Merge pull request #7: Universe Glam pink brand system
bitcoinuniverseadmin 9604d20
fix: unserved third-party proxy routes answer 404, not 500
bitcoinuniverseadmin 69c7437
qa: split the visual matrix into two passes that finish
bitcoinuniverseadmin b8ee963
Merge remote-tracking branch 'origin/develop' into fix/universe-explo…
bitcoinuniverseadmin adbe39a
fix: page deadlines land inside the probe's failure budget, and the m…
bitcoinuniverseadmin 46ee75a
a11y: the protocols notes were reading at 4.33:1, just under the floor
bitcoinuniverseadmin 1b00bd8
revert: restore the three timing fixes my last commit undid
bitcoinuniverseadmin 0cfb915
frontend: refine protocol and progress layout
bitcoinuniverseadmin 2ce2b82
merge: complete production go-state work
bitcoinuniverseadmin 957d010
frontend: announce address history progress
bitcoinuniverseadmin 06b6b7f
frontend: bound the blocks page wait
bitcoinuniverseadmin 4a57b40
frontend: share the live feed failure state
bitcoinuniverseadmin 9adef6e
qa: cover address transaction waits
bitcoinuniverseadmin 800f6c2
fix: retain dashboard stream imports after consolidation
bitcoinuniverseadmin 31b0468
fix: render address history without socket price data
bitcoinuniverseadmin 6c878ed
Merge pull request #8 from bitcoinuniverseio/fix/universe-explorer-pr…
bitcoinuniverseadmin b314061
fix: the live-feed deadline is five seconds again, as reviewed
bitcoinuniverseadmin 078f5c9
ci: build the release artifact on a runner, not on a workstation
bitcoinuniverseadmin dcc9266
ci: build the dispatched ref, and check the lock file before hard lin…
bitcoinuniverseadmin 885d372
deploy: let systemd hold the gateway port so a restart refuses nothing
bitcoinuniverseadmin a571419
deploy: drop PartOf, which would have restarted the socket with the s…
bitcoinuniverseadmin a8810de
deploy: give the port back before rolling back to a pre-socket release
bitcoinuniverseadmin 784ef7d
ops: accept --base, and write down what the socket handover was measu…
bitcoinuniverseadmin 36fe5d4
ci: give the deep visual pass the time it actually takes
bitcoinuniverseadmin 6adae92
ci: isolate integration databases across runners
bitcoinuniverseadmin 00b16b0
qa: emulate 200 percent zoom the way a browser does, not with css zoom
bitcoinuniverseadmin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| name: Universe production smoke | ||
|
|
||
| # Checks the live origin with nothing mocked. | ||
| # | ||
| # The rest of the suite answers every request from fixtures, which is what let | ||
| # a release ship with a Charts page and a Mining dashboard in front of routes | ||
| # that answered 404. Fixtures prove how a page renders given data; only this | ||
| # proves the deployment can produce any. | ||
|
|
||
| on: | ||
| # After a release, and on a schedule so a dependency that fails later is | ||
| # noticed without anyone deploying. | ||
| workflow_dispatch: | ||
| inputs: | ||
| origin: | ||
| description: Origin to check | ||
| required: false | ||
| default: https://explorer.bitcoinuniverse.io | ||
| schedule: | ||
| - cron: '17 * * * *' | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| concurrency: | ||
| group: universe-production-smoke | ||
| cancel-in-progress: false | ||
|
|
||
| jobs: | ||
| smoke: | ||
| name: Live origin answers with real content | ||
| runs-on: [self-hosted, linux-ultra] | ||
| timeout-minutes: 10 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | ||
|
|
||
| - name: Setup Node | ||
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | ||
| with: | ||
| node-version: '24.19.0' | ||
|
|
||
| - name: Every advertised feature has routes, data, and a matching release | ||
| run: node scripts/universe/synthetic-check.mjs "${{ github.event.inputs.origin || 'https://explorer.bitcoinuniverse.io' }}" |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| name: Universe release artifact | ||
|
|
||
| # Builds the one artifact a release installs, on the runner fleet. | ||
| # | ||
| # It exists because the artifact used to be built on a workstation, and that | ||
| # machine has two ways of handing you a stale build without saying so: a | ||
| # leftover server process keeps serving an old output directory, and a failed | ||
| # build step can leave the previous output in place. Both have already produced | ||
| # a measurement that described a build nobody was running. A runner starts from | ||
| # a clean checkout every time, so the artifact matches the commit it names. | ||
|
|
||
| # It builds the ref it is dispatched on, and takes no ref input. An input | ||
| # would be more convenient and is not safe: dispatched from the default | ||
| # branch, the job holds that branch's Actions cache scope, so building an | ||
| # arbitrary ref would run that ref's install and build scripts with write | ||
| # access to the cache every other workflow here restores from. Dispatch it | ||
| # against the branch or tag you want built instead. | ||
| on: | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| artifact: | ||
| name: Build and pack | ||
| runs-on: [self-hosted, linux-ultra] | ||
| timeout-minutes: 90 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | ||
|
|
||
| - name: Record what is being built | ||
| id: sha | ||
| run: | | ||
| sha=$(git rev-parse HEAD) | ||
| printf 'sha=%s\n' "$sha" >> "$GITHUB_OUTPUT" | ||
| printf 'short=%s\n' "${sha:0:9}" >> "$GITHUB_OUTPUT" | ||
| printf 'Building %s (%s)\n' "$sha" "$(git log -1 --format=%s)" | ||
|
|
||
| - name: Setup Node | ||
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | ||
| with: | ||
| node-version: '24.19.0' | ||
|
|
||
| - name: Install backend | ||
| working-directory: backend | ||
| run: npm ci | ||
|
|
||
| - name: Build backend | ||
| working-directory: backend | ||
| run: npm run build | ||
|
|
||
| - name: Install frontend | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
| working-directory: frontend | ||
| run: npm ci | ||
|
|
||
| - name: Build frontend | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
| working-directory: frontend | ||
| run: npm run build:universe | ||
|
|
||
| # The same gates the CI run applies to a build, applied to the build that | ||
| # is about to be shipped. A green CI run on the same commit does not prove | ||
| # this output is sound, because this is a different build. | ||
| - name: Built bundle carries no upstream marks | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
| run: node scripts/universe/check-branding.mjs frontend/dist | ||
|
|
||
| - name: Built bundle calls no third-party origin | ||
| run: node scripts/universe/check-origins.mjs frontend/dist | ||
|
|
||
| - name: Every asset the build references is in the output | ||
| run: node scripts/universe/check-build-assets.mjs | ||
|
|
||
| - name: No em dash in what the build actually ships | ||
| run: node scripts/universe/check-text.mjs frontend/dist | ||
|
|
||
| # release.sh reads the frontend from frontend/build, the backend from | ||
| # backend/dist, and the gateway from scripts/universe. node_modules and | ||
| # the compiled gbt module are not packed: install hard-links them from the | ||
| # running release, which is correct only while the dependency tree is | ||
| # unchanged. The lock file is packed so that release.sh install can | ||
| # compare it against the running release and refuse the hard link when it | ||
| # differs. That check belongs there, where both trees are visible; here | ||
| # only one of them is. | ||
| - name: Pack | ||
| id: pack | ||
| run: | | ||
| set -euo pipefail | ||
| sha='${{ steps.sha.outputs.short }}' | ||
| stage=$(mktemp -d) | ||
| mkdir -p "$stage/backend" "$stage/frontend" "$stage/scripts" | ||
| cp -a backend/dist "$stage/backend/dist" | ||
| cp -a backend/package.json "$stage/backend/package.json" | ||
| cp -a backend/package-lock.json "$stage/backend/package-lock.json" | ||
| cp -a frontend/dist/mempool/browser "$stage/frontend/build" | ||
| cp -a scripts/universe "$stage/scripts/universe" | ||
| test -f "$stage/backend/dist/index.js" | ||
| test -f "$stage/frontend/build/index.html" | ||
| test -f "$stage/scripts/universe/gateway.mjs" | ||
| out="$PWD/mempool-$sha.tar.gz" | ||
| tar -czf "$out" -C "$stage" backend frontend scripts | ||
| sha256sum "$out" | tee "$out.sha256" | ||
| printf 'name=mempool-%s\n' "$sha" >> "$GITHUB_OUTPUT" | ||
|
|
||
| - name: Upload | ||
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | ||
| with: | ||
| name: ${{ steps.pack.outputs.name }} | ||
| path: | | ||
| mempool-*.tar.gz | ||
| mempool-*.tar.gz.sha256 | ||
| retention-days: 14 | ||
| if-no-files-found: error | ||
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
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
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.