From cd62c461230546b4086ceb8024c3c95fa0c69d74 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 2 Mar 2017 19:30:21 -0700 Subject: [PATCH 1/2] Update CLI wrapper script --- {cli-docker => contrib}/rancher | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {cli-docker => contrib}/rancher (100%) diff --git a/cli-docker/rancher b/contrib/rancher similarity index 100% rename from cli-docker/rancher rename to contrib/rancher From 0ea05c34dbda8679d6d5976c78d68b2c66e1d09a Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 2 Mar 2017 21:20:15 -0700 Subject: [PATCH 2/2] Build rancher/cli image --- README.md | 6 ++++++ cli-docker/Dockerfile | 12 ------------ contrib/rancher | 6 +++++- package/Dockerfile | 7 +++++-- scripts/build | 2 +- scripts/package | 20 ++++++++++++++++++++ 6 files changed, 37 insertions(+), 16 deletions(-) delete mode 100644 cli-docker/Dockerfile mode change 100644 => 100755 contrib/rancher diff --git a/README.md b/README.md index 3f483ff2e..3e5346546 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,12 @@ Run `make`. Run `CROSS=1 make build` +### Docker image + +Run `docker run --rm -it rancher/cli [ARGS]` You can pass in credentials by bind mounting in a config file or setting env vars. You can also use the wrapper script in `./contrib/rancher` that will make the process a bit easier. + +To build `rancher/cli` just run `make`. To use a custom Docker repository do `REPO=custom make` and it will producte `custom/cli` image. + ## Contact For bugs, questions, comments, corrections, suggestions, etc., open an issue in diff --git a/cli-docker/Dockerfile b/cli-docker/Dockerfile deleted file mode 100644 index 8fd8e638d..000000000 --- a/cli-docker/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM alpine:3.5 -MAINTAINER "Stian Larsen " -ENV version=v0.4.1 -RUN \ -apk add --no-cache ca-certificates wget tar openssh-client && \ -wget -O /tmp/rancher.tar.gz https://github.com/rancher/cli/releases/download/${version}/rancher-linux-amd64-${version}.tar.gz && \ -tar xfz /tmp/rancher.tar.gz --strip-components=2 -C /usr/bin && \ -apk del --no-cache ca-certificates wget tar -WORKDIR /mnt -ENTRYPOINT ["rancher"] -CMD ["--help"] - diff --git a/contrib/rancher b/contrib/rancher old mode 100644 new mode 100755 index 13ac4d4a8..69d18a937 --- a/contrib/rancher +++ b/contrib/rancher @@ -1,6 +1,10 @@ #!/bin/bash [[ -d ~/.rancher ]] || mkdir -p ~/.rancher +[[ -d ~/.ssh ]] || mkdir -p ~/.ssh +[[ -e ~/.ssh/known_hosts ]] || touch ~/.ssh/known_hosts [[ -e ~/.rancher/cli.json ]] || echo "{"accessKey":"","secretKey":"","url":"","environment":""}" > ~/.rancher/cli.json -docker run --rm -it -v ~/.rancher/cli.json:/root/.rancher/cli.json -v ~/.ssh/known_hosts:/root/.ssh/known_hosts -v `pwd`:/mnt rancher-cli "$@" +IMAGE=${IMAGE:-rancher/cli} + +exec docker run --rm -it --net host -v ~/.rancher/cli.json:/root/.rancher/cli.json -v ~/.ssh/known_hosts:/root/.ssh/known_hosts -v $(pwd):/mnt ${IMAGE} "$@" diff --git a/package/Dockerfile b/package/Dockerfile index bd6ff2fac..f69edffbd 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -1,3 +1,6 @@ -FROM alpine -COPY bin/rancher /usr/bin/ +FROM alpine:3.5 +RUN apk add --no-cache ca-certificates openssh-client +COPY rancher /usr/bin/ +WORKDIR /mnt ENTRYPOINT ["rancher"] +CMD ["--help"] diff --git a/scripts/build b/scripts/build index 848ae73c4..28ce12a21 100755 --- a/scripts/build +++ b/scripts/build @@ -12,7 +12,7 @@ OS_ARCH_ARG[windows]="386 amd64" OS_ARCH_ARG[darwin]="amd64" go generate -go build -ldflags="-w -s -X main.VERSION=$VERSION" -o bin/rancher +CGO_ENABLED=0 go build -ldflags="-w -s -X main.VERSION=$VERSION -linkmode external -extldflags -static" -o bin/rancher if [ -n "$CROSS" ]; then rm -rf build/bin diff --git a/scripts/package b/scripts/package index ac2529b0d..53c00f23c 100755 --- a/scripts/package +++ b/scripts/package @@ -56,3 +56,23 @@ for i in build/bin/*; do fi ) done + + +ARCH=${ARCH:-"amd64"} +SUFFIX="" +[ "${ARCH}" != "amd64" ] && SUFFIX="_${ARCH}" + +cd package + +TAG=${TAG:-${VERSION}${SUFFIX}} +REPO=${REPO:-rancher} + +if echo $TAG | grep -q dirty; then + TAG=dev +fi + +cp ../bin/rancher . +docker build -t ${REPO}/cli:${TAG} . + +echo ${REPO}/cli:${TAG} > ../dist/images +echo Built ${REPO}/cli:${TAG}