kopia lustrzana https://github.com/jupyterhub/repo2docker
destroying circle, pewpewpew
rodzic
7b0352bef4
commit
30d80dfa91
|
@ -1,185 +0,0 @@
|
||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# If you want to deploy your container to Docker Hub, you must
|
|
||||||
# 1. define the CONTAINER_NAME environment variable for the project
|
|
||||||
# If not defined, will use the repo that is being built from.
|
|
||||||
# 2. Define the DOCKER_TAG if you have preference. If not defined, will use
|
|
||||||
# the commit associated with the build.
|
|
||||||
# 3. define the REPO_NAME with the juypter notebook you want to build. If not
|
|
||||||
# defined, will use https://www.github.com/{CONTAINER_NAME}
|
|
||||||
# 4. Also define DOCKER_USER and DOCKER_PASS (for deploy, if wanted)
|
|
||||||
setup:
|
|
||||||
environment:
|
|
||||||
- TZ: "/usr/share/zoneinfo/America/Los_Angeles"
|
|
||||||
docker:
|
|
||||||
- image: docker:18.01.0-ce-git
|
|
||||||
- image: circleci/python:3.6.1
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Test if the user has defined the repository name
|
|
||||||
command: apk add --no-cache pigz python3
|
|
||||||
|
|
||||||
build:
|
|
||||||
environment:
|
|
||||||
- TZ: "/usr/share/zoneinfo/America/Los_Angeles"
|
|
||||||
docker:
|
|
||||||
- image: docker:18.01.0-ce-git
|
|
||||||
working_directory: /tmp/src
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Install parallel gzip and python3
|
|
||||||
command: apk add --no-cache pigz python3
|
|
||||||
- restore_cache:
|
|
||||||
keys:
|
|
||||||
- docker-v1-{{ .Branch }}
|
|
||||||
paths:
|
|
||||||
- /tmp/cache/container.tar.gz
|
|
||||||
- restore_cache:
|
|
||||||
key: dependency-cache-repo2docker
|
|
||||||
- checkout
|
|
||||||
- setup_remote_docker
|
|
||||||
- run:
|
|
||||||
name: Load Docker image layer cache
|
|
||||||
no_output_timeout: 30m
|
|
||||||
command: |
|
|
||||||
docker info
|
|
||||||
set +o pipefail
|
|
||||||
if [ -f /tmp/cache/container.tar.gz ]; then
|
|
||||||
pigz -d --stdout /tmp/cache/container.tar.gz | docker load
|
|
||||||
fi
|
|
||||||
docker images
|
|
||||||
- run:
|
|
||||||
name: Run jupyter-repo2docker to generate Docker Container
|
|
||||||
no_output_timeout: 60m
|
|
||||||
command: |
|
|
||||||
echo "0. Installing dependencies..."
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install jupyter-repo2docker
|
|
||||||
export VERSION=$(python3 -c "import repo2docker; print(repo2docker.__version__)")
|
|
||||||
echo "repo2docker version: ${VERSION}"
|
|
||||||
echo "1. Preparing building environment"
|
|
||||||
echo "Working directory is ${PWD}"
|
|
||||||
# If not set, define DOCKER_TAG
|
|
||||||
if [ ! -n "${DOCKER_TAG:-}" ]
|
|
||||||
then
|
|
||||||
DOCKER_TAG=$(echo "${CIRCLE_SHA1}" | cut -c1-10)
|
|
||||||
fi
|
|
||||||
# If not set, define CONTAINER_NAME
|
|
||||||
if [ ! -n "${CONTAINER_NAME:-}" ]
|
|
||||||
then
|
|
||||||
CONTAINER_NAME="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
|
|
||||||
fi
|
|
||||||
# If not set, use testing repo name
|
|
||||||
if [ ! -n "{REPO_NAME}" ]
|
|
||||||
then
|
|
||||||
${REPO_NAME}="https://www.github.com/${CONTAINER_NAME}"
|
|
||||||
fi
|
|
||||||
echo "Container name is ${CONTAINER_NAME}"
|
|
||||||
echo "Repository name is ${REPO_NAME}"
|
|
||||||
echo "2. Running jupyter-repo2docker..."
|
|
||||||
echo "jupyter-repo2docker --debug --user-name username --user-id 1000 --no-run --image-name ${CONTAINER_NAME}:${DOCKER_TAG} ${REPO_NAME}"
|
|
||||||
jupyter-repo2docker --debug --user-name username --user-id 1000 --no-run --image-name "${CONTAINER_NAME}:${DOCKER_TAG}" "${REPO_NAME}"
|
|
||||||
docker ps
|
|
||||||
docker images
|
|
||||||
- run:
|
|
||||||
name: Docker Save
|
|
||||||
no_output_timeout: 40m
|
|
||||||
command: |
|
|
||||||
# If not set, use commit id as tag
|
|
||||||
if [ ! -n "${DOCKER_TAG:-}" ]
|
|
||||||
then
|
|
||||||
DOCKER_TAG=$(echo "${CIRCLE_SHA1}" | cut -c1-10)
|
|
||||||
fi
|
|
||||||
# If not set, define CONTAINER_NAME
|
|
||||||
if [ ! -n "${CONTAINER_NAME:-}" ]
|
|
||||||
then
|
|
||||||
CONTAINER_NAME="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
|
|
||||||
fi
|
|
||||||
echo "Saving ${CONTAINER_NAME}:${DOCKER_TAG} to container.tar.gz"
|
|
||||||
mkdir -p /tmp/cache
|
|
||||||
docker save ${CONTAINER_NAME}:${DOCKER_TAG} \
|
|
||||||
| pigz -2 -p 3 > /tmp/cache/container.tar.gz
|
|
||||||
- persist_to_workspace:
|
|
||||||
root: /tmp
|
|
||||||
paths:
|
|
||||||
- cache/container.tar.gz
|
|
||||||
- src
|
|
||||||
|
|
||||||
update_cache:
|
|
||||||
machine:
|
|
||||||
# Ubuntu 14.04 with Docker 17.10.0-ce
|
|
||||||
image: circleci/classic:201711-01
|
|
||||||
working_directory: /tmp/src
|
|
||||||
steps:
|
|
||||||
- attach_workspace:
|
|
||||||
at: /tmp
|
|
||||||
- save_cache:
|
|
||||||
key: docker-v1-{{ .Branch }}
|
|
||||||
paths:
|
|
||||||
- /tmp/cache/container.tar.gz
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
machine:
|
|
||||||
image: circleci/classic:201711-01
|
|
||||||
working_directory: /tmp/src
|
|
||||||
steps:
|
|
||||||
- attach_workspace:
|
|
||||||
at: /tmp
|
|
||||||
- run:
|
|
||||||
name: Load Docker image layer cache
|
|
||||||
no_output_timeout: 30m
|
|
||||||
command: |
|
|
||||||
echo "Working directory is ${PWD}"
|
|
||||||
docker info
|
|
||||||
set +o pipefail
|
|
||||||
if [ -f /tmp/cache/container.tar.gz ]; then
|
|
||||||
sudo apt update && sudo apt -y install pigz
|
|
||||||
pigz -d --stdout /tmp/cache/container.tar.gz | docker load
|
|
||||||
docker images
|
|
||||||
fi
|
|
||||||
- run:
|
|
||||||
name: Deploy to Docker Hub
|
|
||||||
no_output_timeout: 40m
|
|
||||||
command: |
|
|
||||||
echo "Looking for Docker deployment options"
|
|
||||||
if [ ! -n "${DOCKER_TAG:-}" ]
|
|
||||||
then
|
|
||||||
DOCKER_TAG=$(echo "${CIRCLE_SHA1}" | cut -c1-10)
|
|
||||||
fi
|
|
||||||
# If not set, define CONTAINER_NAME
|
|
||||||
if [[ ! -n "${CONTAINER_NAME:-}" ]]
|
|
||||||
then
|
|
||||||
CONTAINER_NAME="${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
|
|
||||||
fi
|
|
||||||
echo "Container name set to ${CONTAINER_NAME}:${DOCKER_TAG}"
|
|
||||||
if [[ -n "$DOCKER_PASS" ]]; then
|
|
||||||
docker login -u $DOCKER_USER -p $DOCKER_PASS
|
|
||||||
docker push ${CONTAINER_NAME}:${DOCKER_TAG}
|
|
||||||
fi
|
|
||||||
workflows:
|
|
||||||
version: 2
|
|
||||||
build_deploy:
|
|
||||||
jobs:
|
|
||||||
- build:
|
|
||||||
filters:
|
|
||||||
tags:
|
|
||||||
only: /.*/
|
|
||||||
|
|
||||||
- update_cache:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore: /docs?\/.*/
|
|
||||||
tags:
|
|
||||||
only: /.*/
|
|
||||||
|
|
||||||
# This is where we upload the container to some final resting spot :)
|
|
||||||
- deploy:
|
|
||||||
requires:
|
|
||||||
- build
|
|
||||||
filters:
|
|
||||||
tags:
|
|
||||||
only: /.*/
|
|
Ładowanie…
Reference in New Issue