Python 3.7 Upgrade #61
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will install backend's requirements and run tests | |
name: Run Tests | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [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 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 /code/venv3" | |
- name: Patch makefile-docker | |
run: docker exec atn bash -c "sed -i 's/import sys; print sys.version_info.major/import sys; print(sys.version_info.major)/' /code/Makefile-docker" | |
- name: Install deps | |
run: docker exec atn bash -c "source /code/venv3/bin/activate && make -f Makefile-docker update_deps" | |
- name: Run tests | |
run: docker exec atn bash -c 'source /code/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 |