mirror of
https://github.com/morluto/rea.git
synced 2026-11-12 09:52:27 +00:00
* fix(ci): retry interrupted native profile downloads The immutable mitmproxy GET can reset after a partial body with curl 56, which the existing default retry policy does not retry. Retry transfer errors within the existing attempt count and keep the checksum gate. Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com> * test(ci): verify native profile download recovery Execute the named workflow step with real curl, a local HTTP server and a tiny archive. Cover TCP reset recovery, retry exhaustion, HTTP failure and digest rejection before profile extraction or environment export. Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com> --------- Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
69 lines
3.1 KiB
YAML
69 lines
3.1 KiB
YAML
name: Real historical web network captures
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
inputs:
|
|
build_cache_artifact:
|
|
description: Portable build cache artifact from the calling CI run.
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
remote_cache_write:
|
|
description: Trusted release qualification may publish the remote cache.
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
secrets:
|
|
TURBO_TOKEN:
|
|
description: Remote cache token. Only trusted callers pass it.
|
|
required: false
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
HUSKY: "0"
|
|
# A called workflow sees the caller event, so workflow_call is not an event
|
|
# name here. Writes when remote_cache_write is set, or on the default branch
|
|
# for push, schedule, and manual dispatch. Open pull requests stay empty-token
|
|
# and use the local cache only.
|
|
TURBO_TOKEN: "${{ (inputs.remote_cache_write == true || (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'))) && secrets.TURBO_TOKEN || '' }}"
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|
|
TURBO_CACHE: "${{ (inputs.remote_cache_write == true || (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'))) && 'local:rw,remote:rw' || 'local:rw' }}"
|
|
NODE_OPTIONS: --max-old-space-size=768
|
|
|
|
jobs:
|
|
real-web-network-captures:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
- name: Cache npm package downloads
|
|
id: npm-cache
|
|
uses: ./.github/actions/npm-cache
|
|
- name: Use pinned package manager
|
|
run: npm install --global npm@11.16.0
|
|
- run: npm ci
|
|
- uses: ./.github/actions/portable-build-cache
|
|
with:
|
|
build_cache_artifact: ${{ inputs.build_cache_artifact }}
|
|
- name: Acquire fixed upstream native profile in runner temporary storage
|
|
shell: bash
|
|
run: |
|
|
capture_tool_root="${RUNNER_TEMP}/rea-mitmproxy-12.2.3"
|
|
mkdir -p "${capture_tool_root}"
|
|
# This immutable GET may reset mid-body; retry it before checksum verification.
|
|
curl --fail --location --retry 3 --retry-all-errors --max-time 180 \
|
|
https://downloads.mitmproxy.org/12.2.3/mitmproxy-12.2.3-linux-x86_64.tar.gz \
|
|
--output "${capture_tool_root}/mitmproxy.tar.gz"
|
|
echo '2e95286b618fa6fd33e5e62a78c2e5112571d85f42ec2bac29b97ee242bdb5c5 mitmproxy.tar.gz' \
|
|
| (cd "${capture_tool_root}" && sha256sum --check --strict)
|
|
tar -xzf "${capture_tool_root}/mitmproxy.tar.gz" -C "${capture_tool_root}"
|
|
echo "REA_MITMDUMP_COMMAND=${capture_tool_root}/mitmdump" >> "${GITHUB_ENV}"
|
|
- name: Verify upstream producer fixtures through public CLI and MCP
|
|
run: npm run verify:web:network-captures
|