Skip to content
Snippets Groups Projects
twisted_trunk.yml 3.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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"
          - 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
    
              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
    
            # 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*
    
      # open an issue if the build fails, so we know about it.
      open-issue:
        if: failure()
        needs:
          - mypy
          - trial
          - sytest
    
        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:
    
              filename: .ci/twisted_trunk_build_failed_issue_template.md