Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.8.1 to 2.8.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/swatinem/rust-cache/releases">Swatinem/rust-cache's releases</a>.</em></p> <blockquote> <h2>v2.8.2</h2> <h2>What's Changed</h2> <ul> <li>ci: address lint findings, add zizmor workflow by <a href="https://github.com/woodruffw"><code>@woodruffw</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li> <li>feat: Implement ability to disable adding job ID + rust environment hashes to cache names by <a href="https://github.com/Ryan-Brice"><code>@Ryan-Brice</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li> <li>Don't overwrite env for cargo-metadata call by <a href="https://github.com/MaeIsBad"><code>@MaeIsBad</code></a> in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/woodruffw"><code>@woodruffw</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/262">Swatinem/rust-cache#262</a></li> <li><a href="https://github.com/Ryan-Brice"><code>@Ryan-Brice</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/279">Swatinem/rust-cache#279</a></li> <li><a href="https://github.com/MaeIsBad"><code>@MaeIsBad</code></a> made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/285">Swatinem/rust-cache#285</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2">https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>2.8.2</h2> <ul> <li>Don't overwrite env for cargo-metadata call</li> </ul> <h2>2.8.1</h2> <ul> <li>Set empty <code>CARGO_ENCODED_RUSTFLAGS</code> when retrieving metadata</li> <li>Various dependency updates</li> </ul> <h2>2.8.0</h2> <ul> <li>Add support for <code>warpbuild</code> cache provider</li> <li>Add new <code>cache-workspace-crates</code> feature</li> </ul> <h2>2.7.8</h2> <ul> <li>Include CPU arch in the cache key</li> </ul> <h2>2.7.7</h2> <ul> <li>Also cache <code>cargo install</code> metadata</li> </ul> <h2>2.7.6</h2> <ul> <li>Allow opting out of caching $CARGO_HOME/bin</li> <li>Add runner OS in cache key</li> <li>Adds an option to do lookup-only of the cache</li> </ul> <h2>2.7.5</h2> <ul> <li>Support Cargo.lock format cargo-lock v4</li> <li>Only run macOsWorkaround() on macOS</li> </ul> <h2>2.7.3</h2> <ul> <li>Work around upstream problem that causes cache saving to hang for minutes.</li> </ul> <h2>2.7.2</h2> <ul> <li>Only key by <code>Cargo.toml</code> and <code>Cargo.lock</code> files of workspace members.</li> </ul> <h2>2.7.1</h2> <ul> <li>Update toml parser to fix parsing errors.</li> </ul> <h2>2.7.0</h2> <ul> <li>Properly cache <code>trybuild</code> tests.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="779680da71"><code>779680d</code></a> 2.8.2</li> <li><a href="2ea64efb25"><code>2ea64ef</code></a> Bump smol-toml from 1.4.2 to 1.5.2 in the prd-minor group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/287">#287</a>)</li> <li><a href="8930d9c33e"><code>8930d9c</code></a> Bump the actions group with 3 updates (<a href="https://redirect.github.com/swatinem/rust-cache/issues/288">#288</a>)</li> <li><a href="c071727fc9"><code>c071727</code></a> Bump <code>@actions/io</code> from 1.1.3 to 2.0.0 in the prd-major group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/281">#281</a>)</li> <li><a href="f2a41b7c11"><code>f2a41b7</code></a> Bump <code>@types/node</code> from 24.9.0 to 24.10.0 in the dev-minor group (<a href="https://redirect.github.com/swatinem/rust-cache/issues/282">#282</a>)</li> <li><a href="e306f83d21"><code>e306f83</code></a> Don't overwrite env for cargo-metadata call (<a href="https://redirect.github.com/swatinem/rust-cache/issues/285">#285</a>)</li> <li><a href="c9119007a1"><code>c911900</code></a> Merge pull request <a href="https://redirect.github.com/swatinem/rust-cache/issues/284">#284</a> from Swatinem/dependabot/github_actions/actions-baeb0...</li> <li><a href="3aaed5547e"><code>3aaed55</code></a> Bump the actions group with 2 updates</li> <li><a href="972b315a82"><code>972b315</code></a> Merge pull request <a href="https://redirect.github.com/swatinem/rust-cache/issues/283">#283</a> from Swatinem/dependabot/github_actions/actions-b360d...</li> <li><a href="07caf06f7a"><code>07caf06</code></a> Bump taiki-e/install-action from 2.62.45 to 2.62.49 in the actions group</li> <li>Additional commits viewable in <a href="f13886b937...779680da71">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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 merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
227 lines
8.2 KiB
YAML
227 lines
8.2 KiB
YAML
name: Twisted Trunk
|
|
|
|
on:
|
|
schedule:
|
|
- cron: 0 8 * * *
|
|
|
|
workflow_dispatch:
|
|
# NB: inputs are only present when this workflow is dispatched manually.
|
|
# (The default below is the default field value in the form to trigger
|
|
# a manual dispatch). Otherwise the inputs will evaluate to null.
|
|
inputs:
|
|
twisted_ref:
|
|
description: Commit, branch or tag to checkout from upstream Twisted.
|
|
required: false
|
|
default: 'trunk'
|
|
type: string
|
|
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
RUST_VERSION: 1.87.0
|
|
|
|
jobs:
|
|
check_repo:
|
|
# Prevent this workflow from running on any fork of Synapse other than element-hq/synapse, as it is
|
|
# only useful to the Synapse core team.
|
|
# All other workflow steps depend on this one, thus if 'should_run_workflow' is not 'true', the rest
|
|
# of the workflow will be skipped as well.
|
|
if: github.repository == 'element-hq/synapse'
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_run_workflow: ${{ steps.check_condition.outputs.should_run_workflow }}
|
|
steps:
|
|
- id: check_condition
|
|
run: echo "should_run_workflow=${{ github.repository == 'element-hq/synapse' }}" >> "$GITHUB_OUTPUT"
|
|
|
|
mypy:
|
|
needs: check_repo
|
|
if: needs.check_repo.outputs.should_run_workflow == 'true'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
|
|
with:
|
|
toolchain: ${{ env.RUST_VERSION }}
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
|
|
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
|
|
with:
|
|
python-version: "3.x"
|
|
extras: "all"
|
|
poetry-version: "2.1.1"
|
|
- run: |
|
|
poetry remove twisted
|
|
poetry add --extras tls git+https://github.com/twisted/twisted.git#${{ inputs.twisted_ref || 'trunk' }}
|
|
poetry install --no-interaction --extras "all test"
|
|
- name: Remove unhelpful options from mypy config
|
|
run: sed -e '/warn_unused_ignores = True/d' -e '/warn_redundant_casts = True/d' -i mypy.ini
|
|
- run: poetry run mypy
|
|
|
|
trial:
|
|
needs: check_repo
|
|
if: needs.check_repo.outputs.should_run_workflow == 'true'
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
- run: sudo apt-get -qq install xmlsec1
|
|
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
|
|
with:
|
|
toolchain: ${{ env.RUST_VERSION }}
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
|
|
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
|
|
with:
|
|
python-version: "3.x"
|
|
extras: "all test"
|
|
poetry-version: "2.1.1"
|
|
- run: |
|
|
poetry remove twisted
|
|
poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk
|
|
poetry install --no-interaction --extras "all test"
|
|
- run: poetry run trial --jobs 2 tests
|
|
|
|
- name: Dump logs
|
|
# Logs are most useful when the command fails, always include them.
|
|
if: ${{ always() }}
|
|
# Note: Dumps to workflow logs instead of using actions/upload-artifact
|
|
# This keeps logs colocated with failing jobs
|
|
# It also ignores find's exit code; this is a best effort affair
|
|
run: >-
|
|
find _trial_temp -name '*.log'
|
|
-exec echo "::group::{}" \;
|
|
-exec cat {} \;
|
|
-exec echo "::endgroup::" \;
|
|
|| true
|
|
|
|
sytest:
|
|
needs: check_repo
|
|
if: needs.check_repo.outputs.should_run_workflow == 'true'
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
# We're using bookworm because that's what Debian oldstable is at the time of writing.
|
|
# This job is a canary to warn us about unreleased twisted changes that would cause problems for us if
|
|
# they were to be released immediately. For simplicity's sake (and to save CI runners) we use the oldest
|
|
# version, assuming that any incompatibilities on newer versions would also be present on the oldest.
|
|
image: matrixdotorg/sytest-synapse:bookworm
|
|
volumes:
|
|
- ${{ github.workspace }}:/src
|
|
|
|
steps:
|
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
|
|
with:
|
|
toolchain: ${{ env.RUST_VERSION }}
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
|
|
- name: Patch dependencies
|
|
# Note: The poetry commands want to create a virtualenv in /src/.venv/,
|
|
# but the sytest-synapse container expects it to be in /venv/.
|
|
# We symlink it before running poetry so that poetry actually
|
|
# ends up installing to `/venv`.
|
|
run: |
|
|
ln -s -T /venv /src/.venv
|
|
poetry remove twisted
|
|
poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk
|
|
poetry install --no-interaction --extras "all test"
|
|
working-directory: /src
|
|
- name: Run SyTest
|
|
run: /bootstrap.sh synapse
|
|
working-directory: /src
|
|
env:
|
|
# Use offline mode to avoid reinstalling the pinned version of
|
|
# twisted.
|
|
OFFLINE: 1
|
|
- name: Summarise results.tap
|
|
if: ${{ always() }}
|
|
run: /sytest/scripts/tap_to_gha.pl /logs/results.tap
|
|
- name: Upload SyTest logs
|
|
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
|
if: ${{ always() }}
|
|
with:
|
|
name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }})
|
|
path: |
|
|
/logs/results.tap
|
|
/logs/**/*.log*
|
|
|
|
complement:
|
|
needs: check_repo
|
|
if: "!failure() && !cancelled() && needs.check_repo.outputs.should_run_workflow == 'true'"
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arrangement: monolith
|
|
database: SQLite
|
|
|
|
- arrangement: monolith
|
|
database: Postgres
|
|
|
|
- arrangement: workers
|
|
database: Postgres
|
|
|
|
steps:
|
|
- name: Run actions/checkout@v4 for synapse
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
with:
|
|
path: synapse
|
|
|
|
- name: Prepare Complement's Prerequisites
|
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
|
|
|
- uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
|
|
with:
|
|
cache-dependency-path: complement/go.sum
|
|
go-version-file: complement/go.mod
|
|
|
|
# This step is specific to the 'Twisted trunk' test run:
|
|
- name: Patch dependencies
|
|
run: |
|
|
set -x
|
|
DEBIAN_FRONTEND=noninteractive sudo apt-get install -yqq python3 pipx
|
|
pipx install poetry==2.1.1
|
|
|
|
poetry remove -n twisted
|
|
poetry add -n --extras tls git+https://github.com/twisted/twisted.git#trunk
|
|
poetry lock
|
|
working-directory: synapse
|
|
|
|
- run: |
|
|
set -o pipefail
|
|
TEST_ONLY_SKIP_DEP_HASH_VERIFICATION=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt
|
|
shell: bash
|
|
name: Run Complement Tests
|
|
|
|
# open an issue if the build fails, so we know about it.
|
|
open-issue:
|
|
if: failure() && needs.check_repo.outputs.should_run_workflow == 'true'
|
|
needs:
|
|
- mypy
|
|
- trial
|
|
- sytest
|
|
- complement
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
- uses: JasonEtco/create-an-issue@1b14a70e4d8dc185e5cc76d3bec9eab20257b2c5 # v2.9.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
update_existing: true
|
|
filename: .ci/twisted_trunk_build_failed_issue_template.md
|