diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed2bd8efccf..ec680f39ca0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,8 +4,9 @@ jobs: test: name: Test runs-on: ubuntu-latest + container: + image: python:3.12-bullseye env: - python-version: '3.12.x' node-version: '20' mailroom-version: '9.3.59' @@ -39,13 +40,8 @@ jobs: - name: Install Linux packages run: | - sudo apt update - sudo apt install -y --no-install-recommends libgdal-dev ffmpeg - - - name: Install Python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.python-version }} + apt-get update + apt-get install -y --no-install-recommends libgdal-dev ffmpeg - name: Install Poetry uses: snok/install-poetry@v1 @@ -57,6 +53,15 @@ jobs: with: node-version: ${{ env.node-version }} + - name: Install Mailroom + run: | + git clone --depth 1 https://github.com/${{ github.repository_owner }}/mailroom + cd mailroom + go install github.com/${{ github.repository_owner }}/mailroom/cmd/mailroom + # start mailroom but use different redis db so that it doesn't actually handle tasks + ./mailroom -db=postgres://temba:temba@postgres:5432/temba?sslmode=disable -redis=redis://redis:6379/15 -log-level=info > mailroom.log & + working-directory: ${{ github.workspace }} + - name: Install and start DynamoDB uses: rrainn/dynamodb-action@v4.0.0 with: @@ -64,17 +69,13 @@ jobs: - name: Initialize environment run: | + npm install -g yarn less poetry install yarn install - sudo yarn global add less - ln -s ${{ github.workspace }}/temba/settings.py.dev ${{ github.workspace }}/temba/settings.py + ln -s settings.py.dev temba/settings.py poetry run python manage.py migrate poetry run python manage.py migrate_dynamo --testing - # fetch, extract and start mailroom - wget https://github.com/${{ github.repository_owner }}/mailroom/releases/download/v${{ env.mailroom-version }}/mailroom_${{ env.mailroom-version }}_linux_amd64.tar.gz - tar -xvf mailroom_${{ env.mailroom-version }}_linux_amd64.tar.gz mailroom - # start mailroom but use different redis db so that it doesn't actually handle tasks - ./mailroom -db=postgres://temba:temba@localhost:5432/temba?sslmode=disable -redis=redis://localhost:6379/15 -log-level=info > mailroom.log & + working-directory: ${{ github.workspace }} # https://github.com/actions/runner/issues/2058#issuecomment-2085119510 - name: Run pre-test checks run: | @@ -83,6 +84,7 @@ jobs: # check we can collect and compress all static files poetry run python manage.py collectstatic --noinput --verbosity=0 poetry run python manage.py compress --extension=".html" --settings=temba.settings_compress + working-directory: ${{ github.workspace }} - name: Run tests run: | @@ -90,6 +92,7 @@ jobs: poetry run coverage report -i poetry run coverage xml poetry run coverage html + working-directory: ${{ github.workspace }} - name: Save coverage report as artifact uses: actions/upload-artifact@v4 diff --git a/temba/archives/tests/test_archivecrudl.py b/temba/archives/tests/test_archivecrudl.py index 722013e2a41..2e71299503e 100644 --- a/temba/archives/tests/test_archivecrudl.py +++ b/temba/archives/tests/test_archivecrudl.py @@ -34,7 +34,7 @@ def test_read(self): archive = self.create_archive(Archive.TYPE_MSG, "D", date(2020, 7, 31), [{"id": 1}, {"id": 2}]) download_url = ( - f"http://localhost:9000/test-archives/{self.org.id}/message_D20200731_{archive.hash}.jsonl.gz?response-con" + f"http://minio:9000/test-archives/{self.org.id}/message_D20200731_{archive.hash}.jsonl.gz?response-con" f"tent-disposition=attachment%3B&response-content-type=application%2Foctet&response-content-encoding=none" ) diff --git a/temba/settings_common.py b/temba/settings_common.py index 57c64e08169..54ef651c7e0 100644 --- a/temba/settings_common.py +++ b/temba/settings_common.py @@ -18,6 +18,11 @@ DATA_UPLOAD_MAX_NUMBER_FIELDS = 2500 # needed for exports of big workspaces +_db_host = "postgres" +_redis_host = "redis" +_minio_host = "minio" +_dynamo_host = "dynamo" + # ----------------------------------------------------------------------------------- # Tests # ----------------------------------------------------------------------------------- @@ -27,17 +32,6 @@ PASSWORD_HASHERS = ("django.contrib.auth.hashers.MD5PasswordHasher",) DEBUG = False -if os.getenv("REMOTE_CONTAINERS") == "true": - _db_host = "postgres" - _redis_host = "redis" - _minio_host = "minio" - _dynamo_host = "dynamo" -else: - _db_host = "localhost" - _redis_host = "localhost" - _minio_host = "localhost" - _dynamo_host = "localhost" - # ----------------------------------------------------------------------------------- # Email # -----------------------------------------------------------------------------------