diff --git a/images/echo/Makefile b/images/echo/Makefile index 23be85f98..9f5ad0310 100644 --- a/images/echo/Makefile +++ b/images/echo/Makefile @@ -1,4 +1,4 @@ -# Copyright 2020 The Kubernetes Authors. +# Copyright 2020 The Kubernetes Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,18 +12,47 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Docker image for e2e testing. +# set default shell +SHELL=/bin/bash -o pipefail -o errexit -# Use the 0.0 tag for testing, it shouldn't clobber any release builds -TAG ?= 0.0 +DIR:=$(strip $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))) +INIT_BUILDX=$(DIR)/../../hack/init-buildx.sh -REGISTRY ?= ingress-controller +TAG ?=v$(shell date +%m%d%Y)-$(shell git rev-parse --short HEAD) +REGISTRY ?= local -IMAGE = $(REGISTRY)/echo +IMAGE = $(REGISTRY)/e2e-test-echo -image: - docker build \ +# required to enable buildx +export DOCKER_CLI_EXPERIMENTAL=enabled + +# build with buildx +PLATFORMS?=linux/amd64 +OUTPUT= +PROGRESS=plain + +build: ensure-buildx + docker buildx build \ + --platform=${PLATFORMS} $(OUTPUT) \ + --progress=$(PROGRESS) \ + --pull \ + --build-arg BASE_IMAGE=gcr.io/k8s-staging-ingress-nginx/nginx@sha256:35da1d3e00f5e763e59cb59159bf88ba0f0b6e8835885ac9d8b63029a478dba7 \ + --build-arg LUAROCKS_VERSION=3.3.1 \ + --build-arg LUAROCKS_SHA=837481e408f7c06b59befe7ec194537c657687d624894bca7f79034302141a34 \ -t $(IMAGE):$(TAG) rootfs -clean: - docker rmi -f $(IMAGE):$(TAG) || true +# push the cross built image +push: OUTPUT=--push +push: build + +# enable buildx +ensure-buildx: +# this is required for cloudbuild +ifeq ("$(wildcard $(INIT_BUILDX))","") + @curl -sSL https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/hack/init-buildx.sh | bash +else + @exec $(INIT_BUILDX) +endif + @echo "done" + +.PHONY: build push ensure-buildx diff --git a/images/echo/cloudbuild.yaml b/images/echo/cloudbuild.yaml new file mode 100644 index 000000000..2a8f7da65 --- /dev/null +++ b/images/echo/cloudbuild.yaml @@ -0,0 +1,22 @@ +timeout: 600s +options: + substitution_option: ALLOW_LOOSE +steps: + - name: gcr.io/k8s-testimages/gcb-docker-gcloud:v20200619-68869a4 + entrypoint: bash + env: + - DOCKER_CLI_EXPERIMENTAL=enabled + - TAG=$_GIT_TAG + - BASE_REF=$_PULL_BASE_REF + - REGISTRY=gcr.io/k8s-staging-ingress-nginx + # default cloudbuild has HOME=/builder/home and docker buildx is in /root/.docker/cli-plugins/docker-buildx + # set the home to /root explicitly to if using docker buildx + - HOME=/root + args: + - -c + - | + gcloud auth configure-docker \ + && make push +substitutions: + _GIT_TAG: "12345" + _PULL_BASE_REF: "master" diff --git a/images/echo/rootfs/Dockerfile b/images/echo/rootfs/Dockerfile index 392da697c..4c9b6ab55 100644 --- a/images/echo/rootfs/Dockerfile +++ b/images/echo/rootfs/Dockerfile @@ -1,13 +1,19 @@ -FROM quay.io/kubernetes-ingress-controller/nginx:e3c49c52f4b74fe47ad65d6f3266a02e8b6b622f +ARG BASE_IMAGE + +FROM ${BASE_IMAGE} RUN apk add -U perl curl make unzip -RUN wget -O /tmp/luarocks.tgz https://github.com/luarocks/luarocks/archive/v3.3.1.tar.gz \ +ARG LUAROCKS_VERSION +ARG LUAROCKS_SHA + +RUN wget -O /tmp/luarocks.tgz \ + https://github.com/luarocks/luarocks/archive/v${LUAROCKS_VERSION}.tar.gz \ + && echo "${LUAROCKS_SHA} */tmp/luarocks.tgz" | sha256sum -c - \ && tar -C /tmp -xzf /tmp/luarocks.tgz \ && cd /tmp/luarocks* \ && ./configure \ - && make install \ - && rm -rf /tmp/* + && make install RUN luarocks install lua-resty-template