Enable Complement CI tests in the 'latest deps' test run. (#13213)
Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
This commit is contained in:
parent
b817574be7
commit
05aeeb3a80
|
@ -135,11 +135,42 @@ jobs:
|
||||||
/logs/**/*.log*
|
/logs/**/*.log*
|
||||||
|
|
||||||
|
|
||||||
# TODO: run complement (as with twisted trunk, see #12473).
|
complement:
|
||||||
|
if: "${{ !failure() && !cancelled() }}"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
# open an issue if the build fails, so we know about it.
|
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
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
set -o pipefail
|
||||||
|
TEST_ONLY_IGNORE_POETRY_LOCKFILE=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt
|
||||||
|
shell: bash
|
||||||
|
name: Run Complement Tests
|
||||||
|
|
||||||
|
# Open an issue if the build fails, so we know about it.
|
||||||
|
# Only do this if we're not experimenting with this action in a PR.
|
||||||
open-issue:
|
open-issue:
|
||||||
if: failure()
|
if: "failure() && github.event_name != 'push' && github.event_name != 'pull_request'"
|
||||||
needs:
|
needs:
|
||||||
# TODO: should mypy be included here? It feels more brittle than the other two.
|
# TODO: should mypy be included here? It feels more brittle than the other two.
|
||||||
- mypy
|
- mypy
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Enable Complement CI tests in the 'latest deps' test run.
|
|
@ -68,7 +68,18 @@ COPY pyproject.toml poetry.lock /synapse/
|
||||||
# reason, such as when a git repository is used directly as a dependency.
|
# reason, such as when a git repository is used directly as a dependency.
|
||||||
ARG TEST_ONLY_SKIP_DEP_HASH_VERIFICATION
|
ARG TEST_ONLY_SKIP_DEP_HASH_VERIFICATION
|
||||||
|
|
||||||
RUN /root/.local/bin/poetry export --extras all -o /synapse/requirements.txt ${TEST_ONLY_SKIP_DEP_HASH_VERIFICATION:+--without-hashes}
|
# If specified, we won't use the Poetry lockfile.
|
||||||
|
# Instead, we'll just install what a regular `pip install` would from PyPI.
|
||||||
|
ARG TEST_ONLY_IGNORE_POETRY_LOCKFILE
|
||||||
|
|
||||||
|
# Export the dependencies, but only if we're actually going to use the Poetry lockfile.
|
||||||
|
# Otherwise, just create an empty requirements file so that the Dockerfile can
|
||||||
|
# proceed.
|
||||||
|
RUN if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \
|
||||||
|
/root/.local/bin/poetry export --extras all -o /synapse/requirements.txt ${TEST_ONLY_SKIP_DEP_HASH_VERIFICATION:+--without-hashes}; \
|
||||||
|
else \
|
||||||
|
touch /synapse/requirements.txt; \
|
||||||
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
### Stage 1: builder
|
### Stage 1: builder
|
||||||
|
@ -108,8 +119,17 @@ COPY synapse /synapse/synapse/
|
||||||
# ... and what we need to `pip install`.
|
# ... and what we need to `pip install`.
|
||||||
COPY pyproject.toml README.rst /synapse/
|
COPY pyproject.toml README.rst /synapse/
|
||||||
|
|
||||||
|
# Repeat of earlier build argument declaration, as this is a new build stage.
|
||||||
|
ARG TEST_ONLY_IGNORE_POETRY_LOCKFILE
|
||||||
|
|
||||||
# Install the synapse package itself.
|
# Install the synapse package itself.
|
||||||
RUN pip install --prefix="/install" --no-deps --no-warn-script-location /synapse
|
# If we have populated requirements.txt, we don't install any dependencies
|
||||||
|
# as we should already have those from the previous `pip install` step.
|
||||||
|
RUN if [ -z "$TEST_ONLY_IGNORE_POETRY_LOCKFILE" ]; then \
|
||||||
|
pip install --prefix="/install" --no-deps --no-warn-script-location /synapse[all]; \
|
||||||
|
else \
|
||||||
|
pip install --prefix="/install" --no-warn-script-location /synapse[all]; \
|
||||||
|
fi
|
||||||
|
|
||||||
###
|
###
|
||||||
### Stage 2: runtime
|
### Stage 2: runtime
|
||||||
|
|
|
@ -101,6 +101,7 @@ if [ -z "$skip_docker_build" ]; then
|
||||||
echo_if_github "::group::Build Docker image: matrixdotorg/synapse"
|
echo_if_github "::group::Build Docker image: matrixdotorg/synapse"
|
||||||
docker build -t matrixdotorg/synapse \
|
docker build -t matrixdotorg/synapse \
|
||||||
--build-arg TEST_ONLY_SKIP_DEP_HASH_VERIFICATION \
|
--build-arg TEST_ONLY_SKIP_DEP_HASH_VERIFICATION \
|
||||||
|
--build-arg TEST_ONLY_IGNORE_POETRY_LOCKFILE \
|
||||||
-f "docker/Dockerfile" .
|
-f "docker/Dockerfile" .
|
||||||
echo_if_github "::endgroup::"
|
echo_if_github "::endgroup::"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue