|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail -o errtrace -x |
| 3 | + |
| 4 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 5 | +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" |
| 6 | + |
| 7 | +cd "$ROOT_DIR" |
| 8 | + |
| 9 | +if [ -n "${CAPA_VERSION:-}" ]; then |
| 10 | + REF="$CAPA_VERSION" |
| 11 | +else |
| 12 | + echo "CAPA_VERSION not set, querying latest commit SHA from kubernetes-sigs/cluster-api-provider-aws main..." |
| 13 | + set +o pipefail |
| 14 | + REF=$(curl -sL "https://api.github.com/repos/kubernetes-sigs/cluster-api-provider-aws/commits/main" | awk -F '"' '/"sha"/ { print $4; exit }') |
| 15 | + set -o pipefail |
| 16 | + if [ -z "$REF" ]; then |
| 17 | + echo "Failed to determine latest CAPA commit. Set CAPA_VERSION to continue." >&2 |
| 18 | + exit 1 |
| 19 | + fi |
| 20 | + echo "Using discovered CAPA ref: $REF" |
| 21 | +fi |
| 22 | + |
| 23 | +TMPDIR=$(mktemp -d -t capa-XXXX) |
| 24 | +cleanup(){ |
| 25 | + rm -rf "$TMPDIR" |
| 26 | +} |
| 27 | +trap cleanup EXIT |
| 28 | + |
| 29 | +echo "Cloning kubernetes-sigs/cluster-api-provider-aws into $TMPDIR" |
| 30 | +git clone https://github.com/kubernetes-sigs/cluster-api-provider-aws "$TMPDIR" |
| 31 | + |
| 32 | +pushd "$TMPDIR" |
| 33 | +git fetch origin |
| 34 | +git checkout "$REF" |
| 35 | + |
| 36 | +echo "Running: make release-manifests" |
| 37 | +make release-manifests |
| 38 | + |
| 39 | +OUT_DIR="$TMPDIR/out" |
| 40 | +if [ ! -d "$OUT_DIR" ]; then |
| 41 | + echo "Expected release manifests in $OUT_DIR but directory not found" >&2 |
| 42 | + exit 1 |
| 43 | +fi |
| 44 | + |
| 45 | +DEST_DIR="$ROOT_DIR/data/data/cluster-api" |
| 46 | +echo "Contents of $OUT_DIR:" |
| 47 | +ls -la "$OUT_DIR/" |
| 48 | +echo "Contents of $DEST_DIR:" |
| 49 | +ls -la "$DEST_DIR/" |
| 50 | +echo "Copying release manifests to $DEST_DIR..." |
| 51 | +cp -r "$OUT_DIR/"* "$DEST_DIR/" |
| 52 | +popd |
| 53 | + |
| 54 | +P_MODULE_DIR="$ROOT_DIR/cluster-api/providers/aws" |
| 55 | +if [ ! -f "$P_MODULE_DIR/go.mod" ]; then |
| 56 | + echo "providers/aws/go.mod not found at $P_MODULE_DIR" >&2 |
| 57 | + exit 1 |
| 58 | +fi |
| 59 | + |
| 60 | +pushd "$P_MODULE_DIR" |
| 61 | + |
| 62 | +echo "Upgrading CAPA to commit ${REF} in providers/aws" |
| 63 | +GOFLAGS= GO111MODULE=on go get "sigs.k8s.io/cluster-api-provider-aws/v2@${REF}" |
| 64 | +echo "Running go mod tidy" |
| 65 | +GOFLAGS= GO111MODULE=on go mod tidy |
| 66 | +echo "Running go mod vendor" |
| 67 | +GOFLAGS= GO111MODULE=on go mod vendor |
| 68 | + |
| 69 | +GO_VERSION=$(grep 'require sigs.k8s.io/cluster-api-provider-aws/v2' go.mod | awk '{print $NF}') |
| 70 | +echo "Go generated pseudo-version: $GO_VERSION" |
| 71 | + |
| 72 | +echo "Reading existing replace directives from cluster-api/providers/aws/go.mod" |
| 73 | +EXISTING_REPLACES=$(grep -E '^replace ' go.mod | awk '{print $2}' || true) |
| 74 | + |
| 75 | +if [ -n "$EXISTING_REPLACES" ]; then |
| 76 | + echo "Found existing replace directives for packages:" |
| 77 | + echo "$EXISTING_REPLACES" |
| 78 | + |
| 79 | + CAPI_CORE_GOMOD="$ROOT_DIR/cluster-api/cluster-api/go.mod" |
| 80 | + if [ ! -f "$CAPI_CORE_GOMOD" ]; then |
| 81 | + echo "Warning: cluster-api/cluster-api/go.mod not found at $CAPI_CORE_GOMOD" >&2 |
| 82 | + else |
| 83 | + echo "Looking up versions in cluster-api/cluster-api/go.mod" |
| 84 | + while IFS= read -r pkg; do |
| 85 | + if [ -n "$pkg" ]; then |
| 86 | + VERSION=$(grep -E "^\s*${pkg}\s+" "$CAPI_CORE_GOMOD" | awk '{print $2}' | head -1 || true) |
| 87 | + if [ -z "$VERSION" ]; then |
| 88 | + VERSION=$(grep -E "^replace.*=>\s*${pkg}\s+" "$CAPI_CORE_GOMOD" | awk '{print $NF}' || true) |
| 89 | + fi |
| 90 | + |
| 91 | + if [ -n "$VERSION" ]; then |
| 92 | + echo "Applying replace: ${pkg} => ${pkg} ${VERSION}" |
| 93 | + go mod edit -replace="${pkg}=${pkg}@${VERSION}" |
| 94 | + else |
| 95 | + echo "Warning: Could not find version for ${pkg} in cluster-api/cluster-api/go.mod" |
| 96 | + fi |
| 97 | + fi |
| 98 | + done <<< "$EXISTING_REPLACES" |
| 99 | + fi |
| 100 | +fi |
| 101 | + |
| 102 | +echo "Running go mod vendor in cluster-api/providers/aws" |
| 103 | +GOFLAGS= GO111MODULE=on go mod vendor |
| 104 | +popd |
| 105 | + |
| 106 | +echo "Upgrading CAPA to ${GO_VERSION} in root directory" |
| 107 | +pushd "$ROOT_DIR" |
| 108 | +GOFLAGS= GO111MODULE=on go get "sigs.k8s.io/cluster-api-provider-aws/v2@${REF}" |
| 109 | + |
| 110 | +echo "Running go mod tidy" |
| 111 | +GOFLAGS= GO111MODULE=on go mod tidy |
| 112 | +echo "Running go mod vendor" |
| 113 | +GOFLAGS= GO111MODULE=on go mod vendor |
| 114 | +popd |
| 115 | + |
| 116 | +echo "Done." |
0 commit comments