From d5a0d34e3758d388fcae9952edde70687b14ecd0 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Tue, 24 Oct 2017 00:30:20 -0300 Subject: [PATCH 1/2] Add scripts to release from travis-ci --- .travis.yml | 49 ++++++++++++--------- .travis/common.sh | 78 ++++++++++++++++++++++++++++++++++ .travis/ingress-controller.sh | 29 +++++++++++++ .travis/nginx-slim.sh | 29 +++++++++++++ .travis/publish.sh | 38 +++++++++++++++++ .travis/release-from-travis.sh | 63 +++++++++++++++++++++++++++ .travis/ubuntu-slim.sh | 29 +++++++++++++ Makefile | 12 +++--- images/nginx-slim/Makefile | 28 ++++++------ images/ubuntu-slim/Makefile | 33 ++++++++------ 10 files changed, 335 insertions(+), 53 deletions(-) create mode 100755 .travis/common.sh create mode 100755 .travis/ingress-controller.sh create mode 100755 .travis/nginx-slim.sh create mode 100755 .travis/publish.sh create mode 100755 .travis/release-from-travis.sh create mode 100755 .travis/ubuntu-slim.sh diff --git a/.travis.yml b/.travis.yml index 82002bc56..31a30b6c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ sudo: required services: - - docker +- docker language: go @@ -9,31 +9,38 @@ notifications: email: true go: - - 1.9 +- 1.9 go_import_path: k8s.io/ingress-nginx +# New secure variables can be added using travis encrypt -r kubernetes/ingress-nginx K=V env: global: - - CHANGE_MINIKUBE_NONE_USER=true - - KUBERNETES_VERSION=v1.7.5 - - DOCKER=docker + - CHANGE_MINIKUBE_NONE_USER=true + - KUBERNETES_VERSION=v1.7.5 + - DOCKER=docker + - secure: hCBTA21Q3XoAaVn+3qCkEcBxb5ob0DfDtF3XtgqkV6tHN76fPvuB0eko687nkumkIJsLmSBKjS1v2V/aW+syqj37OpaNrZ8NacpLi3Xso9DOQ/eI//NC2dkY0Yb002ca3A1FWG4urbKnqe1ecPNH981XIMjLr9iIRCtJlNtlUDnCuOLYnfbieXBYGN7EoknGuPFF48V2slxTfH6GkIWlKgtGsyuoKPahwOBuqeGEZ+auXBPvaFcW/vNqMh0kepPrOG7dPyRJvcDw2zvLX6NEYTtMJSRed8ZxVqpS+beg6xTTd84TRan8EWVnBsshfJCjKPAlfBCijDJDEBnqo2ZOwmt2i092kuLfvTrJm+leX6fcH67DczYV/UGzxTyZwyKLnlvi9ppxVpLnQujF/ZRhZ+Q9JvIGUu2/fa8+maa8UWyxZjFiiY0fnOzR5haJOvuD8LJZr4ceE+FacZDmMqk2tQdAo8V68ClyOPAkWx77XJ20exUDvfdu6kMaY+NHSmWl+jrTu/yOdmP3CveCFgdi/8v9YVeIBnMLC3EhX7qBFd0Xkqpmx6dq8fRuBALp7aUAkz/SzfZrhKFHEn9y3TLjHcNQLoVeEhpQhuiMNOJNbd8hS4Wl9cThr1VHLLwCwnoQeKzGYN1DcGmXApWwO8q1xdNeLNz7jFQq91WBdF/bncE= + - secure: hOdrI43DGag32BJ43nO+voUrqcNQ0HcLyGqYGPRHSmS+PRe2gEs//tBwJb35+Hub5QYbRBf/i9dEXltw7vuCfc2w2F42spYyp5cqXOGgWLgiEkNb5Ov/O07N1UhyCKA5FYIH4rci8CHr0mex2Z3xhP5M6w7uWfAE55Ia8DLpSBEEKao2UjQMEImCWyjyP8zlxFKCP68Ni1aqyORGExcubjhrUrilQv4nHyqGevmKmPh8BJ8bU9OxCk0FQ95b+31udDgK8Acr2BDihqp7VgSvaCQKR9pwHQQk09Bl7UqFx7/IANaUYzxAWlp6LNYowjfz7QzzKx4XYKKWX/AbrLz5j7wQkAxK2ol/pEFtcydJNrGLr4zmfHmU6m3971IUx1HyfoZ/Ezw88l/UmD4rVZ7r5j9WS7yVgYZOLiNAp8SiRzAS+RVIrDc7p6Cr4llVCw3iR3h7huQl7yp3QpOMFgvFDKVJukpVm8VbUZONA9gdo8Sq4RUnunIeGem8H71KU4b3bIhmVGqr1/TEQMKmnozsFWVgsXvykFz4gF1HfPQ3T5TdC5z6hYBkeHVcjLUCwejrYbr9RR7PvNPP+e+2rqkRYBg1eboyn6Gdz4kgFBxeJhJiiYLH/Mmr+8qIvrxI+6jJJrsAkddK3Ei+l6cc6xdyDSp5Wt6Q+i4llZojDVb0yFI= + +after_success: +- ".travis/publish.sh" jobs: include: - - stage: Static Check - script: - - go get github.com/golang/lint/golint - - make fmt lint vet - - stage: Coverage - script: - - go get github.com/mattn/goveralls - - go get github.com/modocache/gover - - if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi - - make cover - - stage: e2e - before_script: - - make e2e-image - - test/e2e/up.sh - script: - - make e2e-test + - stage: Static Check + script: + - go get github.com/golang/lint/golint + - make fmt lint vet + - stage: Coverage + script: + - go get github.com/mattn/goveralls + - go get github.com/modocache/gover + - if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; + fi + - make cover + - stage: e2e + before_script: + - make e2e-image + - test/e2e/up.sh + script: + - make e2e-test diff --git a/.travis/common.sh b/.travis/common.sh new file mode 100755 index 000000000..28520cab7 --- /dev/null +++ b/.travis/common.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if ! [ -z $DEBUG ]; then + set -x +fi + +set -o errexit +set -o nounset +set -o pipefail + +# Check if jq binary is installed +if ! [ -x "$(command -v jq)" ]; then + echo "Installing jq..." + sudo apt-get install -y jq +fi + +if ! [ "$TRAVIS_REPO_SLUG" == "kubernetes/ingress-nginx" ]; +then + echo "Only builds from kubernetes/ingress-nginx repository is allowed."; + exit 0; +fi + +# variables QUAY_USERNAME and QUAY_PASSWORD are required to push docker images +if [ "$QUAY_USERNAME" == "" ]; +then + echo "Environment variable QUAY_USERNAME is missing."; + exit 0; +fi + +if [ "$QUAY_PASSWORD" == "" ]; +then + echo "Environment variable QUAY_PASSWORD is missing."; + exit 0; +fi + +SKIP_MESSAGE="Publication of docker image to quay.io registry skipped." + +if ! [ "$TRAVIS_EVENT_TYPE" == "api" ]; +then + echo "Only builds triggered from travis-ci API is allowed. $SKIP_MESSAGE"; + exit 0; +fi + +if ! [ "$TRAVIS_PULL_REQUEST" == "false" ]; +then + echo "This is a pull request. $SKIP_MESSAGE"; + exit 0; +fi + +if ! [ "$TRAVIS_PULL_REQUEST_BRANCH" == "master" ]; +then + echo "Only images build from master branch are allowed. $SKIP_MESSAGE"; + exit 0; +fi + +function docker_tag_exists() { + TAG=${2//\"/} + IMAGES=$(curl -s -H "Authorization: Bearer ${QUAY_PASSWORD}" https://quay.io/api/v1/repository/$1/image/ | jq '.images | sort_by(.sort_index) | .[] .tags | select(.[] !=null) | .[0]' | sed s/\"//g) + if echo "$IMAGES" | grep -q "$TAG" ; then + return 0 + fi + + return 1 +} diff --git a/.travis/ingress-controller.sh b/.travis/ingress-controller.sh new file mode 100755 index 000000000..0ac8a01b8 --- /dev/null +++ b/.travis/ingress-controller.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source $DIR/common.sh + +IMAGE=$(make -s -C $DIR/../ image-info) + +if docker_tag_exists "aledbf/nginx-ingress-controller" $(echo $IMAGE | jq .tag); then + echo "Image already published" + exit 0 +fi + +echo "building aledbf/nginx-ingress-controller image..." +make -C $DIR/../ release diff --git a/.travis/nginx-slim.sh b/.travis/nginx-slim.sh new file mode 100755 index 000000000..fc8c6aad9 --- /dev/null +++ b/.travis/nginx-slim.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source $DIR/common.sh + +IMAGE=$(make -s -C $DIR/../images/nginx-slim image-info) + +if docker_tag_exists "aledbf/nginx-slim" $(echo $IMAGE | jq .tag); then + echo "Image already published" + exit 0 +fi + +echo "building nginx-slim image..." +make -C $DIR/../images/nginx-slim release diff --git a/.travis/publish.sh b/.travis/publish.sh new file mode 100755 index 000000000..6ff281b52 --- /dev/null +++ b/.travis/publish.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source $DIR/common.sh + +echo "Login to quay.io..." +echo $QUAY_PASSWORD | docker login --username=$QUAY_USERNAME --password-stdin quay.io >/dev/null 2>&1 + +case "$COMPONENT" in +"ingress-controller") + $DIR/ingress-controller.sh + ;; +"ubuntu-slim") + $DIR/ubuntu-slim.sh + ;; +"nginx-slim") + $DIR/nginx-slim.sh + ;; +*) + echo "Invalid option in environment variable COMPONENT" + exit 1 + ;; +esac diff --git a/.travis/release-from-travis.sh b/.travis/release-from-travis.sh new file mode 100755 index 000000000..b28ecac00 --- /dev/null +++ b/.travis/release-from-travis.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if ! [ -z $DEBUG ]; then + set -x +fi + +set -o errexit +set -o pipefail + +if [ "$TRAVIS_CI_TOKEN" == "" ]; +then + echo "Environment variable TRAVIS_CI_TOKEN is missing."; + exit 1; +fi + +function publish() { + +body=$(cat <<'EOF' +{ + "request": { + "branch": "master", + "config": { + "env": { + "COMPONENT": "$2" + } + } + } +} +EOF +) + +echo curl -s -X POST \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + -H "Travis-API-Version: 3" \ + -H "Authorization: token $1" \ + --data "'$body'" \ + https://api.travis-ci.org/repo/kubernetes%2Fingress-nginx/requests +} + +case "$1" in + ingress-controller|ubuntu-slim|nginx-slim) + publish $TRAVIS_CI_TOKEN $1 + ;; + *) + echo "Invalid publish option" + exit 1 + ;; +esac diff --git a/.travis/ubuntu-slim.sh b/.travis/ubuntu-slim.sh new file mode 100755 index 000000000..82f1afe56 --- /dev/null +++ b/.travis/ubuntu-slim.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source $DIR/common.sh + +IMAGE=$(make -s -C $DIR/../images/ubuntu-slim image-info) + +if docker_tag_exists "aledbf/ubuntu-slim" $(echo $IMAGE | jq .tag); then + echo "Image already published" + exit 0 +fi + +echo "building ubuntu-slim image..." +make -C $DIR/../images/ubuntu-slim release diff --git a/Makefile b/Makefile index 0fc9c15f1..5a61a50d1 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ BUILDTAGS= # Use the 0.0 tag for testing, it shouldn't clobber any release builds TAG?=0.9.0-beta.15 -REGISTRY?=gcr.io/google_containers +REGISTRY?=quay.io/aledbf GOOS?=linux DOCKER?=gcloud docker -- SED_I?=sed -i @@ -49,10 +49,10 @@ IMAGE = $(REGISTRY)/$(IMGNAME) MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) # Set default base image dynamically for each arch -BASEIMAGE?=gcr.io/google_containers/nginx-slim-$(ARCH):0.27 +BASEIMAGE?=quay.io/aledbf/nginx-slim-$(ARCH):0.27 ifeq ($(ARCH),arm) - QEMUARCH=arm + QEMUARCH=arm GOARCH=arm DUMB_ARCH=armhf endif @@ -64,14 +64,14 @@ ifeq ($(ARCH),ppc64le) GOARCH=ppc64le DUMB_ARCH=ppc64el endif -#ifeq ($(ARCH),s390x) -# QEMUARCH=s390x -#endif TEMP_DIR := $(shell mktemp -d) DOCKERFILE := $(TEMP_DIR)/rootfs/Dockerfile +image-info: + echo -n '{"image":"$(IMAGE)","tag":"$(TAG)"}' + all: all-container sub-container-%: diff --git a/images/nginx-slim/Makefile b/images/nginx-slim/Makefile index 3e881f7ad..426c78dfd 100644 --- a/images/nginx-slim/Makefile +++ b/images/nginx-slim/Makefile @@ -14,8 +14,10 @@ # 0.0.0 shouldn't clobber any released builds TAG ?= 0.27 -REGISTRY ?= gcr.io/google_containers +REGISTRY ?= quay.io/aledbf ARCH ?= $(shell go env GOARCH) +DOCKER ?= gcloud docker -- + ALL_ARCH = amd64 arm arm64 ppc64le SED_I?=sed -i GOHOSTOS ?= $(shell go env GOHOSTOS) @@ -31,7 +33,7 @@ IMAGE = $(REGISTRY)/$(IMGNAME) MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) # Set default base image dynamically for each arch -BASEIMAGE?=gcr.io/google_containers/ubuntu-slim-$(ARCH):0.14 +BASEIMAGE?=quay.io/aledbf/ubuntu-slim-$(ARCH):0.14 ifeq ($(ARCH),arm) QEMUARCH=arm @@ -42,13 +44,12 @@ endif ifeq ($(ARCH),ppc64le) QEMUARCH=ppc64le endif -ifeq ($(ARCH),s390x) - QEMUARCH=s390x -endif - TEMP_DIR := $(shell mktemp -d) +image-info: + echo -n '{"image":"$(IMAGE)","tag":"$(TAG)"}' + all: all-container sub-container-%: @@ -74,25 +75,28 @@ ifeq ($(ARCH),amd64) else # When cross-building, only the placeholder "CROSS_BUILD_" should be removed # Register /usr/bin/qemu-ARCH-static as the handler for ARM binaries in the kernel - docker run --rm --privileged multiarch/qemu-user-static:register --reset + $(DOCKER) run --rm --privileged multiarch/qemu-user-static:register --reset curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR) cd $(TEMP_DIR) && $(SED_I) "s/CROSS_BUILD_//g" Dockerfile endif - docker build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) + $(DOCKER) build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) ifeq ($(ARCH), amd64) # This is for to maintain the backward compatibility - docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) + $(DOCKER) tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) endif push: .push-$(ARCH) .push-$(ARCH): .container-$(ARCH) - gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG) + $(DOCKER) push $(MULTI_ARCH_IMG):$(TAG) ifeq ($(ARCH), amd64) - gcloud docker -- push $(IMAGE):$(TAG) + $(DOCKER) push $(IMAGE):$(TAG) endif clean: $(addprefix sub-clean-,$(ALL_ARCH)) sub-clean-%: - docker rmi -f $(IMAGE)-$*:$(TAG) || true + $(DOCKER) rmi -f $(IMAGE)-$*:$(TAG) || true + +release: all-container all-push + echo "done" diff --git a/images/ubuntu-slim/Makefile b/images/ubuntu-slim/Makefile index 11d5d503a..0568f28c2 100755 --- a/images/ubuntu-slim/Makefile +++ b/images/ubuntu-slim/Makefile @@ -13,7 +13,7 @@ # limitations under the License. TAG ?= 0.14 -REGISTRY = gcr.io/google_containers +REGISTRY = quay.io/aledbf ARCH ?= $(shell go env GOARCH) ALL_ARCH = amd64 arm arm64 ppc64le @@ -25,7 +25,7 @@ MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) BUILD_IMAGE ?= ubuntu-build TAR_FILE ?= rootfs.tar -PUSH_TOOL ?= gcloud +DOCKER ?= gcloud docker -- # Set default base image dynamically for each arch ifeq ($(ARCH),amd64) @@ -49,9 +49,11 @@ ifeq ($(ARCH),s390x) QEMUARCH=s390x endif - TEMP_DIR := $(shell mktemp -d) +image-info: + echo -n '{"image":"$(IMAGE)","tag":"$(TAG)"}' + all: all-container sub-container-%: @@ -76,32 +78,35 @@ ifeq ($(ARCH),amd64) else # When cross-building, only the placeholder "CROSS_BUILD_" should be removed # Register /usr/bin/qemu-ARCH-static as the handler for ARM binaries in the kernel - docker run --rm --privileged multiarch/qemu-user-static:register --reset + $(DOCKER) run --rm --privileged multiarch/qemu-user-static:register --reset curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR) cd $(TEMP_DIR) && sed -i "s/CROSS_BUILD_//g" Dockerfile.build endif - docker build --pull -t $(BUILD_IMAGE) -f $(TEMP_DIR)/Dockerfile.build $(TEMP_DIR) - docker create --name $(BUILD_IMAGE) $(BUILD_IMAGE) - docker export $(BUILD_IMAGE) > $(TAR_FILE) + $(DOCKER) build --pull -t $(BUILD_IMAGE) -f $(TEMP_DIR)/Dockerfile.build $(TEMP_DIR) + $(DOCKER) create --name $(BUILD_IMAGE) $(BUILD_IMAGE) + $(DOCKER) export $(BUILD_IMAGE) > $(TAR_FILE) cp rootfs.tar $(TEMP_DIR) - docker build --pull -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) + $(DOCKER) build --pull -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR) ifeq ($(ARCH), amd64) # This is for to maintain the backward compatibility - docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) + $(DOCKER) tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG) endif push: .push-$(ARCH) .push-$(ARCH): .container-$(ARCH) - $(PUSH_TOOL) docker -- push $(MULTI_ARCH_IMG):$(TAG) + $(DOCKER) push $(MULTI_ARCH_IMG):$(TAG) ifeq ($(ARCH),amd64) - $(PUSH_TOOL) docker -- push $(IMAGE):$(TAG) + $(DOCKER) push $(IMAGE):$(TAG) endif clean: - docker rmi -f $(IMAGE):$(TAG) || true - docker rmi -f $(BUILD_IMAGE) || true - docker rm -f $(BUILD_IMAGE) || true + $(DOCKER) rmi -f $(IMAGE):$(TAG) || true + $(DOCKER) rmi -f $(BUILD_IMAGE) || true + $(DOCKER) rm -f $(BUILD_IMAGE) || true rm -f $(TAR_FILE) + +release: all-container all-push + echo "done" From febd7cf3e2a158f6904bc1a2a18d520308a3ebc6 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Tue, 24 Oct 2017 17:16:24 -0300 Subject: [PATCH 2/2] Report information about errors deployments --- .travis.yml | 12 ++++++------ .travis/ingress-controller.sh | 4 ++-- .travis/nginx-slim.sh | 2 +- .travis/ubuntu-slim.sh | 2 +- Makefile | 4 ++-- images/custom-error-pages/Makefile | 5 +---- images/nginx-slim/Makefile | 4 ++-- images/ubuntu-slim/Makefile | 2 +- test/e2e/up.sh | 31 ++++++++++++++++++++++++------ 9 files changed, 41 insertions(+), 25 deletions(-) diff --git a/.travis.yml b/.travis.yml index 31a30b6c8..810107d56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ sudo: required services: -- docker + - docker language: go @@ -9,21 +9,21 @@ notifications: email: true go: -- 1.9 + - 1.9 go_import_path: k8s.io/ingress-nginx -# New secure variables can be added using travis encrypt -r kubernetes/ingress-nginx K=V +# New secure variables can be added using travis encrypt -r kubernetes/ingress-nginx --add K=V env: global: - CHANGE_MINIKUBE_NONE_USER=true - KUBERNETES_VERSION=v1.7.5 - DOCKER=docker - - secure: hCBTA21Q3XoAaVn+3qCkEcBxb5ob0DfDtF3XtgqkV6tHN76fPvuB0eko687nkumkIJsLmSBKjS1v2V/aW+syqj37OpaNrZ8NacpLi3Xso9DOQ/eI//NC2dkY0Yb002ca3A1FWG4urbKnqe1ecPNH981XIMjLr9iIRCtJlNtlUDnCuOLYnfbieXBYGN7EoknGuPFF48V2slxTfH6GkIWlKgtGsyuoKPahwOBuqeGEZ+auXBPvaFcW/vNqMh0kepPrOG7dPyRJvcDw2zvLX6NEYTtMJSRed8ZxVqpS+beg6xTTd84TRan8EWVnBsshfJCjKPAlfBCijDJDEBnqo2ZOwmt2i092kuLfvTrJm+leX6fcH67DczYV/UGzxTyZwyKLnlvi9ppxVpLnQujF/ZRhZ+Q9JvIGUu2/fa8+maa8UWyxZjFiiY0fnOzR5haJOvuD8LJZr4ceE+FacZDmMqk2tQdAo8V68ClyOPAkWx77XJ20exUDvfdu6kMaY+NHSmWl+jrTu/yOdmP3CveCFgdi/8v9YVeIBnMLC3EhX7qBFd0Xkqpmx6dq8fRuBALp7aUAkz/SzfZrhKFHEn9y3TLjHcNQLoVeEhpQhuiMNOJNbd8hS4Wl9cThr1VHLLwCwnoQeKzGYN1DcGmXApWwO8q1xdNeLNz7jFQq91WBdF/bncE= - - secure: hOdrI43DGag32BJ43nO+voUrqcNQ0HcLyGqYGPRHSmS+PRe2gEs//tBwJb35+Hub5QYbRBf/i9dEXltw7vuCfc2w2F42spYyp5cqXOGgWLgiEkNb5Ov/O07N1UhyCKA5FYIH4rci8CHr0mex2Z3xhP5M6w7uWfAE55Ia8DLpSBEEKao2UjQMEImCWyjyP8zlxFKCP68Ni1aqyORGExcubjhrUrilQv4nHyqGevmKmPh8BJ8bU9OxCk0FQ95b+31udDgK8Acr2BDihqp7VgSvaCQKR9pwHQQk09Bl7UqFx7/IANaUYzxAWlp6LNYowjfz7QzzKx4XYKKWX/AbrLz5j7wQkAxK2ol/pEFtcydJNrGLr4zmfHmU6m3971IUx1HyfoZ/Ezw88l/UmD4rVZ7r5j9WS7yVgYZOLiNAp8SiRzAS+RVIrDc7p6Cr4llVCw3iR3h7huQl7yp3QpOMFgvFDKVJukpVm8VbUZONA9gdo8Sq4RUnunIeGem8H71KU4b3bIhmVGqr1/TEQMKmnozsFWVgsXvykFz4gF1HfPQ3T5TdC5z6hYBkeHVcjLUCwejrYbr9RR7PvNPP+e+2rqkRYBg1eboyn6Gdz4kgFBxeJhJiiYLH/Mmr+8qIvrxI+6jJJrsAkddK3Ei+l6cc6xdyDSp5Wt6Q+i4llZojDVb0yFI= + - secure: LIS2XpZufWTcJ53jiRsSZy2Gi1EUJ1XmLg7z3f2ZHeMnyG2Jhk3GW4vod1FNru+PY4PWgddLdCdIl+jqOYXndFlbdAWF3/Oy5fEkYLXdYV7tdlHcPWDkqNFrfiyZ4guChN+b2Nk6FqU7o5fsZAIR7VAbgqNRF5XMo9Mhn/vhDCQRcnbXy7uq7JTrYUkqDbQoyYvT6b480GCY5gags1zp/xZfPDNZEe936o8i5IPTyiykRyNOXN/AH6kd3pR5e1xYgcvJ9KpSVPghcwFE7kJ4fOVMRhRG5ML+IyML+xD0jX43EMNoqRKZ/HS42kIMCInFbJEcxVde7DPNBZ7Y3GAqh7HO6qrE70Dn3ha6DID6zCoH2ArW39BxG4zempjn2VxYoMRGREyZszWQb++dwGoHmo5FHt6zvIrYBG0dA0H8ja9VkZkjFwtYTGHU1ooPzUfJK4O4VBayV8LqZibyZQR+GrmyQc0aagUY7J/fe4A2PJyI4DbkeZ7GX1ELj0ciDz4urQSzUc8l/T3aU3X+FuJItjgYtMLPmqcjA5uifDCtutE8Z9L2gSpanqUdvLSOozuxPho/KNl+2YlF7fXqPW3LnRf5mHD+NbOff306pvKlHJOb2Vmth+HBQ1XDzt/Cy5+sfwS3E0Vmh6UTq/NtkUXxwH10BDMF7FMVlQ4zdHQvyZ0= + - secure: rKDoy9IYYYy0fYBs4+9mwuBVq/TcxfFwMfE0ywYWhUUdgzrUYSJAwpoe/96EQ4YmESUefwC2nDNq4G3XzJKYOWf83PaIveb9Z//zmMrCQXjDuDBDLpwV3sXSh7evXiVDohJz4ogBCeMRUCMKYsyKBM9yWfa/iu+yI92dbphpK9peOKW6yBc0uspJlln4swN3GS2WT9LVuPY2Azv9U2UqrXufOPDKG/qEb/Vrn4yZ2lR/50r2k45e9nSvDoByvr10V8ubM5Zc0iP0vBuAUVRdByv6N53Q4gaBGapY6SxhIjIPC/h0rNnuT9EXp7MWaPT5FmBxLt9wnyleT9QhZJnFyaBYqFgcz/DKifYQkryY4M5dLMo/Rt3yATyAy8Y0df1TOoV2dKdqwOOwQ8bXB1wDfyrGxmQj9HY4Ffnphx3wPE1a+Sjuh+S5Epm7XJbPx5pZJqNO2hd4sTbk0Xp3gpPbihny2r/jtNwHl0wpFCfOM68RNrsVRlIwG3UhzbZvblbQ/M/mmWCdgzINjt07I2SGCJxfKG0e98Q49SKUoDoOgQTTRDqTC9IgOEDxyfAkT0Vr6BtlP88Nsgnf6kmboyigBrRAiaDQGTxn3SP6LnQI3CeopaRDYvFZe/rTwPXE9XlKoTn9FTWnAqF3MuWaLslDcDKYEh7OaYJjF01piu6g4Nc= after_success: -- ".travis/publish.sh" + - .travis/publish.sh jobs: include: diff --git a/.travis/ingress-controller.sh b/.travis/ingress-controller.sh index 0ac8a01b8..d32d840b4 100755 --- a/.travis/ingress-controller.sh +++ b/.travis/ingress-controller.sh @@ -20,10 +20,10 @@ source $DIR/common.sh IMAGE=$(make -s -C $DIR/../ image-info) -if docker_tag_exists "aledbf/nginx-ingress-controller" $(echo $IMAGE | jq .tag); then +if docker_tag_exists "kubernetes-ingress-controller/nginx-ingress-controller" $(echo $IMAGE | jq .tag); then echo "Image already published" exit 0 fi -echo "building aledbf/nginx-ingress-controller image..." +echo "building kubernetes-ingress-controller/nginx-ingress-controller image..." make -C $DIR/../ release diff --git a/.travis/nginx-slim.sh b/.travis/nginx-slim.sh index fc8c6aad9..a4d809469 100755 --- a/.travis/nginx-slim.sh +++ b/.travis/nginx-slim.sh @@ -20,7 +20,7 @@ source $DIR/common.sh IMAGE=$(make -s -C $DIR/../images/nginx-slim image-info) -if docker_tag_exists "aledbf/nginx-slim" $(echo $IMAGE | jq .tag); then +if docker_tag_exists "kubernetes-ingress-controller/nginx-slim" $(echo $IMAGE | jq .tag); then echo "Image already published" exit 0 fi diff --git a/.travis/ubuntu-slim.sh b/.travis/ubuntu-slim.sh index 82f1afe56..abd9b7855 100755 --- a/.travis/ubuntu-slim.sh +++ b/.travis/ubuntu-slim.sh @@ -20,7 +20,7 @@ source $DIR/common.sh IMAGE=$(make -s -C $DIR/../images/ubuntu-slim image-info) -if docker_tag_exists "aledbf/ubuntu-slim" $(echo $IMAGE | jq .tag); then +if docker_tag_exists "kubernetes-ingress-controller/ubuntu-slim" $(echo $IMAGE | jq .tag); then echo "Image already published" exit 0 fi diff --git a/Makefile b/Makefile index 5a61a50d1..3dcac846c 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ BUILDTAGS= # Use the 0.0 tag for testing, it shouldn't clobber any release builds TAG?=0.9.0-beta.15 -REGISTRY?=quay.io/aledbf +REGISTRY?=quay.io/kubernetes-ingress-controller GOOS?=linux DOCKER?=gcloud docker -- SED_I?=sed -i @@ -49,7 +49,7 @@ IMAGE = $(REGISTRY)/$(IMGNAME) MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) # Set default base image dynamically for each arch -BASEIMAGE?=quay.io/aledbf/nginx-slim-$(ARCH):0.27 +BASEIMAGE?=quay.io/kubernetes-ingress-controller/nginx-slim-$(ARCH):0.27 ifeq ($(ARCH),arm) QEMUARCH=arm diff --git a/images/custom-error-pages/Makefile b/images/custom-error-pages/Makefile index 96b3d3479..11be00530 100644 --- a/images/custom-error-pages/Makefile +++ b/images/custom-error-pages/Makefile @@ -4,7 +4,7 @@ BUILDTAGS= # Use the 0.0 tag for testing, it shouldn't clobber any release builds TAG?=0.1 -REGISTRY?=aledbf +REGISTRY?=quay.io/kubernetes-ingress-controller GOOS?=linux DOCKER?=gcloud docker -- SED_I?=sed -i @@ -47,9 +47,6 @@ ifeq ($(ARCH),ppc64le) QEMUARCH=ppc64le GOARCH=ppc64le endif -#ifeq ($(ARCH),s390x) -# QEMUARCH=s390x -#endif TEMP_DIR := $(shell mktemp -d) diff --git a/images/nginx-slim/Makefile b/images/nginx-slim/Makefile index 426c78dfd..ea4949858 100644 --- a/images/nginx-slim/Makefile +++ b/images/nginx-slim/Makefile @@ -14,7 +14,7 @@ # 0.0.0 shouldn't clobber any released builds TAG ?= 0.27 -REGISTRY ?= quay.io/aledbf +REGISTRY ?= quay.io/kubernetes-ingress-controller ARCH ?= $(shell go env GOARCH) DOCKER ?= gcloud docker -- @@ -33,7 +33,7 @@ IMAGE = $(REGISTRY)/$(IMGNAME) MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) # Set default base image dynamically for each arch -BASEIMAGE?=quay.io/aledbf/ubuntu-slim-$(ARCH):0.14 +BASEIMAGE?=quay.io/kubernetes-ingress-controller/ubuntu-slim-$(ARCH):0.14 ifeq ($(ARCH),arm) QEMUARCH=arm diff --git a/images/ubuntu-slim/Makefile b/images/ubuntu-slim/Makefile index 0568f28c2..22d0d5812 100755 --- a/images/ubuntu-slim/Makefile +++ b/images/ubuntu-slim/Makefile @@ -13,7 +13,7 @@ # limitations under the License. TAG ?= 0.14 -REGISTRY = quay.io/aledbf +REGISTRY = quay.io/kubernetes-ingress-controller ARCH ?= $(shell go env GOARCH) ALL_ARCH = amd64 arm arm64 ppc64le diff --git a/test/e2e/up.sh b/test/e2e/up.sh index 70526316b..8bb9946ac 100755 --- a/test/e2e/up.sh +++ b/test/e2e/up.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' +export JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' echo "downloading kubectl..." curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$KUBERNETES_VERSION/bin/linux/amd64/kubectl && \ @@ -50,12 +50,31 @@ kubectl set image \ deployments \ --namespace ingress-nginx \ --selector app=ingress-nginx \ - nginx-ingress-controller=gcr.io/google_containers/nginx-ingress-controller:test + nginx-ingress-controller=quay.io/kubernetes-ingress-controller/nginx-ingress-controller:test sleep 5 echo "waiting NGINX ingress pod..." -until kubectl get pods -n ingress-nginx -l app=ingress-nginx -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; -do - sleep 1; -done + +function waitForPod() { + until kubectl get pods -n ingress-nginx -l app=ingress-nginx -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; + do + sleep 1; + done +} + +export -f waitForPod + +timeout 10s bash -c waitForPod + +if kubectl get pods -n ingress-nginx -l app=ingress-nginx -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; +then + echo "Kubernetes deployments started" +else + echo "Kubernetes deployments with issues:" + kubectl get pods -n ingress-nginx + + echo "Reason:" + kubectl describe pods -n ingress-nginx + exit 1 +fi