From ee27a4f9f401b57e1cfd9b1bb18193f2a4596c8c Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Thu, 9 Mar 2017 09:14:48 -0800 Subject: [PATCH] *: only use docker when releasing, update to Go 1.8, remove aci scripts This change modifies our release process to only require Docker when building a release and updates our released binary to use Go 1.8. It also removes our .aci scripts, which we've not been regularly building. A nice consequence is that OSX users can now build a release image. --- .dockerignore | 3 +++ .travis.yml | 3 ++- Documentation/dev-releases.md | 22 ---------------------- Makefile | 18 ++---------------- scripts/build-aci | 30 ------------------------------ scripts/docker-build | 15 +++++++++++++++ scripts/rkt-build | 13 ------------- 7 files changed, 22 insertions(+), 82 deletions(-) create mode 100644 .dockerignore delete mode 100755 scripts/build-aci create mode 100755 scripts/docker-build delete mode 100755 scripts/rkt-build diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..1c99e92d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +* +!_output/bin +!web diff --git a/.travis.yml b/.travis.yml index d5b1346f..710223eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,8 @@ language: go go: - - 1.7.4 + - 1.7.5 + - 1.8 services: - postgresql diff --git a/Documentation/dev-releases.md b/Documentation/dev-releases.md index 5c989fe9..30adb4d6 100644 --- a/Documentation/dev-releases.md +++ b/Documentation/dev-releases.md @@ -4,20 +4,15 @@ Making a dex release involves: * Tagging a git commit and pushing the tag to GitHub. * Building and pushing a Docker image. -* Building, signing, and hosting an ACI. This requires the following tools. -* rkt * Docker -* [docker2aci](https://github.com/appc/docker2aci) -* [acbuild](https://github.com/containers/build) (must be in your sudo user's PATH) And the following permissions. * Push access to the github.com/coreos/dex git repo. * Push access to the quay.io/coreos/dex Docker repo. -* Access to the CoreOS application signing key. ## Tagging the release @@ -80,24 +75,7 @@ Build the Docker image and push to Quay. ```bash # checkout the tag git checkout tags/v2.1.0 -# rkt doesn't play nice with SELinux, see https://github.com/coreos/rkt/issues/1727 -sudo setenforce Permissive # will prompt for sudo password make docker-image sudo docker push quay.io/coreos/dex:v2.1.0 ``` - -## Building the ACI - -```bash -# checkout the tag -git checkout tags/v2.1.0 -# rkt doesn't play nice with SELinux, see https://github.com/coreos/rkt/issues/1727 -sudo setenforce Permissive -# will prompt for sudo password -make aci -# aci will be built at _output/image/dex.aci -``` - -Sign the ACI using the CoreOS application signing key. Upload the ACI and -signature to the GitHub release. diff --git a/Makefile b/Makefile index 43de44d9..851ccfd8 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ bin/grpc-client: check-go-version .PHONY: release-binary release-binary: - @go build -o _output/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex + @go build -o /go/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex .PHONY: revendor revendor: @@ -63,23 +63,9 @@ lint: done _output/bin/dex: - # Using rkt to build the dex binary. - @./scripts/rkt-build + @./scripts/docker-build @sudo chown $(user):$(group) _output/bin/dex -_output/images/library-alpine-3.4.aci: - @mkdir -p _output/images - # Using docker2aci to get a base ACI to build from. - @docker2aci docker://alpine:3.4 - @mv library-alpine-3.4.aci _output/images/library-alpine-3.4.aci - -.PHONY: aci -aci: clean-release _output/bin/dex _output/images/library-alpine-3.4.aci - # Using acbuild to build a application container image. - @sudo ./scripts/build-aci ./_output/images/library-alpine-3.4.aci - @sudo chown $(user):$(group) _output/images/dex.aci - @mv _output/images/dex.aci _output/images/dex-$(VERSION)-linux-amd64.aci - .PHONY: docker-image docker-image: clean-release _output/bin/dex @sudo docker build -t $(DOCKER_IMAGE) . diff --git a/scripts/build-aci b/scripts/build-aci deleted file mode 100755 index 03f232a7..00000000 --- a/scripts/build-aci +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [ "$EUID" -ne 0 ]; then - echo "This script uses functionality which requires root privileges" - exit 1 -fi - -# Start the build with an empty ACI -acbuild --debug begin $1 - -# In the event of the script exiting, end the build -trap "{ export EXT=$?; sudo acbuild --debug end && exit $EXT; }" EXIT - -# Name the ACI -acbuild --debug set-name coreos.com/dex - -# Add a version label -acbuild --debug label add version $( ./scripts/git-version ) - -acbuild --debug run -- apk add --update ca-certificates - -acbuild --debug copy _output/bin/dex /usr/local/bin/dex - -acbuild --debug port add www tcp 5556 -acbuild --debug port add grcp tpc 5557 - -acbuild --debug set-exec -- /usr/local/bin/dex -acbuild --debug write --overwrite _output/images/dex.aci diff --git a/scripts/docker-build b/scripts/docker-build new file mode 100755 index 00000000..8c1c8d6e --- /dev/null +++ b/scripts/docker-build @@ -0,0 +1,15 @@ +#!/bin/bash -e + +mkdir -p _output/bin + +sudo docker run \ + --cidfile=cid \ + -v $PWD:/go/src/github.com/coreos/dex:ro \ + -w /go/src/github.com/coreos/dex \ + golang:1.8.0-alpine \ + /bin/sh -x -c \ + 'apk add --no-cache --update alpine-sdk && make release-binary' + +sudo docker cp $( cat cid ):/go/bin/dex _output/bin/dex +sudo docker rm $( cat cid ) +sudo rm cid diff --git a/scripts/rkt-build b/scripts/rkt-build deleted file mode 100755 index d22674d5..00000000 --- a/scripts/rkt-build +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -mkdir -p _output/bin - -sudo rkt run \ - --volume dex,kind=host,source=$PWD \ - --mount volume=dex,target=/go/src/github.com/coreos/dex \ - --dns=8.8.8.8 \ - --net=host \ - --insecure-options=image \ - docker://golang:1.7.4-alpine \ - --exec=/bin/sh -- -x -c \ - 'apk add --no-cache --update alpine-sdk && cd /go/src/github.com/coreos/dex && make release-binary'