Merge pull request #209 from BurnySc2/replace-poetry-with-uv #146
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/** | |
- uv.lock | |
- pyproject.toml | |
- .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.9", "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 \ | |
--entrypoint /bin/bash \ | |
$IMAGE_NAME-v$VERSION_NUMBER-squashed | |
echo "Install python-sc2" | |
docker exec -i test_container mkdir -p /root/python-sc2 | |
docker cp pyproject.toml test_container:/root/python-sc2/ | |
docker cp uv.lock test_container:/root/python-sc2/ | |
docker cp sc2 test_container:/root/python-sc2/sc2 | |
docker cp test test_container:/root/python-sc2/test | |
docker cp examples test_container:/root/python-sc2/examples | |
docker exec -i test_container bash -c "pip install uv \ | |
&& cd python-sc2 && uv sync --frozen --no-cache --no-install-project" | |
echo "Run various test bots" | |
docker exec -i test_container bash -c "cd python-sc2 && uv run python test/travis_test_script.py test/autotest_bot.py" | |
docker exec -i test_container bash -c "cd python-sc2 && uv 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 |