mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-10-03 16:55:50 +01:00
Bumps the gh-actions group with 2 updates: [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) and [dorny/paths-filter](https://github.com/dorny/paths-filter). Updates `actions/attest-build-provenance` from 4.1.0 to 4.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/attest-build-provenance/releases">actions/attest-build-provenance's releases</a>.</em></p> <blockquote> <h2>v4.1.1</h2> <blockquote> <p>[!NOTE] As of version 4, <code>actions/attest-build-provenance</code> is simply a wrapper on top of <a href="https://github.com/actions/attest"><code>actions/attest</code></a>.</p> <p>Existing applications may continue to use the <code>attest-build-provenance</code> action, but new implementations should use <code>actions/attest</code> instead.</p> </blockquote> <h2>What's Changed</h2> <ul> <li>Update actions/attest to v4.1.1 by <a href="https://github.com/bdehamer"><code>@bdehamer</code></a> in <a href="https://redirect.github.com/actions/attest-build-provenance/pull/858">actions/attest-build-provenance#858</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/attest-build-provenance/compare/v4.1.0...v4.1.1">https://github.com/actions/attest-build-provenance/compare/v4.1.0...v4.1.1</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/attest-build-provenance/commit/0f67c3f4856b2e3261c31976d6725780e5e4c373"><code>0f67c3f</code></a> Bump actions/checkout from 6.0.3 to 7.0.0 (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/857">#857</a>)</li> <li><a href="https://github.com/actions/attest-build-provenance/commit/21b787db45d5d4b6fc776b99a247a6493082d1fd"><code>21b787d</code></a> Update actions/attest to v4.1.1 (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/858">#858</a>)</li> <li><a href="https://github.com/actions/attest-build-provenance/commit/f14352a605c57b0a66e0d49bba5825967f1dbedf"><code>f14352a</code></a> add dependabot cooldown (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/851">#851</a>)</li> <li><a href="https://github.com/actions/attest-build-provenance/commit/2c04a00460b64b4dfd062384e60ea87fa18e1728"><code>2c04a00</code></a> Bump actions/checkout from 6.0.2 to 6.0.3 in the actions-minor group (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/850">#850</a>)</li> <li><a href="https://github.com/actions/attest-build-provenance/commit/10334b5f1e684784025c3fc0a277c88c19089275"><code>10334b5</code></a> remove badges from README (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/840">#840</a>)</li> <li><a href="https://github.com/actions/attest-build-provenance/commit/c5efebd311e9a809e832398ca2b73bb429ff3508"><code>c5efebd</code></a> remove prober workflows (<a href="https://redirect.github.com/actions/attest-build-provenance/issues/837">#837</a>)</li> <li>See full diff in <a href="https://github.com/actions/attest-build-provenance/compare/a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32...0f67c3f4856b2e3261c31976d6725780e5e4c373">compare view</a></li> </ul> </details> <br /> Updates `dorny/paths-filter` from 4 to 4.0.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's releases</a>.</em></p> <blockquote> <h2>v4.0.1</h2> <h2>What's Changed</h2> <ul> <li>Support merge queue by <a href="https://github.com/masaru-iritani"><code>@masaru-iritani</code></a> in <a href="https://redirect.github.com/dorny/paths-filter/pull/255">dorny/paths-filter#255</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/masaru-iritani"><code>@masaru-iritani</code></a> made their first contribution in <a href="https://redirect.github.com/dorny/paths-filter/pull/255">dorny/paths-filter#255</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/dorny/paths-filter/compare/v4.0.0...v4.0.1">https://github.com/dorny/paths-filter/compare/v4.0.0...v4.0.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's changelog</a>.</em></p> <blockquote> <h2>v4.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/255">Support merge queue</a></li> </ul> <h2>v4.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/294">Update action runtime to node24</a></li> </ul> <h2>v3.0.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/279">Add missing predicate-quantifier</a></li> </ul> <h2>v3.0.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/224">Add config parameter for predicate quantifier</a></li> </ul> <h2>v3.0.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare base and ref when token is empty</a></li> </ul> <h2>v3.0.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to Node.js 20</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/215">Update all dependencies</a></li> </ul> <h2>v2.11.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/167">Update @actions/core to v1.10.0 - Fixes warning about deprecated set-output</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/168">Document need for pull-requests: read permission</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating to actions/checkout@v3</a></li> </ul> <h2>v2.11.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/157">Set list-files input parameter as not required</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/161">Update Node.js</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix incorrect handling of Unicode characters in exec()</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/163">Use Octokit pagination</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates real world links</a></li> </ul> <h2>v2.10.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/91">Fix getLocalRef() returns wrong ref</a></li> </ul> <h2>v2.10.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/85">Improve robustness of change detection</a></li> </ul> <h2>v2.10.0</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/82">Add ref input parameter</a></li> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/83">Fix change detection in PR when pullRequest.changed_files is incorrect</a></li> </ul> <h2>v2.9.3</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/78">Fix change detection when base is a tag</a></li> </ul> <h2>v2.9.2</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/75">Fix fetching git history</a></li> </ul> <h2>v2.9.1</h2> <ul> <li><a href="https://redirect.github.com/dorny/paths-filter/pull/74">Fix fetching git history + fallback to unshallow repo</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dorny/paths-filter/commit/3c49e64ca26115121162fb767bc6af9e8d059f1a"><code>3c49e64</code></a> Merge pull request <a href="https://redirect.github.com/dorny/paths-filter/issues/210">#210</a> from dorny/use-nodejs-20</li> <li><a href="https://github.com/dorny/paths-filter/commit/8ec7be473424d724f09d3c51b7962ae5f2ffcbab"><code>8ec7be4</code></a> Update to nodejs 20</li> <li><a href="https://github.com/dorny/paths-filter/commit/100a1198b209450115509c0565d407ac269190dc"><code>100a119</code></a> Revert back to node16</li> <li><a href="https://github.com/dorny/paths-filter/commit/96be2b61c476f7b821cc2ed4eb7cbe4d96d30f60"><code>96be2b6</code></a> Merge pull request <a href="https://redirect.github.com/dorny/paths-filter/issues/206">#206</a> from danielhjacobs/patch-1</li> <li><a href="https://github.com/dorny/paths-filter/commit/f5071954e88595af02cdf15a1cb0c0c22fc8ca08"><code>f507195</code></a> Update Node.js to version 20</li> <li>See full diff in <a href="https://github.com/dorny/paths-filter/compare/v4...v4.0.1">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
131 lines
4.8 KiB
YAML
131 lines
4.8 KiB
YAML
name: E2E Platform
|
|
|
|
# Hermetic end-to-end matrix: boots the app under test against mock
|
|
# Anna's Archive / Cloudflare / bypasser / DNS / proxy / Tor / real torrent
|
|
# clients and runs the cluster suite under each config profile.
|
|
#
|
|
# On a PR that touches relevant code, this runs a fast core subset *and* the heavy
|
|
# `full` profile (real Chrome solving Cloudflare + DoH + real qBittorrent). The
|
|
# `e2e-required` job aggregates them into ONE status check — make that check a
|
|
# required status check in branch protection to block merges on any e2e failure
|
|
# (see tests/e2e/platform/README.md "Gating PRs").
|
|
|
|
on:
|
|
pull_request:
|
|
schedule:
|
|
- cron: "0 4 * * *" # nightly full matrix
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: e2e-platform-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Detect whether anything that affects the e2e platform changed. This lets the
|
|
# required check always report (never stuck "pending") while only spending CI on
|
|
# PRs that can actually break the e2e stack.
|
|
changes:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
relevant: ${{ steps.filter.outputs.relevant }}
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- uses: dorny/paths-filter@v4.0.1
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
relevant:
|
|
- 'shelfmark/**'
|
|
- 'entrypoint.sh'
|
|
- 'tor.sh'
|
|
- 'Dockerfile'
|
|
- 'tests/e2e/platform/**'
|
|
- '.github/workflows/e2e-platform.yml'
|
|
|
|
select-profiles:
|
|
needs: changes
|
|
if: needs.changes.outputs.relevant == 'true' || github.event_name != 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
profiles: ${{ steps.pick.outputs.profiles }}
|
|
steps:
|
|
- id: pick
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
|
echo 'profiles=["baseline","bypasser-external","dns-blocked"]' >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo 'profiles=["baseline","bypasser-external","bypasser-disabled","dns-manual","dns-blocked","dns-doh","proxy-http","proxy-socks","tor","client-transmission","client-deluge"]' >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
e2e:
|
|
needs: select-profiles
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
profile: ${{ fromJSON(needs.select-profiles.outputs.profiles) }}
|
|
name: e2e (${{ matrix.profile }})
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Install uv and Python
|
|
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
with:
|
|
python-version: "3.14"
|
|
enable-cache: true
|
|
- name: Sync dependencies
|
|
run: make install-python-dev
|
|
- name: Run e2e platform (${{ matrix.profile }})
|
|
run: tests/e2e/platform/run-e2e.sh env/${{ matrix.profile }}.env
|
|
- name: Dump shelfmark logs on failure
|
|
if: failure()
|
|
run: cat tests/e2e/platform/.state/shelfmark.${{ matrix.profile }}.log || true
|
|
|
|
# Heavy "everything real" job: real Chrome internal bypasser solving Cloudflare +
|
|
# DoH + real qBittorrent webseed download. Runs on relevant PRs and nightly.
|
|
e2e-full:
|
|
needs: changes
|
|
if: needs.changes.outputs.relevant == 'true' || github.event_name != 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
name: e2e (full — real Chrome + qBittorrent)
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v7
|
|
- name: Install uv and Python
|
|
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
with:
|
|
python-version: "3.14"
|
|
enable-cache: true
|
|
- name: Sync dependencies
|
|
run: make install-python-dev
|
|
- name: Run full pipeline
|
|
run: tests/e2e/platform/run-e2e.sh env/full.env
|
|
- name: Dump logs on failure
|
|
if: failure()
|
|
run: |
|
|
cat tests/e2e/platform/.state/shelfmark.full.log || true
|
|
docker logs e2e-qbittorrent || true
|
|
|
|
# Single aggregated gate. ALWAYS runs (so a required check never hangs "pending"
|
|
# on unrelated PRs) and FAILS if any e2e job failed/was cancelled. Make THIS the
|
|
# required status check in branch protection.
|
|
e2e-required:
|
|
name: e2e required
|
|
needs: [e2e, e2e-full]
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Aggregate e2e results
|
|
run: |
|
|
matrix='${{ needs.e2e.result }}'
|
|
full='${{ needs.e2e-full.result }}'
|
|
echo "e2e matrix=$matrix, e2e-full=$full"
|
|
# success or skipped (unrelated PR) is OK; failure/cancelled blocks.
|
|
for r in "$matrix" "$full"; do
|
|
if [ "$r" = "failure" ] || [ "$r" = "cancelled" ]; then
|
|
echo "::error::An e2e platform job did not pass — blocking."
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "All e2e platform jobs passed (or were skipped as not relevant)."
|