From a231dd134be34d17084722f8408ad377f3ef866f Mon Sep 17 00:00:00 2001 From: magpowell Date: Mon, 6 May 2024 17:12:38 -0400 Subject: [PATCH] initial commit --- .github/workflows/build.yaml | 9 ++---- .github/workflows/test.yaml | 40 +++++++++++++++++++++++ README.md | 62 +++++------------------------------- 3 files changed, 50 insertions(+), 61 deletions(-) create mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5f365ca..806607c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,9 +4,6 @@ on: push: branches: - main - pull_request: - branches: - - main jobs: build-and-push: @@ -26,11 +23,9 @@ jobs: - name: Checkout files in repo uses: actions/checkout@main - - name: Build the image and push to quay.io if not a pull request + - name: Build and push the image to quay.io uses: jupyterhub/repo2docker-action@master with: - # Don't push the image during a PR build - NO_PUSH: "${{ github.event_name == 'pull_request' }}" # Make sure username & password/token pair matches your registry credentials DOCKER_USERNAME: ${{ secrets.QUAY_USERNAME }} DOCKER_PASSWORD: ${{ secrets.QUAY_PASSWORD }} @@ -44,7 +39,7 @@ jobs: REPO_DIR: /srv/repo # # Uncomment and modify the following line with your image name, otherwise no push will happen - # IMAGE_NAME: "/" + IMAGE_NAME: "leap-stc/pangeo-notebook-microdino" # Lets us monitor disks getting full as images get bigger over time - name: Show how much disk space is left diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..31fb0f8 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,40 @@ +name: Test container image build + +on: + pull_request: + +jobs: + test-build: + runs-on: ubuntu-latest + steps: + + # For biggish images, github actions runs out of disk space. + # So we cleanup some unwanted things in the disk image, and reclaim that space for our docker use + # https://github.com/actions/virtual-environments/issues/2606#issuecomment-772683150 + # and https://github.com/easimon/maximize-build-space/blob/b4d02c14493a9653fe7af06cc89ca5298071c66e/action.yml#L104 + # This gives us a total of about 52G of free space, which should be enough for now + - name: cleanup disk space + run: | + sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc + df -h + + - name: checkout files in repo + uses: actions/checkout@main + + - name: Build the image and push it if `NO_PUSH` disabled + uses: jupyterhub/repo2docker-action@master + with: + NO_PUSH: "true" + DOCKER_REGISTRY: "quay.io" + # Put repo contents in /srv/repo, rather than the default (/home/jovyan). The home directory + # is mounted over by persistent storage when we are using the built image in a JupyterHub, and + # so all contents put in /home/jovyan are lost. This particularly prevents any 'start' script from + # working, as it is needed in runtime. + REPO_DIR: /srv/repo + + # Uncomment and modify the following line with your image name. + # IMAGE_NAME: "/" + + # Lets us monitor disks getting full as images get bigger over time + - name: Show how much disk space is left + run: df -h diff --git a/README.md b/README.md index f34c333..5878a5a 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,8 @@ -# hub-user-image-template :paperclip: - -This is a template repository for creating dedicated user images for 2i2c hubs. - -## Overall workflow :gear: - -The overall workflow is to: - -1. Fork this repository to create your image repository - -2. Hook your image repository to quay.io - -3. Customize the image by editing repo2docker files in your image repository. - - Changes can either be done by direct commits to main on your image repository, or through a pull request from a fork of your image repository. Direct commits will build the image and push it to Quay.io. PRs will build the image and offer a link to test it using Binder. Merging the PR will cause a commit on main and therefore trigger a build and push to Quay.io. - -4. Configure your Hub to use this new image - -### In-depth guide - -Checkout the 2i2c docs for an in-depth guide on how to use this template repository to create a custom user image and use it for your hub :arrow_right: https://docs.2i2c.org/en/latest/admin/howto/environment/hub-user-image-template-guide.html. - -## About this template repository :information_source: - -This template repository enables [jupyterhub/repo2docker-action](https://github.com/jupyterhub/repo2docker-action). -This GitHub action builds a Docker image using the contents of this repo and pushes it to the [Quay.io](https://quay.io/) registry. - -### The environment - -It provides an example of a `environment.yml` conda configuration file for repo2docker to use. -This file can be used to list all the conda packages that need to be installed by `repo2docker` in your environment. -The `repo2docker-action` will update the [base repo2docker](https://github.com/jupyterhub/repo2docker/blob/HEAD/repo2docker/buildpacks/conda/environment.yml) conda environment with the packages listed in this `environment.yml` file. - -**Note:** -A complete list of possible configuration files that can be added to the repository and be used by repo2docker to build the Docker image, can be found in the [repo2docker docs](https://repo2docker.readthedocs.io/en/latest/config_files.html#configuration-files). - -### The GitHub Action workflows - -This template repository provides some GitHub Action workflows that can build and push the image to quay.io when configured, and test the image on Binder. - -![Workflows](images/workflows.png) - -#### 1. Build and push container image :arrow_right: [build.yaml](https://github.com/2i2c-org/hub-user-image-template/blob/main/.github/workflows/build.yaml) - -This workflow is triggered by every pushed commit on the main branch of the repo (including when a PR is merged), and every commit made to a Pull Request opened against the default branch (`main`).. -It **builds** the image and **pushes** it to the registry _on pushes to the default branch_. -During PR builds, the image is **only** built and **not** pushed, unless explicitly configured to do so. -Checkout [this section](https://docs.2i2c.org/en/latest/admin/howto/environment/hub-user-image-template-guide.html#enable-quay-io-image-push-during-pull-requests) on how to enable image pushes on Pull Requests. - -#### 2. Test this PR on Binder Badge :arrow_right: [binder.yaml](https://github.com/2i2c-org/hub-user-image-template/blob/MAIN/.github/workflows/binder.yaml) - -This workflow posts a comment inside a pull request, every time a pull request gets opened. The comment contains a "Test this PR on Binder" badge, which can be used to access the image defined by the PR in [mybinder.org](https://mybinder.org/). - -![Test this PR on Binder](images/binder-badge.png) +# LEAP-Pangeo pangeo-notebook for microdinosaur project + +Find the latest or a specific tag on quay.io and follow the [instructions to use a custom image](https://leap-stc.github.io/leap-pangeo/jupyterhub.html#custom-images) and paste +``` +quay.io/leap-stc/pangeo-notebook-microdinosaur +: +``` +into the 'Other' field. \ No newline at end of file