Make changes resulting in drop of python3.9 in favor of python3.13 (#… #137
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
name: Build and push Docker image | |
# Only run if Dockerfile or docker-ci.yml changed | |
on: | |
push: | |
paths: | |
- dockerfiles/** | |
- .github/workflows/docker-ci.yml | |
pull_request: | |
branches: | |
- master | |
- develop | |
env: | |
VERSION_NUMBER: '1.0.4' | |
LATEST_PYTHON_VERSION: '3.12' | |
LATEST_SC2_VERSION: '4.10' | |
EXPERIMENTAL_PYTHON_VERSION: '3.13' | |
jobs: | |
run_test_docker_image: | |
name: Run test_docker_image.sh | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Enable experimental docker features | |
run: | | |
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json | |
sudo systemctl restart docker.service | |
- name: Run shell script | |
env: | |
VERSION_NUMBER: ${{ env.VERSION_NUMBER }} | |
PYTHON_VERSION: ${{ env.LATEST_PYTHON_VERSION }} | |
SC2_VERSION: ${{ env.LATEST_SC2_VERSION }} | |
run: sh dockerfiles/test_docker_image.sh | |
run_test_new_python_version: | |
name: Run test_new_python_candidate.sh | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Enable experimental docker features | |
run: | | |
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json | |
sudo systemctl restart docker.service | |
- name: Run shell script | |
continue-on-error: true | |
env: | |
VERSION_NUMBER: ${{ env.VERSION_NUMBER }} | |
PYTHON_VERSION: ${{ env.EXPERIMENTAL_PYTHON_VERSION }} | |
SC2_VERSION: ${{ env.LATEST_SC2_VERSION }} | |
run: sh dockerfiles/test_new_python_candidate.sh | |
docker_build: | |
name: Build docker image | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.10', '3.11', '3.12', '3.13'] | |
sc2-version: ['4.10'] | |
env: | |
IMAGE_NAME: burnysc2/python-sc2-docker:py_${{ matrix.python-version }}-sc2_${{ matrix.sc2-version }} | |
BUILD_ARGS: --build-arg PYTHON_VERSION=${{ matrix.python-version }} --build-arg SC2_VERSION=${{ matrix.sc2-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build docker image | |
run: docker build -t $IMAGE_NAME-v$VERSION_NUMBER $BUILD_ARGS - < dockerfiles/Dockerfile | |
- name: Enable experimental docker features | |
run: | | |
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json | |
sudo systemctl restart docker.service | |
- name: Build squashed image | |
run: docker build -t $IMAGE_NAME-v$VERSION_NUMBER-squashed --squash $BUILD_ARGS - < dockerfiles/Dockerfile | |
- name: Run test bots on squashed image | |
if: matrix.python-version != '3.7' | |
run: | | |
echo "Start container, override the default entrypoint" | |
docker run -i -d \ | |
--name test_container \ | |
--mount type=bind,source="$(pwd)",destination=/root/python-sc2,readonly \ | |
--entrypoint /bin/bash \ | |
$IMAGE_NAME-v$VERSION_NUMBER-squashed | |
echo "Install python-sc2" | |
docker exec -i test_container bash -c "pip install poetry \ | |
&& cd python-sc2 && poetry install --no-dev" | |
echo "Run various test bots" | |
docker exec -i test_container bash -c "cd python-sc2 && poetry run python test/travis_test_script.py test/autotest_bot.py" | |
docker exec -i test_container bash -c "cd python-sc2 && poetry run python test/run_example_bots_vs_computer.py" | |
- name: Login to DockerHub | |
if: github.ref == 'refs/heads/develop' | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Upload docker image | |
if: github.ref == 'refs/heads/develop' && github.event_name == 'push' | |
run: docker push $IMAGE_NAME-v$VERSION_NUMBER | |
- name: Upload squashed docker image | |
if: github.ref == 'refs/heads/develop' && github.event_name == 'push' | |
run: docker push $IMAGE_NAME-v$VERSION_NUMBER-squashed | |
- name: Upload squashed docker image as latest tag | |
if: github.ref == 'refs/heads/develop' && github.event_name == 'push' && matrix.python-version == env.LATEST_PYTHON_VERSION && matrix.sc2-version == env.LATEST_SC2_VERSION | |
run: | | |
docker tag $IMAGE_NAME-v$VERSION_NUMBER-squashed burnysc2/python-sc2-docker:latest | |
docker push burnysc2/python-sc2-docker:latest |