mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
4f6de33f41
Since github always scrolls to the bottom of any test output, let's put the failed tests last and hide any successful packages.
163 lines
5.0 KiB
YAML
163 lines
5.0 KiB
YAML
name: Twisted Trunk
|
|
|
|
on:
|
|
schedule:
|
|
- cron: 0 8 * * *
|
|
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
mypy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: matrix-org/setup-python-poetry@v1
|
|
with:
|
|
python-version: "3.x"
|
|
extras: "all"
|
|
- run: |
|
|
poetry remove twisted
|
|
poetry add --extras tls git+https://github.com/twisted/twisted.git#trunk
|
|
poetry install --no-interaction --extras "all test"
|
|
- name: Remove warn_unused_ignores from mypy config
|
|
run: sed '/warn_unused_ignores = True/d' -i mypy.ini
|
|
- run: poetry run mypy
|
|
|
|
trial:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- run: sudo apt-get -qq install xmlsec1
|
|
- uses: matrix-org/setup-python-poetry@v1
|
|
with:
|
|
python-version: "3.x"
|
|
extras: "all test"
|
|
- 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:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: matrixdotorg/sytest-synapse:buster
|
|
volumes:
|
|
- ${{ github.workspace }}:/src
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- 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@v2
|
|
if: ${{ always() }}
|
|
with:
|
|
name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }})
|
|
path: |
|
|
/logs/results.tap
|
|
/logs/**/*.log*
|
|
|
|
complement:
|
|
if: "${{ !failure() && !cancelled() }}"
|
|
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@v2 for synapse
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: synapse
|
|
|
|
- name: Prepare Complement's Prerequisites
|
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
|
|
|
# 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==1.1.14
|
|
|
|
poetry remove -n twisted
|
|
poetry add -n --extras tls git+https://github.com/twisted/twisted.git#trunk
|
|
poetry lock --no-update
|
|
# NOT IN 1.1.14 poetry lock --check
|
|
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:
|
|
- mypy
|
|
- trial
|
|
- sytest
|
|
- complement
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: JasonEtco/create-an-issue@5d9504915f79f9cc6d791934b8ef34f2353dd74d # v2.5.0, 2020-12-06
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
update_existing: true
|
|
filename: .ci/twisted_trunk_build_failed_issue_template.md
|