CI: Add test suites from zulip server.
Part of
ADD
.github/workflows/zulip-ci.yml
+# This file is largely copied from the Zulip server's continuous
+# integration. The intent is to run the Zulip server's API
+# documentation test suite using the current version of this project,
+# to verify that the API client is generally compatible with the old
+# server release.
+name: Zulip server CI
+
+on: [push, pull_request]
+
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ tests:
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ # Base images are built using `tools/ci/Dockerfile.prod.template`.
+ # The comments at the top explain how to build and upload these images.
+ # Bionic ships with Python 3.6.
+ - docker_image: zulip/ci:bionic
+ name: Ubuntu 18.04 Bionic (Python 3.6, backend)
+ os: bionic
+ is_bionic: true
+ include_frontend_tests: false
+ # Configure this test to run with the Zulip 3.2 release.
+ legacy_client_interface: 3
+ server_version: refs/tags/3.2
+ # Focal ships with Python 3.8.2.
+ - docker_image: zulip/ci:focal
+ name: Ubuntu 20.04 Focal (Python 3.8, backend)
+ os: focal
+ is_focal: true
+ include_frontend_tests: false
+ legacy_client_interface: 4
+ server_version: refs/tags/4.0
+ # Bullseye ships with Python 3.9.2.
+ - docker_image: zulip/ci:bullseye
+ name: Debian 11 Bullseye (Python 3.9, backend)
+ os: bullseye
+ is_bullseye: true
+ include_frontend_tests: false
+ legacy_client_interface: 4
+ server_version: refs/tags/4.0
+
+ runs-on: ubuntu-latest
+ name: ${{ matrix.name }} (Zulip ${{matrix.server_version}})
+ container: ${{ matrix.docker_image }}
+ env:
+ # GitHub Actions sets HOME to /github/home which causes
+ # problem later in provison and frontend test that runs
+ # tools/setup/postgresql-init-dev-db because of the .pgpass
+ # location. PostgreSQL (psql) expects .pgpass to be at
+ # /home/github/.pgpass and setting home to `/home/github/`
+ # ensures it written there because we write it to ~/.pgpass.
+ HOME: /home/github/
+
+ steps:
+ - name: Add required permissions
+ run: |
+ # The checkout actions doesn't clone to ~/zulip or allow
+ # us to use the path option to clone outside the current
+ # /__w/zulip/zulip directory. Since this directory is owned
+ # by root we need to change it's ownership to allow the
+ # github user to clone the code here.
+ # Note: /__w/ is a docker volume mounted to $GITHUB_WORKSPACE
+ # which is /home/runner/work/.
+ sudo chown -R github .
+
+ # This is the GitHub Actions specific cache directory the
+ # the current github user must be able to access for the
+ # cache action to work. It is owned by root currently.
+ sudo chmod -R 0777 /__w/_temp/
+
+ - name: 'Checkout python-zulip-api'
+ uses: actions/checkout@v2
+ with:
+ path: api
+
+ - name: 'Checkout Zulip server ${{ matrix.server_version }}'
+ uses: actions/checkout@v2
+ with:
+ repository: zulip/zulip
+ ref: ${{ matrix.server_version }}
+ path: server
+
+ - name: Do Bionic hack
+ if: ${{ matrix.is_bionic }}
+ run: |
+ # Temporary hack till `sudo service redis-server start` gets fixes in Bionic. See
+ # https://chat.zulip.org/#narrow/stream/3-backend/topic/Ubuntu.20bionic.20CircleCI
+ sudo sed -i '/^bind/s/bind.*/bind 0.0.0.0/' /etc/redis/redis.conf
+
+ - name: Install dependencies
+ run: |
+ cd server
+ # This is the main setup job for the test suite
+ ./tools/ci/setup-backend --skip-dev-db-build
+
+ # Cleaning caches is mostly unnecessary in GitHub Actions, because
+ # most builds don't get to write to the cache.
+ # scripts/lib/clean_unused_caches.py --verbose --threshold 0
+
+ - name: Replace dependency with the latest python-zulip-api
+ run: |
+ cd server
+ source tools/ci/activate-venv
+ pip install ../api/zulip
+ pip install ../api/zulip_bots
+
+ - name: Run documentation and api tests
+ run: |
+ cd server
+ source tools/ci/activate-venv
+ ./tools/test-api
+ env:
+ LEGACY_CLIENT_INTERFACE_FROM_SERVER_DOCS_VERSION: ${{ matrix.legacy_client_interface }}
+
+ - name: Run backend tests
+ run: |
+ cd server
+ source tools/ci/activate-venv
+ ./tools/test-backend zerver.tests.test_bots zerver.tests.test_embedded_bot_system
+ env:
+ LEGACY_CLIENT_INTERFACE_FROM_SERVER_DOCS_VERSION: ${{ matrix.legacy_client_interface }}

CI: Add test suites from zulip server.

Part of #683.