+++ /dev/null
-#!/bin/bash
-
-# This can be run from e.g. the senta machines which have docker available. You
-# may need to run this script with sudo.
-#
-# Once you have booted into the image, you should be able to debug the core file:
-# $ gdb -q /ceph/teuthology-archive/.../coredump/1500013578.8678.core
-#
-# You may want to install other packages (yum) as desired.
-#
-# Once you're finished, please delete old images in a timely fashion.
-
-set -e
-
-CACHE=""
-
-function run {
- printf "%s\n" "$*"
- "$@"
-}
-
-function main {
- eval set -- $(getopt --name "$0" --options 'h' --longoptions 'help,no-cache' -- "$@")
-
- while [ "$#" -gt 0 ]; do
- case "$1" in
- -h|--help)
- printf '%s: [--no-cache] <branch> <enviornment>\n' "$0"
- exit 0
- ;;
- --no-cache)
- CACHE="--no-cache"
- shift
- ;;
- --)
- shift
- break
- ;;
- esac
- done
-
- if [ -z "$1" ]; then
- printf "specify the branch [default \"master\"]: "
- read branch
- if [ -z "$branch" ]; then
- branch=master
- fi
- else
- branch="$1"
- fi
- printf "branch: %s\n" "$branch"
-
- if [ -z "$2" ]; then
- printf "specify the build environment [default \"centos:7\"]: "
- read env
- if [ -z "$env" ]; then
- env=centos:7
- fi
- else
- env="$2"
- fi
- printf "env: %s\n" "$env"
-
- if [ -n "$SUDO_USER" ]; then
- user="$SUDO_USER"
- elif [ -n "$USER" ]; then
- user="$USER"
- else
- user="$(whoami)"
- fi
-
- image="${user}/ceph-ci:${branch}-${env/:/-}"
-
- T=$(mktemp -d)
- pushd "$T"
- if grep ubuntu <<<"$env" > /dev/null 2>&1; then
- # Docker makes it impossible to access anything outside the CWD : /
- cp -- /ceph/shaman/cephdev.asc .
- cat > Dockerfile <<EOF
-FROM ${env}
-
-WORKDIR /root
-RUN apt-get update --yes --quiet && \
- apt-get install --yes --quiet screen wget gdb software-properties-common python-software-properties apt-transport-https
-COPY cephdev.asc cephdev.asc
-RUN apt-key add cephdev.asc
-RUN add-apt-repository "\$(wget --quiet -O - https://shaman.ceph.com/api/repos/ceph/${branch}/latest/${env/://}/repo)" && \
- apt-get update --yes && \
- apt-get install --yes --allow-unauthenticated ceph ceph-mds-dbg ceph-mgr-dbg ceph-mon-dbg ceph-fuse-dbg ceph-test-dbg radosgw-dbg
-EOF
- time run docker build $CACHE --tag "$image" .
- else # try RHEL flavor
- time run docker build $CACHE --tag "$image" - <<EOF
-FROM ${env}
-
-WORKDIR /root
-RUN yum update -y && \
- yum install -y screen epel-release wget psmisc ca-certificates gdb
-RUN wget -O /etc/yum.repos.d/ceph-dev.repo https://shaman.ceph.com/api/repos/ceph/${branch}/latest/centos/7/repo && \
- yum clean all && \
- yum upgrade -y && \
- yum install -y ceph ceph-debuginfo ceph-fuse
-EOF
- fi
- popd
- rm -rf -- "$T"
-
- printf "built image %s\n" "$image"
-
- run docker run -ti -v /ceph:/ceph:ro "$image"
- return 0
-}
-
-main "$@"