The process to modify and push an image to the Google Artifact Registry via the CI/CD pipeline is located in the contribution guide
This template repository uses the
jupyterhub/repo2docker-action
to build a Docker image using the contents of this repo, and pushes it to our
Google Artifact Registry when
a pull request is merged to main.
The repo provides a default environment.yml conda configuration file for
repo2docker to use to define and build a single-user server image. This file
is used to define the python packages that will be installed during the image
build process, either via conda or pip.
Note:
A complete list of configuration files that can be added to the
repository and used by repo2docker to build the Docker image can be found in
the repo2docker documentation.
Once you've created the new image repo from this template, please refer to the contribution instructions located in the repo for detailed instructions.
This template repository provides GitHub Action workflows that can build
and push the image to Google Artifact Repository when configured, and push a
commit to the Cal-ICOR Jupyterhub repo
repository that modifies hubploy.yaml for any hubs using this image with the
new SHA tag.
1. Build and test container image ➡️ test.yaml
This workflow is triggered when a pull request is opened against the default
branch (main). During PR builds, the image is only built and not
pushed to the Google Artifact Registry.
Please note that the image will not be built for documentation changes
(markdown files or any graphic images in the images/ subdirectory).
2. YAML linting ➡️ yaml-lint.yaml
This workflow is triggered when a pull request is opened against the default
branch (main). It uses yamllint
to check all yaml files in the repo for correctness.
3. Temporarily disabled: Test this PR on Binder Badge ➡️ binder.yaml
Since our images are typically large and take > 10m to build, this means that Binderhub builds will currently time out.
4. Build, test and push container image ➡️ build-push-open-pr.yaml
After a PR is merged to main, this workflow builds the image again, pushes it
to the Google Artifact Registry and then creates a commit that updates the image tag
for any hubs that use this image. That commit is then pushed to the
Cal-ICOR Jupyterhub repo, and you will
then need to manually create a pull requests to merge and deploy the new image.