From a1b01c266a6e871b1ae04e32fc8a22f5ca60cd5b Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sat, 5 Sep 2015 23:42:13 -0700 Subject: [PATCH 1/6] scripts/build-aci: fix the way to check executability Or it may treat runnable command as unexecutable. --- scripts/build-aci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build-aci b/scripts/build-aci index 9d5464ffa..69b56214b 100755 --- a/scripts/build-aci +++ b/scripts/build-aci @@ -8,7 +8,7 @@ IMAGEDIR=${IMAGEDIR:-bin/image-aci} VERSION=$1 -if [ ! -x "$ACTOOL" ] ; then +if ! command -v $ACTOOL >/dev/null; then echo "actool ($ACTOOL) is not executable" exit 1 fi From cf6cb82caa70d6d3d178b310e05ebe8506ee29ff Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sat, 5 Sep 2015 23:54:01 -0700 Subject: [PATCH 2/6] scripts/build-docker: stop creating scratch image Scratch image has become docker's reserved image. --- scripts/build-docker | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build-docker b/scripts/build-docker index b29afb940..58266ac16 100755 --- a/scripts/build-docker +++ b/scripts/build-docker @@ -1,5 +1,4 @@ #!/usr/bin/env bash -tar cv --files-from /dev/null | docker import - scratch cat < Dockerfile FROM scratch From 6b70fa72fe163b348cf97084fe3fbaae462c9ace Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sat, 5 Sep 2015 23:58:21 -0700 Subject: [PATCH 3/6] scripts: build-release -> build-binary This makes the functionality of the script more clear, and always use bash to run the script because it has bash-specific grammar. --- scripts/{build-release => build-binary} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename scripts/{build-release => build-binary} (97%) diff --git a/scripts/build-release b/scripts/build-binary similarity index 97% rename from scripts/build-release rename to scripts/build-binary index 5806ff34c..b135c317d 100755 --- a/scripts/build-release +++ b/scripts/build-binary @@ -1,4 +1,6 @@ -#!/bin/sh -e +#!/usr/bin/env bash + +set -e VER=$1 PROJ="etcd" From 15d1db9bf8a6eb433318f9dd71433baa8c6349c4 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sun, 6 Sep 2015 00:05:07 -0700 Subject: [PATCH 4/6] scripts/build-aci: support BINARYDIR and BUILDDIR This makes it more configurable, and is ready for overall release script. --- scripts/build-aci | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/build-aci b/scripts/build-aci index 69b56214b..7feb013aa 100755 --- a/scripts/build-aci +++ b/scripts/build-aci @@ -1,10 +1,13 @@ #!/usr/bin/env bash +BINARYDIR=${BINARYDIR:-bin} +BUILDDIR=${BUILDDIR:-bin} + # A non-installed actool can be used, for example: # ACTOOL=../../appc/spec/bin/actool ACTOOL=${ACTOOL:-actool} -IMAGEDIR=${IMAGEDIR:-bin/image-aci} +IMAGEDIR=${IMAGEDIR:-$BUILDDIR/image-aci} VERSION=$1 @@ -13,8 +16,8 @@ if ! command -v $ACTOOL >/dev/null; then exit 1 fi -if [ ! -x bin/etcd ] ; then - echo "bin/etcd not found. Is it compiled?" +if [ ! -x $BINARYDIR/etcd ] ; then + echo "$BINARYDIR/etcd not found. Is it compiled?" exit 1 fi @@ -34,7 +37,7 @@ if [ -n "$(ls -A $IMAGEDIR/rootfs)" ]; then exit 1 fi -cp bin/etcd bin/etcdctl $IMAGEDIR/rootfs/ +cp $BINARYDIR/etcd $BINARYDIR/etcdctl $IMAGEDIR/rootfs/ cp README.md $IMAGEDIR/rootfs/ cp etcdctl/README.md $IMAGEDIR/rootfs/README-etcdctl.md cp -r Documentation $IMAGEDIR/rootfs/ @@ -98,4 +101,4 @@ cat < $IMAGEDIR/rootfs/etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 DF -$ACTOOL build -overwrite=true $IMAGEDIR bin/etcd-${1}-linux-amd64.aci +$ACTOOL build -overwrite=true $IMAGEDIR $BUILDDIR/etcd-${1}-linux-amd64.aci From 184337568d020daa73ac5767a648367d30ca9579 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sun, 6 Sep 2015 00:07:00 -0700 Subject: [PATCH 5/6] scripts/build-docker: build docker in image-docker dir The docker build command will use whatever directory contains the Dockerfile as the build context (including all of its subdirectories). And the path of ADD must be inside the context of the build. So change it to build in a specific directory for clean and fast. --- scripts/build-docker | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/build-docker b/scripts/build-docker index 58266ac16..26d49889b 100755 --- a/scripts/build-docker +++ b/scripts/build-docker @@ -1,6 +1,14 @@ #!/usr/bin/env bash -cat < Dockerfile +BINARYDIR=${BINARYDIR:-.} +BUILDDIR=${BUILDDIR:-.} + +IMAGEDIR=${BUILDDIR}/image-docker + +mkdir -p ${IMAGEDIR} +cp ${BINARYDIR}/etcd ${BINARYDIR}/etcdctl ${IMAGEDIR} + +cat < ${IMAGEDIR}/Dockerfile FROM scratch ADD etcd / ADD etcdctl / @@ -8,4 +16,4 @@ EXPOSE 4001 7001 2379 2380 ENTRYPOINT ["/etcd"] DF -docker build -t quay.io/coreos/etcd:${1} . +docker build -t quay.io/coreos/etcd:${1} ${IMAGEDIR} From 7d4cd7c76a7f7dd61cf543422b885f3e1eb450c0 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Sun, 6 Sep 2015 00:11:21 -0700 Subject: [PATCH 6/6] scripts: add release.sh It could build all binaries and images for the given version. --- scripts/release.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 scripts/release.sh diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 000000000..5ca52ab4a --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# +# Build all release binaries and images to directory ./release. +# Run from repository root. +# +set -e + +VERSION=$1 +if [ -z "${VERSION}" ]; then + echo "Usage: ${0} VERSION" >> /dev/stderr + exit 255 +fi + +# A non-installed actool can be used, for example: +# ACTOOL=../../appc/spec/bin/actool +ACTOOL=${ACTOOL:-actool} +if ! command -v $ACTOOL >/dev/null; then + echo "cannot find actool ($ACTOOL)" + exit 1 +fi + +if ! command -v docker >/dev/null; then + echo "cannot find docker" + exit 1 +fi + +ETCD_ROOT=$(dirname "${BASH_SOURCE}")/.. + +pushd ${ETCD_ROOT} >/dev/null + echo Building etcd binary... + ./scripts/build-binary ${VERSION} + echo Building aci image... + BINARYDIR=release/etcd-${VERSION}-linux-amd64 BUILDDIR=release ./scripts/build-aci ${VERSION} + echo Building docker image... + BINARYDIR=release/etcd-${VERSION}-linux-amd64 BUILDDIR=release ./scripts/build-docker ${VERSION} +popd >/dev/null