Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add build-and-push-images.sh script #693

Merged
merged 1 commit into from
Sep 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ KODATA = \
cmd/webhook/kodata/refs
CODECOVERAGE_OUT = $(PROJECT_DIR)/coverprofile.out
GITHUB_REPO_FULL_NAME = "aws/aws-node-termination-handler"
ECR_PUBLIC_REGISTRY ?= "public.ecr.aws/aws-ec2"
ECR_PUBLIC_REPOSITORY_ROOT = "aws-node-termination-handler-2"

# Image URL to use all building/pushing image targets
IMG ?= controller:latest
Expand Down Expand Up @@ -125,6 +127,10 @@ delete: ## Delete controller from current kubernetes cluster.

##@ Release

.PHONY: build-and-push-images
build-and-push-images: $(KO) $(KODATA) ## Build controller and webhook images and push to ECR public repository.
@PATH="$(BIN_DIR):$(PATH)" $(PROJECT_DIR)/scripts/build-and-push-images.sh -r "$(ECR_PUBLIC_REGISTRY)/$(ECR_PUBLIC_REPOSITORY_ROOT)"

.PHONY: create-release-prep-pr
create-release-prep-pr: $(GUM) ## Update version numbers in documents and open a PR.
@PATH="$(BIN_DIR):$(PATH)" $(PROJECT_DIR)/scripts/prepare-for-release.sh
Expand All @@ -141,3 +147,5 @@ latest-release-tag: ## Get tag of most recent release.
repo-full-name: ## Get the full name of the GitHub repository for Node Termination Handler.
@echo "$(GITHUB_REPO_FULL_NAME)"

.PHONY: version
version: latest-release-tag ## Get the most recent release version.
71 changes: 71 additions & 0 deletions scripts/build-and-push-images.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash

set -euo pipefail

repo_root_path="$(cd "$(dirname "$0")"; cd ..; pwd -P)"
makefile_path="${repo_root_path}/Makefile"

if ! command -v ko >/dev/null; then
echo "error: required executable 'ko' not found" >&2
exit 1
fi

version="$(make -s -f "${makefile_path}" version)"
platforms="linux/amd64"
image_repository="${KO_DOCKER_REPO}"
snay2 marked this conversation as resolved.
Show resolved Hide resolved
goproxy="direct|https://proxy.golang.org"

usage=$(cat << EOM
usage: $(basename $0) -h | [-p PLATFORMS] [-r REPOSITORY] [-v VERSION]

Build and push Docker images for each platform.

Optional:
-h Display this help message then exit.
-g GOPROXY See documentation in "go help environment". Defaults to "${goproxy}".
-p PLATFORMS Comma separated list of OS and Arch identifiers, e.g. "linux/amd64,linux/arm64". Defaults to "${platforms}".
-r REPOSITORY Image repository to push the built images. Defaults to "${image_repository}".
-v VERSION Version to include in tag of docker image. Defaults "${version}".

EOM
)

while getopts "g:p:r:v:h" opt; do
case "${opt}" in
g ) goproxy="${OPTARG}"
;;
p ) platforms="${OPTARG}"
;;
r ) image_repository="${OPTARG}"
;;
v ) version="${OPTARG}"
;;
h ) echo "${usage}"
exit 0
;;
\?) echo "${usage}" >&2
exit 1
;;
esac
done

assert_not_empty() {
if [[ -z "${!1}" ]]; then
echo "error: missing argument ${1}" >&2
echo "${usage}" >&2
exit 1
fi
}

assert_not_empty goproxy
assert_not_empty platforms
assert_not_empty image_repository
assert_not_empty version

for app in "controller" "webhook"; do
snay2 marked this conversation as resolved.
Show resolved Hide resolved
GOPROXY="${goproxy}" KO_DOCKER_REPO="${image_repository}" ko publish \
--base-import-paths \
--tags "${version}" \
--platform "${platforms}" \
"github.com/aws/aws-node-termination-handler/cmd/${app}"
done