Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
magpowell committed May 6, 2024
1 parent e0a2578 commit a231dd1
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 61 deletions.
9 changes: 2 additions & 7 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build-and-push:
Expand All @@ -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 }}
Expand All @@ -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: "<quay-username>/<repository-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
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -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: "<quay-username>/<repository-name>"

# Lets us monitor disks getting full as images get bigger over time
- name: Show how much disk space is left
run: df -h
62 changes: 8 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
:<insert_your_tag_of_choice>
```
into the 'Other' field.

0 comments on commit a231dd1

Please sign in to comment.