Skip to content
Open
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
25 changes: 16 additions & 9 deletions .github/workflows/test-install-kustomize.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,21 @@ on:
permissions:
contents: read

env:
expected_kustomize_version: v5.8.1

jobs:
test-install-kustomize:
name: Test install_kustomize.sh (${{ matrix.release-file }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
release-file:
- hack/test-files/minimized-release.json
- hack/test-files/unminimized-release.json
include:
- release-file: hack/test-files/minimized-release.json
expected-version: v5.8.1
- release-file: hack/test-files/unminimized-release.json
expected-version: v5.8.1
- release-file: hack/test-files/legacy-release.json
requested-version: 2.0.3
expected-version: KustomizeVersion:2.0.3

steps:
- name: Check out code
Expand All @@ -39,12 +41,17 @@ jobs:
set -euo pipefail
tmp_dir="$(mktemp -d)"

./hack/install_kustomize.sh "$tmp_dir"
if [ -n "${requested_kustomize_version}" ]; then
./hack/install_kustomize.sh "${requested_kustomize_version}" "$tmp_dir"
else
./hack/install_kustomize.sh "$tmp_dir"
fi

actual_kustomize_version=$("$tmp_dir/kustomize" version)

echo "Kustomize version: ${actual_kustomize_version}"
[ "${actual_kustomize_version}" = "${expected_kustomize_version}" ] || (echo "Unexpected Kustomize version: Expected ${expected_kustomize_version}, got ${actual_kustomize_version}" && exit 1)
[[ "${actual_kustomize_version}" == *"${expected_kustomize_version}"* ]] || (echo "Unexpected Kustomize version: Expected ${expected_kustomize_version}, got ${actual_kustomize_version}" && exit 1)
env:
expected_kustomize_version: ${{ env.expected_kustomize_version }}
requested_kustomize_version: ${{ matrix.requested-version }}
expected_kustomize_version: ${{ matrix.expected-version }}
releases_file: ${{ github.workspace }}/${{ matrix.release-file }}
34 changes: 31 additions & 3 deletions hack/install_kustomize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,33 @@ unset CDPATH

where=$PWD

function is_legacy_release {
local requested=$1
# Kustomize releases published before the kustomize/ tag prefix was introduced.
local unprefixed_tags=(
v1.0.0 v1.0.1 v1.0.2 v1.0.3 v1.0.4 v1.0.5 v1.0.6 v1.0.7 v1.0.8 v1.0.9 v1.0.10 v1.0.11
v2.0.0 v2.0.1 v2.0.2 v2.0.3 v2.1.0
v3.0.0 v3.0.1 v3.0.2 v3.0.3 v3.1.0 v3.2.0
)

local tag
for tag in "${unprefixed_tags[@]}"; do
if [[ "$tag" == "$requested" ]]; then
return 0
fi
done
return 1
}

release_url=https://api.github.com/repos/kubernetes-sigs/kustomize/releases
if [ -n "$1" ]; then
if [[ "$1" =~ ^[0-9]+(\.[0-9]+){2}$ ]]; then
version=v$1
release_url=${release_url}/tags/kustomize%2F$version
if is_legacy_release "$version"; then
release_url=${release_url}/tags/$version
else
release_url=${release_url}/tags/kustomize%2F$version
fi
elif [ -n "$2" ]; then
echo "The first argument should be the requested version."
exit 1
Expand Down Expand Up @@ -171,9 +193,15 @@ if [[ -z "$RELEASE_URL" ]]; then
exit 1
fi

curl -sLO "$RELEASE_URL"
download_file="${RELEASE_URL##*/}"
curl -sL "$RELEASE_URL" -o "$download_file"

tar xzf ./kustomize_v*_${opsys}_${arch}.tar.gz
if [[ "$download_file" == *.tar.gz ]]; then
tar xzf "$download_file"
else
mv "$download_file" kustomize
chmod +x kustomize
fi

cp ./kustomize "$where"

Expand Down
7 changes: 7 additions & 0 deletions hack/test-files/legacy-release.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"assets": [
{
"browser_download_url": "https://github.com/kubernetes-sigs/kustomize/releases/download/v2.0.3/kustomize_2.0.3_linux_amd64"
}
]
}
Loading