Skip to content

Python 3.7 Upgrade

Python 3.7 Upgrade #67

Workflow file for this run

# This workflow will install backend's requirements and run tests
name: Run Tests
on:
push:
branches: [master]
pull_request:
branches: [master]
concurrency:
group: ${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
permissions:
contents: read
checks: write
pull-requests: write
jobs:
pytest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Start DB
run: |
docker run --add-host host.docker.internal:host-gateway --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=verysecurepw -e MYSQL_DATABASE=test_olympia -d mysql:8.0 --default-authentication-plugin=mysql_native_password
sleep 15
docker exec mysql mysql -P 3306 -u root -p"verysecurepw" -e "CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'verysecurepw';"
docker exec mysql mysql -P 3306 -u root -p"verysecurepw" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';"
- name: Start ES
run: docker run --add-host host.docker.internal:host-gateway --name es -p 9200:9200 -p 9300:9300 -e ES_NETWORK_HOST=0.0.0.0 -e discovery.type=single-node -d elasticsearch:5.6.12-alpine
- name: Run docker container
run: docker run --add-host host.docker.internal:host-gateway -it -d --name atn -e DATABASES_DEFAULT_URL=mysql://root:[email protected]:3306/test_olympia -e ES_HOSTS=host.docker.internal:9200 -e ELASTICSEARCH_LOCATION=host.docker.internal:9200 -v $GITHUB_WORKSPACE/src:/data/olympia/src:rw thunderbirdops/addons-server bash
- name: Install deps
run: docker exec atn bash -c "make -f Makefile-docker update_deps"
- name: Patch Django
run: docker exec atn bash -c "sed -i 's/TX_ISOLATION = /transaction_isolation = /' /usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py"
- name: Run tests
run: docker exec atn bash -c 'python -m pytest --junitxml=src/test_report.xml -m "not es_tests" src/olympia/'
- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: src/test_report.xml
pytest3:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Start DB
run: |
docker run --add-host host.docker.internal:host-gateway --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=verysecurepw -e MYSQL_DATABASE=test_olympia -d mysql:8.0 --default-authentication-plugin=mysql_native_password
sleep 15
docker exec mysql mysql -P 3306 -u root -p"verysecurepw" -e "CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'verysecurepw';"
docker exec mysql mysql -P 3306 -u root -p"verysecurepw" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';"
- name: Start ES
run: docker run --add-host host.docker.internal:host-gateway --name es -p 9200:9200 -p 9300:9300 -e ES_NETWORK_HOST=0.0.0.0 -e discovery.type=single-node -d elasticsearch:5.6.12-alpine
- name: Run docker container
run: docker run --add-host host.docker.internal:host-gateway -it -d --name atn -e DATABASES_DEFAULT_URL=mysql://root:[email protected]:3306/test_olympia -e ES_HOSTS=host.docker.internal:9200 -e ELASTICSEARCH_LOCATION=host.docker.internal:9200 -v $GITHUB_WORKSPACE/src:/data/olympia/src:rw -v $GITHUB_WORKSPACE/services:/data/olympia/services -v $GITHUB_WORKSPACE/requirements:/data/olympia/requirements -v $GITHUB_WORKSPACE/settings.py:/data/olympia/settings.py -v $GITHUB_WORKSPACE/Makefile-docker:/data/olympia/Makefile-docker thunderbirdops/addons-server bash
- name: Compile Python 3.7...
run: docker exec atn bash -c "mkdir -p /build/python37 && curl https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz >> /build/python37/Python-3.7.17.tgz && cd /build/python37 && tar -xf Python-3.7.17.tgz && cd Python-3.7.17 && ./configure --enable-optimizations && make -j ${nproc} . && make install && ldconfig /usr/local/share/python3.7 && python3 -m ensurepip && python3 -m pip install --upgrade pip"
- name: Create venv
run: docker exec atn bash -c "python3 -m venv --copies /data/olympia/venv3"
- name: Install deps
run: docker exec atn bash -c "source /data/olympia/venv3/bin/activate && make -f Makefile-docker update_deps"
- name: Run tests
run: docker exec atn bash -c 'source /data/olympia/venv3/bin/activate && python -m pytest --junitxml=src/test_report3.xml -m "not es_tests" src/olympia/'
- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: src/test_report3.xml