diff --git a/build.sh b/build.sh index e839f8bb..cbbcf4d7 100755 --- a/build.sh +++ b/build.sh @@ -5,6 +5,6 @@ cd $(dirname $0) export DOCKER_IMAGE=rancher-os-build -./scripts/ci +./scripts/ci "$@" mkdir -p dist docker run -it -e CHOWN_ID=$(id -u) -v $(pwd)/dist:/source/target $DOCKER_IMAGE diff --git a/scripts/bootstrap b/scripts/bootstrap index 75ac00da..fa727182 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -7,9 +7,6 @@ cd $(dirname $0)/.. apt-get update apt-get install -y curl rsync build-essential syslinux xorriso libblkid-dev libmount-dev libselinux1-dev - -curl -sL https://github.com/ibuildthecloud/docker/releases/download/v1.5.0-rancher-2/docker-1.5.0 > /usr/bin/docker - -chmod +x /usr/bin/docker - -curl -sL https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz | tar xvzf - -C /usr/local +if [ ! -d /usr/local/go ]; then + curl -sL https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz | tar xvzf - -C /usr/local +fi diff --git a/scripts/build-common b/scripts/build-common index e0ee07c4..0600af7f 100644 --- a/scripts/build-common +++ b/scripts/build-common @@ -73,6 +73,9 @@ run() content="$content\nCOPY $1 /source/" fi ;; + *) + break + ;; esac shift 1 @@ -84,16 +87,20 @@ run() fi if [ -n "$1" ]; then echo -e "\nCOPY $1 /source/$1" >> ${DOCKER_FILE} - echo -e "RUN /source/$1" >> ${DOCKER_FILE} + echo -e "RUN /source/"$@"" >> ${DOCKER_FILE} fi if [ "$RUN_EXEC" = "true" ]; then - $1 + "$@" fi } finish() { + if [ "$RUN_EXEC" = "true" ]; then + return + fi + local cmd="docker build -t ${DOCKER_IMAGE} -f ${DOCKER_FILE} ." echo Running $cmd echo Pwd $(pwd) diff --git a/scripts/build-images b/scripts/build-images index be451bdc..59bbf8bc 100755 --- a/scripts/build-images +++ b/scripts/build-images @@ -1,6 +1,8 @@ #!/bin/bash set -e +VERSION=v0.0.1 + cd $(dirname $0)/.. source scripts/build-common @@ -10,7 +12,8 @@ mkdir -p ${BUILD}/initrd ${DIST}/artifacts echo Extracting ${ARTIFACTS}/os-base.tar.xz tar xJf ${ARTIFACTS}/os-base.tar.xz -C ${BUILD} -cp /etc/ssl/certs/ca-certificates.crt ${BUILD}/initrd/ca.crt +cp /etc/ssl/certs/ca-certificates.crt ${ARTIFACTS}/ca.crt +cp ${BUILD}/dist/rootfs.tar ${ARTIFACTS} rm -rf ${BUILD}/initrd/lib cp -rf ${BUILD}/dist/kernel/lib ${BUILD}/initrd @@ -46,6 +49,7 @@ for i in scripts/dockerimages/[0-9]*; do tag=$(echo $i | cut -f2 -d-) echo Building $tag docker build -t $tag -f $i . + docker build -t ${tag}:${VERSION} -f $i . echo $tag >> ${BUILD}/tags done diff --git a/scripts/ci b/scripts/ci index 09b1cee1..bc78793e 100755 --- a/scripts/ci +++ b/scripts/ci @@ -4,7 +4,7 @@ set -e cd $(dirname $0)/.. export DOCKER_IMAGE=${DOCKER_IMAGE:=rancher-os-build} -export DOCKER_BASE=rancher/docker-dind-base:latest +export DOCKER_BASE=rancher/dind:v0.1.0 source scripts/build-common @@ -12,6 +12,11 @@ DOCKER_FILE=$(pwd)/.dockerfile generate_images() { + if [ "$RUN_EXEC" = "true" ]; then + ./scripts/build-images + return + fi + IMAGE_ID=$(docker images --no-trunc -q ${DOCKER_IMAGE}) if [ -e ${BUILD}/${IMAGE_ID} ]; then @@ -45,5 +50,5 @@ for i in $(ls -d * .* | sort -u | grep -Ev '(\.|\.\.|\.dockerfile|build|dist|.gi fi done run --assets "${ARGS}" ./scripts/build -run --assets ./scripts/install ./scripts/package +run --assets ./scripts/install ./scripts/package "$@" finish diff --git a/scripts/dockerimages/00-base b/scripts/dockerimages/00-base index 0e6620d7..1df07792 100644 --- a/scripts/dockerimages/00-base +++ b/scripts/dockerimages/00-base @@ -1,3 +1,23 @@ FROM scratch -ADD build/dist/rootfs.tar / +ADD assets/rootfs.tar / +# Cleanup Buildroot +RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \ + sed -i '/^root/s!/bin/sh!/bin/bash!' /etc/passwd && \ + echo -e 'RancherOS\n' > /etc/issue && \ + rm /run \ + /linuxrc \ + /etc/os-release \ + /var/cache \ + /var/lock \ + /var/log \ + /var/run \ + /var/spool \ + /var/lib/misc && \ + mkdir -p \ + /run \ + /var/cache \ + /var/lock \ + /var/log \ + /var/run \ + /var/spool CMD ["/bin/sh"] diff --git a/scripts/dockerimages/01-state b/scripts/dockerimages/01-state index 68389271..b34cd085 100644 --- a/scripts/dockerimages/01-state +++ b/scripts/dockerimages/01-state @@ -1,6 +1,2 @@ FROM base -VOLUME /home -VOLUME /opt -VOLUME /var/lib/docker -VOLUME /var/run CMD ["echo"] diff --git a/scripts/dockerimages/04-userdocker b/scripts/dockerimages/04-userdocker index 497c9785..4a2db946 100644 --- a/scripts/dockerimages/04-userdocker +++ b/scripts/dockerimages/04-userdocker @@ -1,4 +1,4 @@ FROM base COPY scripts/dockerimages/scripts/docker.sh / -COPY build/initrd/ca.crt /etc/ssl/certs/ca-certificates.crt +COPY assets/ca.crt /etc/ssl/certs/ca-certificates.crt CMD ["/docker.sh"] diff --git a/scripts/dockerimages/05-console b/scripts/dockerimages/05-console index 2137dc50..610ba6c7 100644 --- a/scripts/dockerimages/05-console +++ b/scripts/dockerimages/05-console @@ -1,6 +1,3 @@ FROM base -RUN rm /sbin/poweroff /sbin/reboot /sbin/halt -RUN sed -i '/^root/s!/bin/sh!/bin/bash!' /etc/passwd -RUN echo -e 'RancherOS\n' > /etc/issue -COPY scripts/dockerimages/scripts/console.sh / -CMD ["/console.sh"] +COPY scripts/dockerimages/scripts/console.sh /usr/sbin/ +CMD ["/usr/sbin/console.sh"] diff --git a/scripts/package b/scripts/package index b2da8d67..26b4cb72 100755 --- a/scripts/package +++ b/scripts/package @@ -10,7 +10,12 @@ cp scripts/dockerimages/scripts/os-dockerfile ${BUILD}/initrd/Dockerfile cd ${BUILD}/initrd -find | cpio -H newc -o | lzma -c > ${DIST}/artifacts/initrd +if [ "--dev" = "$1" ]; then + find | cpio -H newc -o > ${DIST}/artifacts/initrd + cp ${DIST}/artifacts/initrd ${DIST}/artifacts/initrd.none +else + find | cpio -H newc -o | lzma -c > ${DIST}/artifacts/initrd +fi CD=${BUILD}/cd diff --git a/scripts/run b/scripts/run index 6b95a0df..82090f81 100755 --- a/scripts/run +++ b/scripts/run @@ -10,6 +10,7 @@ BASE=$(pwd) KERNEL=${BASE}/dist/artifacts/vmlinuz INITRD=${BASE}/dist/artifacts/initrd +NO_COMPRESS_INITRD=${INITRD}.none HD=${BASE}/build/empty-hd.img HD_GZ=${ARTIFACTS}/empty-hd.img.gz INITRD_TMP=${BUILD}/$(sha1sum ${INITRD} | awk '{print $1}') @@ -23,7 +24,11 @@ fi if [ ! -d ${INITRD_TMP} ]; then mkdir -p ${INITRD_TMP} pushd ${INITRD_TMP} - lzma -dc ${INITRD} | sudo cpio -idmv + if [ -e ${NO_COMPRESS_INITRD} ]; then + cat ${NO_COMPRESS_INITRD} | sudo cpio -idmv + else + xz -dc ${INITRD} | sudo cpio -idmv + fi rm -f init popd fi @@ -41,6 +46,6 @@ else zcat ${HD_GZ} > ${HD} fi - qemu-system-x86_64 -serial stdio -kernel ${KERNEL} -initrd ${INITRD_TEST} -m 1024 -net nic,vlan=0,model=virtio -net user,vlan=0,hostfwd=tcp::2222-:22,hostname=rancher -drive if=virtio,file=${HD} -machine accel=kvm -cpu host -smp 4 -append "console=ttyS0 $@" + qemu-system-x86_64 -serial stdio -kernel ${KERNEL} -initrd ${INITRD_TEST} -m 1024 -net nic,vlan=0,model=virtio -net user,vlan=0,hostfwd=tcp::2222-:22,hostname=rancher -drive if=virtio,file=${HD} -machine accel=kvm -cpu host -smp 4 -append "x $@" ${QEMU_ARGS} fi