env:
  CODECOV_TOKEN: "2dd7eb9b-0eda-45fe-a47c-9b5ac040045f"

steps:

  - command:
      - "python -m pip install tox"
      - "tox -e check_codestyle"
    label: "\U0001F9F9 Check Style"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"

  - command:
      - "python -m pip install tox"
      - "tox -e packaging"
    label: "\U0001F9F9 packaging"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"

  - command:
      - "python -m pip install tox"
      - "tox -e check_isort"
    label: "\U0001F9F9 isort"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"

  - command:
      - "python -m pip install tox"
      - "scripts-dev/check-newsfragment"
    label: ":newspaper: Newsfile"
    branches: "!master !develop !release-*"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"
          propagate-environment: true

  - command:
      - "python -m pip install tox"
      - "tox -e check-sampleconfig"
    label: "\U0001F9F9 check-sample-config"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"

  - wait


  - command:
      - "python -m pip install tox"
      - "tox -e py35-old,codecov"
    label: ":python: 3.5 / SQLite / Old Deps"
    env:
      TRIAL_FLAGS: "-j 2"
    plugins:
      - docker#v3.0.1:
          image: "python:3.5"
          propagate-environment: true
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - command:
      - "python -m pip install tox"
      - "tox -e py35,codecov"
    label: ":python: 3.5 / SQLite"
    env:
      TRIAL_FLAGS: "-j 2"
    plugins:
      - docker#v3.0.1:
          image: "python:3.5"
          propagate-environment: true
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - command:
      - "python -m pip install tox"
      - "tox -e py36,codecov"
    label: ":python: 3.6 / SQLite"
    env:
      TRIAL_FLAGS: "-j 2"
    plugins:
      - docker#v3.0.1:
          image: "python:3.6"
          propagate-environment: true
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - command:
      - "python -m pip install tox"
      - "tox -e py37,codecov"
    label: ":python: 3.7 / SQLite"
    env:
      TRIAL_FLAGS: "-j 2"
    plugins:
      - docker#v3.0.1:
          image: "python:3.7"
          propagate-environment: true
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - label: ":python: 3.5 / :postgres: 9.5"
    agents:
      queue: "medium"
    env:
      TRIAL_FLAGS: "-j 8"
    command:
      - "bash -c 'python -m pip install tox && python -m tox -e py35-postgres,codecov'"
    plugins:
      - docker-compose#v2.1.0:
          run: testenv
          config:
            - .buildkite/docker-compose.py35.pg95.yaml
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - label: ":python: 3.7 / :postgres: 9.5"
    agents:
      queue: "medium"
    env:
      TRIAL_FLAGS: "-j 8"
    command:
      - "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,codecov'"
    plugins:
      - docker-compose#v2.1.0:
          run: testenv
          config:
            - .buildkite/docker-compose.py37.pg95.yaml
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - label: ":python: 3.7 / :postgres: 11"
    agents:
      queue: "medium"
    env:
      TRIAL_FLAGS: "-j 8"
    command:
      - "bash -c 'python -m pip install tox && python -m tox -e py37-postgres,codecov'"
    plugins:
      - docker-compose#v2.1.0:
          run: testenv
          config:
            - .buildkite/docker-compose.py37.pg11.yaml
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2


  - label: "SyTest - :python: 3.5 / SQLite / Monolith"
    agents:
      queue: "medium"
    command:
      - "bash .buildkite/merge_base_branch.sh"
      - "bash /synapse_sytest.sh"
    plugins:
      - docker#v3.0.1:
          image: "matrixdotorg/sytest-synapse:py35"
          propagate-environment: true
          always-pull: true
          workdir: "/src"
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - label: "SyTest - :python: 3.5 / :postgres: 9.6 / Monolith"
    agents:
      queue: "medium"
    env:
      POSTGRES: "1"
    command:
      - "bash .buildkite/merge_base_branch.sh"
      - "bash /synapse_sytest.sh"
    plugins:
      - docker#v3.0.1:
          image: "matrixdotorg/sytest-synapse:py35"
          propagate-environment: true
          always-pull: true
          workdir: "/src"
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2

  - label: "SyTest - :python: 3.5 / :postgres: 9.6 / Workers"
    agents:
      queue: "medium"
    env:
      POSTGRES: "1"
      WORKERS: "1"
    command:
      - "bash .buildkite/merge_base_branch.sh"
      - "bash /synapse_sytest.sh"
    plugins:
      - docker#v3.0.1:
          image: "matrixdotorg/sytest-synapse:py35"
          propagate-environment: true
          always-pull: true
          workdir: "/src"
    soft_fail: true
    retry:
      automatic:
        - exit_status: -1
          limit: 2
        - exit_status: 2
          limit: 2