diff --git a/.github/workflows/docker-publish-511-autograder-python.yml b/.github/workflows/docker-publish-511-autograder-python.yml new file mode 100644 index 0000000..893f670 --- /dev/null +++ b/.github/workflows/docker-publish-511-autograder-python.yml @@ -0,0 +1,44 @@ +# Publishes docker image, pinning actions to a commit SHA, +# and updating most recently built image with the latest tag. +# Can be triggered by either pushing a commit that changes the `Dockerfile`, +# or manually dispatching the workflow. + +name: Publish Docker image (511 Python Autograder) + +on: + workflow_dispatch: + push: + paths: + - '511/autograder-python/Dockerfile' + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ubcmds/511-autograder-python + tags: | + type=raw, value={{sha}},enable=${{github.ref_type != 'tag' }} + type=raw, value=latest + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: ./511/autograder-python + file: 511/autograder-python/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/docker-publish-511-python.yml b/.github/workflows/docker-publish-511-python.yml new file mode 100644 index 0000000..231303f --- /dev/null +++ b/.github/workflows/docker-publish-511-python.yml @@ -0,0 +1,44 @@ +# Publishes docker image, pinning actions to a commit SHA, +# and updating most recently built image with the latest tag. +# Can be triggered by either pushing a commit that changes the `Dockerfile`, +# or manually dispatching the workflow. + +name: Publish Docker image (511 Python) + +on: + workflow_dispatch: + push: + paths: + - '511/python/Dockerfile' + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ubcmds/511-python + tags: | + type=raw, value={{sha}},enable=${{github.ref_type != 'tag' }} + type=raw, value=latest + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: ./511/python + file: 511/python/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/docker-publish-512-python copy.yml b/.github/workflows/docker-publish-571-python.yml similarity index 100% rename from .github/workflows/docker-publish-512-python copy.yml rename to .github/workflows/docker-publish-571-python.yml diff --git a/511/autograder-python/Dockerfile b/511/autograder-python/Dockerfile new file mode 100644 index 0000000..9640e76 --- /dev/null +++ b/511/autograder-python/Dockerfile @@ -0,0 +1,12 @@ +# Use the prairielearn r autograder +FROM prairielearn/grader-python:latest + +# Define additional packages not included in Python that are required for all courses +# eg. +ENV PYTHON_PACKAGES="scipy numpy pandas matplotlib" + +# Install the pre-defined Python packages +# eg. +RUN pip install --no-cache-dir $PYTHON_PACKAGES + +# End course image \ No newline at end of file diff --git a/511/python/Dockerfile b/511/python/Dockerfile new file mode 100644 index 0000000..b11ea9d --- /dev/null +++ b/511/python/Dockerfile @@ -0,0 +1,15 @@ +# Use the base image provided by MDS +FROM ubcmds/base-python:dd7ebe7 + +# Define additional packages that are specific to this course +ENV PYTHON_PACKAGES="nycflight13" + +# Install the pre-defined Python packages +RUN pip install --no-cache-dir $PYTHON_PACKAGES + +# Fix permisions (needed until https://github.com/PrairieLearn/PrairieLearn/pull/9831 is merged) +USER root +RUN chown -R 1001:1001 /tmp/jupyter_config +USER 1001 + +# End course image \ No newline at end of file