...
1#!/usr/bin/env bash
2set -eu
3
4# This script assumes you are building and pushing from GitHub Actions, using
5# Edge private runners (specifically that authentication keys are already being
6# managed)
7
8PUSH_CONTAINER=${PUSH_CONTAINER:-false}
9GCP_CONTAINER_REGISTRY="${GCP_CONTAINER_REGISTRY:-us-east1-docker.pkg.dev}"
10GCP_CONTAINER_REGISTRY_PROJECT="${GCP_CONTAINER_REGISTRY_PROJECT:-ret-edge-pltf-infra}"
11GCP_CONTAINER_REPO=${GCP_CONTAINER_REPO:-workloads}
12SKIP_UPDATE_MANIFEST=${SKIP_UPDATE_MANIFEST:-false}
13
14# shellcheck disable=SC2206
15t=(${GITHUB_REPOSITORY//\// })
16REPO=${t[1]}
17
18SEMVER="$(cat .version)"
19TIMESTAMP="${SOURCE_DATE_EPOCH:-$(git log -1 --format=%ct)}"
20BUILD_VERSION="$SEMVER-$TIMESTAMP"
21
22# export variables so they are available to update-manifests.sh
23export IMAGE_NAME="${IMAGE_NAME:-$REPO}"
24export TAG="$GCP_CONTAINER_REGISTRY/$GCP_CONTAINER_REGISTRY_PROJECT/$GCP_CONTAINER_REPO/$IMAGE_NAME:$BUILD_VERSION"
25export DRY_RUN=${DRY_RUN:-false}
26
27echo "running docker-build make target"
28if ! make IMG="$TAG" docker-build; then
29 echo "Build didn't succeed, aborting!"
30 exit 1
31fi
32
33if [[ "$PUSH_CONTAINER" != 'true' && "$DRY_RUN" != 'true' ]]; then
34 echo "PUSH_CONTAINER is false, skipping push"
35 exit 0
36fi
37
38echo "pushing $TAG"
39docker push "${TAG}"
40
41# Optionally run the update manifests script
42if [[ "$SKIP_UPDATE_MANIFEST" != 'true' ]]; then
43 "$(dirname "${BASH_SOURCE[0]}")/update-manifests.sh"
44fi
View as plain text