From 5db8208eff4786117d8fb8c783f2cb1e47258bf6 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 11:47:11 +1100 Subject: [PATCH 01/18] feature/github-action --- .github/workflows/build.yml | 180 ++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 181 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..13651a7 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,180 @@ +name: Docker + +on: + push: + tags: ["*"] + branches: + - "main" + - "master" + schedule: + - cron: '0 5 * * 0' + pull_request: + branches: ["**"] + +env: + # Hostname of your registry + REGISTRY: docker.io + # Image repository, without hostname and tag + IMAGE_NAME: alpine/k8s + SHA: ${{ github.event.pull_request.head.sha || github.event.after }} + +jobs: + get-kubectl-versions: + runs-on: ubuntu-latest + outputs: + versions: ${{ steps.set-versions.outputs.versions }} + steps: + - name: Get versions + id: set-versions + run: | + # Get the list of all releases tags, excludes alpha, beta, rc tags + releases=$(curl -s https://api.github.com/repos/kubernetes/kubernetes/releases | jq -r '.[].tag_name | select(test("alpha|beta|rc") | not)') + + # Loop through the releases and extract the minor version number + for release in $releases; do + minor_version=$(echo $release | awk -F'.' '{print $1"."$2}') + + # Check if the minor version is already in the array of minor versions + if [[ ! " ${minor_versions[@]} " =~ " ${minor_version} " ]]; then + minor_versions+=($minor_version) + fi + done + + # Sort the unique minor versions in reverse order + sorted_minor_versions=($(echo "${minor_versions[@]}" | tr ' ' '\n' | sort -rV)) + + # Loop through the first 4 unique minor versions and get the latest version for each + for i in $(seq 0 3); do + minor_version="${sorted_minor_versions[$i]}" + latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') + latest_versions+=($latest_version) + done + + echo $latest_versions + # Convert to JSON array for matrix + echo "versions=$(echo $latest_vesions | jq -R 'split(" ")' -c)" >> $GITHUB_OUTPUT + build: + runs-on: ubuntu-latest + permissions: + pull-requests: write + + strategy: + matrix: + version: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + steps: + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Step to fetch the latest curl version + - name: Get latest curl version + id: curl-version + run: | + # export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" + + curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh + #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh + source functions.sh + + # helm latest, hold the release candidates + helm=$(curl -s https://api.github.com/repos/helm/helm/releases | jq -r '.[].tag_name | select([startswith("v"), (contains("-rc") | not)] | all)' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "helm version is $helm" + echo "HELM_VERSION=$helm" >> $GITHUB_ENV + + # kustomize latest + kustomize_release=$(curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases | jq -r '.[].tag_name | select(contains("kustomize"))' \ + | sort -rV | head -n 1) + kustomize_version=$(basename ${kustomize_release}) + echo "kustomize version is $kustomize_version" + echo "KUSTOMIZE_VERSION=$kustomize_version" >> $GITHUB_ENV + + # kubeseal latest + kubeseal_version=$(curl -s https://api.github.com/repos/bitnami-labs/sealed-secrets/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "kubeseal version is $kubeseal_version" + echo "KUBESEAL_VERSION=$kubeseal_version" >> $GITHUB_ENV + + # krew latest + krew_version=$(curl -s https://api.github.com/repos/kubernetes-sigs/krew/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "krew version is $krew_version" + echo "KREW_VERSION=$krew_version" >> $GITHUB_ENV + + # vals latest + vals_version=$(curl -s https://api.github.com/repos/helmfile/vals/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "vals version is $vals_version" + echo "VALS_VERSION=$vals_version" >> $GITHUB_ENV + + # kubeconform latest + kubeconform_version=$(curl -s https://api.github.com/repos/yannh/kubeconform/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "kubeconform version is $kubeconform_version" + echo "KUBECONFORM_VERSION=$kubeconform_version" >> $GITHUB_ENV + + # Authenticate to the container registry + - name: Authenticate to registry ${{ env.REGISTRY }} + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + labels: | + org.opencontainers.image.revision=${{ env.SHA }} + tags: | + type=edge,branch=$repo.default_branch + type=semver,pattern=v{{version}} + type=sha,prefix=,suffix=,format=short + + # Build and push Docker image with Buildx + # (don't push on PR, load instead) + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + sbom: ${{ github.event_name != 'pull_request' }} + provenance: ${{ github.event_name != 'pull_request' }} + push: ${{ github.event_name != 'pull_request' }} + load: ${{ github.event_name == 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + HELM_VERSION=${{ env.HELM_VERSION }} + KUBECTL_VERSION=${{ matrix.version }} + KUSTOMIZE_VERSION=${{ env.KUSTOMIZE_VERSION }} + KUBESEAL_VERSION=${{ env.KUBESEAL_VERSION }} + KREW_VERSION=${{ env.KREW_VERSION }} + VALS_VERSION=${{ env.VALS_VERSION }} + KUBECONFORM_VERSION=${{ env.KUBECONFORM_VERSION }} + + # - name: Checkout code + # uses: actions/checkout@v2 + + # - name: check the platform in multi-arch images + # run: | + # echo ${{ steps.meta.outputs.tags }} + # bash ./test.sh ${{ steps.meta.outputs.tags }} + + #- name: set tags + # run: | + # # install crane + # curl -LO https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz + # tar zxvf go-containerregistry_Linux_x86_64.tar.gz + # chmod +x crane + + # export VERSION=($(docker run -i --rm ${{ steps.meta.outputs.tags }} curl --version|awk '$1=$1' |awk -F "[ -]" 'NR==1{print $2}')) + # echo $VERSION + # ./crane auth login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} index.docker.io + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:latest + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:${VERSION} + # rm -f /home/runner/.docker/config.json diff --git a/.gitignore b/.gitignore index 023a70e..08602e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ release.html release.txt +jq # IDES .idea/ From 31c25158dd7b59531c86027cf6f8666d07e087a0 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 11:47:11 +1100 Subject: [PATCH 02/18] feature/github-action --- .github/workflows/build.yml | 181 ++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 182 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..289079c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,181 @@ +name: Docker + +on: + push: + tags: ["*"] + branches: + - "main" + - "master" + schedule: + - cron: '0 5 * * 0' + pull_request: + branches: ["**"] + +env: + # Hostname of your registry + REGISTRY: docker.io + # Image repository, without hostname and tag + IMAGE_NAME: alpine/k8s + SHA: ${{ github.event.pull_request.head.sha || github.event.after }} + +jobs: + get-kubectl-versions: + runs-on: ubuntu-latest + outputs: + versions: ${{ steps.set-versions.outputs.versions }} + steps: + - name: Get versions + id: set-versions + run: | + set -x + # Get the list of all releases tags, excludes alpha, beta, rc tags + releases=$(curl -s https://api.github.com/repos/kubernetes/kubernetes/releases | jq -r '.[].tag_name | select(test("alpha|beta|rc") | not)') + + # Loop through the releases and extract the minor version number + for release in $releases; do + minor_version=$(echo $release | awk -F'.' '{print $1"."$2}') + + # Check if the minor version is already in the array of minor versions + if [[ ! " ${minor_versions[@]} " =~ " ${minor_version} " ]]; then + minor_versions+=($minor_version) + fi + done + + # Sort the unique minor versions in reverse order + sorted_minor_versions=($(echo "${minor_versions[@]}" | tr ' ' '\n' | sort -rV)) + + # Loop through the first 4 unique minor versions and get the latest version for each + for i in $(seq 0 3); do + minor_version="${sorted_minor_versions[$i]}" + latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') + latest_versions+=($latest_version) + done + + echo $latest_versions + # Convert to JSON array for matrix + echo "versions=$(echo $latest_vesions | jq -R 'split(" ")' -c)" >> $GITHUB_OUTPUT + build: + runs-on: ubuntu-latest + permissions: + pull-requests: write + + strategy: + matrix: + version: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + steps: + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Step to fetch the latest curl version + - name: Get latest curl version + id: curl-version + run: | + # export CURL_OPTIONS="-sL -H \"Authorization: token ${{ secrets.API_KEY }}\"" + + curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/stable/functions.sh" -o functions.sh + #curl -H "Cache-Control: no-cache" -sL "https://raw.githubusercontent.com/alpine-docker/multi-arch-docker-images/refs/heads/master/functions.sh" -o functions.sh + source functions.sh + + # helm latest, hold the release candidates + helm=$(curl -s https://api.github.com/repos/helm/helm/releases | jq -r '.[].tag_name | select([startswith("v"), (contains("-rc") | not)] | all)' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "helm version is $helm" + echo "HELM_VERSION=$helm" >> $GITHUB_ENV + + # kustomize latest + kustomize_release=$(curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases | jq -r '.[].tag_name | select(contains("kustomize"))' \ + | sort -rV | head -n 1) + kustomize_version=$(basename ${kustomize_release}) + echo "kustomize version is $kustomize_version" + echo "KUSTOMIZE_VERSION=$kustomize_version" >> $GITHUB_ENV + + # kubeseal latest + kubeseal_version=$(curl -s https://api.github.com/repos/bitnami-labs/sealed-secrets/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "kubeseal version is $kubeseal_version" + echo "KUBESEAL_VERSION=$kubeseal_version" >> $GITHUB_ENV + + # krew latest + krew_version=$(curl -s https://api.github.com/repos/kubernetes-sigs/krew/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "krew version is $krew_version" + echo "KREW_VERSION=$krew_version" >> $GITHUB_ENV + + # vals latest + vals_version=$(curl -s https://api.github.com/repos/helmfile/vals/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "vals version is $vals_version" + echo "VALS_VERSION=$vals_version" >> $GITHUB_ENV + + # kubeconform latest + kubeconform_version=$(curl -s https://api.github.com/repos/yannh/kubeconform/releases | jq -r '.[].tag_name | select(startswith("v"))' \ + | sort -rV | head -n 1 |sed 's/v//') + echo "kubeconform version is $kubeconform_version" + echo "KUBECONFORM_VERSION=$kubeconform_version" >> $GITHUB_ENV + + # Authenticate to the container registry + - name: Authenticate to registry ${{ env.REGISTRY }} + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + labels: | + org.opencontainers.image.revision=${{ env.SHA }} + tags: | + type=edge,branch=$repo.default_branch + type=semver,pattern=v{{version}} + type=sha,prefix=,suffix=,format=short + + # Build and push Docker image with Buildx + # (don't push on PR, load instead) + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + sbom: ${{ github.event_name != 'pull_request' }} + provenance: ${{ github.event_name != 'pull_request' }} + push: ${{ github.event_name != 'pull_request' }} + load: ${{ github.event_name == 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + HELM_VERSION=${{ env.HELM_VERSION }} + KUBECTL_VERSION=${{ matrix.version }} + KUSTOMIZE_VERSION=${{ env.KUSTOMIZE_VERSION }} + KUBESEAL_VERSION=${{ env.KUBESEAL_VERSION }} + KREW_VERSION=${{ env.KREW_VERSION }} + VALS_VERSION=${{ env.VALS_VERSION }} + KUBECONFORM_VERSION=${{ env.KUBECONFORM_VERSION }} + + # - name: Checkout code + # uses: actions/checkout@v2 + + # - name: check the platform in multi-arch images + # run: | + # echo ${{ steps.meta.outputs.tags }} + # bash ./test.sh ${{ steps.meta.outputs.tags }} + + #- name: set tags + # run: | + # # install crane + # curl -LO https://github.com/google/go-containerregistry/releases/download/v0.20.2/go-containerregistry_Linux_x86_64.tar.gz + # tar zxvf go-containerregistry_Linux_x86_64.tar.gz + # chmod +x crane + + # export VERSION=($(docker run -i --rm ${{ steps.meta.outputs.tags }} curl --version|awk '$1=$1' |awk -F "[ -]" 'NR==1{print $2}')) + # echo $VERSION + # ./crane auth login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} index.docker.io + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:latest + # ./crane copy ${{ steps.meta.outputs.tags }} ${{ env.IMAGE_NAME }}:${VERSION} + # rm -f /home/runner/.docker/config.json diff --git a/.gitignore b/.gitignore index 023a70e..08602e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ release.html release.txt +jq # IDES .idea/ From 0edb8f8f3c74d907ec4939f7d3943dec458d0993 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 11:56:38 +1100 Subject: [PATCH 03/18] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 289079c..bafa01f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,9 +51,9 @@ jobs: latest_versions+=($latest_version) done - echo $latest_versions + echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo $latest_vesions | jq -R 'split(" ")' -c)" >> $GITHUB_OUTPUT + echo "versions=$(echo ${latest_versions[@]} | jq -R 'split(" ")' -c)" >> $GITHUB_OUTPUT build: runs-on: ubuntu-latest permissions: From bcb86463487ad5246dfa8a87f2e820e2151ddf0a Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 12:09:26 +1100 Subject: [PATCH 04/18] feature/github-action --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bafa01f..70824f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,7 +53,7 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo ${latest_versions[@]} | jq -R 'split(" ")' -c)" >> $GITHUB_OUTPUT + echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_OUTPUT build: runs-on: ubuntu-latest permissions: From 76081da830cabd85c150381374798c41de2d4510 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 12:12:47 +1100 Subject: [PATCH 05/18] feature/github-action --- .github/workflows/build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 70824f1..4c141fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,6 @@ jobs: - name: Get versions id: set-versions run: | - set -x # Get the list of all releases tags, excludes alpha, beta, rc tags releases=$(curl -s https://api.github.com/repos/kubernetes/kubernetes/releases | jq -r '.[].tag_name | select(test("alpha|beta|rc") | not)') @@ -53,15 +52,14 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_OUTPUT + echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_ENV build: runs-on: ubuntu-latest permissions: pull-requests: write - strategy: matrix: - version: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + version: ${{ env.versions }} steps: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3 From 2c5bfcb5662edbe6bfe3574334f751b1faf67eff Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 12:13:58 +1100 Subject: [PATCH 06/18] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c141fd..f475ccb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,14 +52,14 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_ENV + echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_OUTPUT build: runs-on: ubuntu-latest permissions: pull-requests: write strategy: matrix: - version: ${{ env.versions }} + version: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} steps: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3 From 1b527efaacfebe11d5fb873d6e103be725713a15 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 12:26:25 +1100 Subject: [PATCH 07/18] feature/github-action --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f475ccb..d5bb915 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,8 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo ${latest_versions[@]})" >> $GITHUB_OUTPUT + echo "versions=$(echo ${latest_versions[@]} | jq -R 'split(" ")' -c )" >> $GITHUB_OUTPUT + echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest permissions: From e2883a8adfafb3ebbba450b14ed4fb981f910140 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 12:33:57 +1100 Subject: [PATCH 08/18] feature/github-action --- .github/workflows/build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5bb915..b9f6cbd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,15 +52,16 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - echo "versions=$(echo ${latest_versions[@]} | jq -R 'split(" ")' -c )" >> $GITHUB_OUTPUT + TARGETS=$(echo ${latest_versions[@]}) + echo "versions=$(jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest + needs: get-kubectl-versions permissions: pull-requests: write strategy: - matrix: - version: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + matrix: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} steps: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3 @@ -150,7 +151,7 @@ jobs: cache-to: type=gha,mode=max build-args: | HELM_VERSION=${{ env.HELM_VERSION }} - KUBECTL_VERSION=${{ matrix.version }} + KUBECTL_VERSION=${{ matrix.target }} KUSTOMIZE_VERSION=${{ env.KUSTOMIZE_VERSION }} KUBESEAL_VERSION=${{ env.KUBESEAL_VERSION }} KREW_VERSION=${{ env.KREW_VERSION }} From 563fbb9325c5b1ec983f9ea5c91b1fbd51b6c623 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:29:41 +1100 Subject: [PATCH 09/18] feature/github-action --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b9f6cbd..7a6f373 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,6 +27,12 @@ jobs: - name: Get versions id: set-versions run: | + # jq 1.6 + DEBIAN_FRONTEND=noninteractive + #sudo apt-get update && sudo apt-get -q -y install jq + curl -sL https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 -o jq + chmod +x jq + # Get the list of all releases tags, excludes alpha, beta, rc tags releases=$(curl -s https://api.github.com/repos/kubernetes/kubernetes/releases | jq -r '.[].tag_name | select(test("alpha|beta|rc") | not)') @@ -53,7 +59,7 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix TARGETS=$(echo ${latest_versions[@]}) - echo "versions=$(jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT + echo "versions=$(./jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From e6dd953387b1754e29f110f3e15ce7e7d94744c1 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:37:21 +1100 Subject: [PATCH 10/18] feature/github-action --- .github/workflows/build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7a6f373..3fe4d08 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,12 +53,11 @@ jobs: for i in $(seq 0 3); do minor_version="${sorted_minor_versions[$i]}" latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') - latest_versions+=($latest_version) + TARGETS+=($latest_version) done - echo ${latest_versions[@]} + echo $TARGETS # Convert to JSON array for matrix - TARGETS=$(echo ${latest_versions[@]}) echo "versions=$(./jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: From 420784dc9737c71e9b4e9bcc4849887a4f8b3a1c Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:40:11 +1100 Subject: [PATCH 11/18] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3fe4d08..8b9294b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,9 +56,9 @@ jobs: TARGETS+=($latest_version) done - echo $TARGETS + echo $TARGETS[@] # Convert to JSON array for matrix - echo "versions=$(./jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT + echo "versions=$(./jq -cn --argjson environments "$TARGETS[@]" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From 53a4e98470fb261ddf500f5e70637f9a2dfb1a2b Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:40:59 +1100 Subject: [PATCH 12/18] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b9294b..3b460ed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,9 +56,9 @@ jobs: TARGETS+=($latest_version) done - echo $TARGETS[@] + echo ${TARGETS[@]} # Convert to JSON array for matrix - echo "versions=$(./jq -cn --argjson environments "$TARGETS[@]" '{target: $environments}')" >> $GITHUB_OUTPUT + echo "versions=$(./jq -cn --argjson environments "${TARGETS[@]}" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From e721813e7017ee70d336e77cc72d08d585590142 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:44:25 +1100 Subject: [PATCH 13/18] feature/github-action --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b460ed..0d2fb65 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,7 +58,7 @@ jobs: echo ${TARGETS[@]} # Convert to JSON array for matrix - echo "versions=$(./jq -cn --argjson environments "${TARGETS[@]}" '{target: $environments}')" >> $GITHUB_OUTPUT + echo "versions=$(./jq -cn --arg environments "${TARGETS[@]}" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From f8efcbc39ec852371e122b989ed60ecbe9eefc15 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:47:25 +1100 Subject: [PATCH 14/18] feature/github-action --- .github/workflows/build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d2fb65..6573978 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,12 +53,13 @@ jobs: for i in $(seq 0 3); do minor_version="${sorted_minor_versions[$i]}" latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') - TARGETS+=($latest_version) + latest_versions=($latest_version) done - echo ${TARGETS[@]} + echo ${last_versions[@]} # Convert to JSON array for matrix - echo "versions=$(./jq -cn --arg environments "${TARGETS[@]}" '{target: $environments}')" >> $GITHUB_OUTPUT + TARGETS=$(echo ${latest_versions[@]}) + echo "versions=$(./jq -cn --arg environments "${TARGETS}" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From d906171bca000b1e34989c8eddf8d77e697571db Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:50:10 +1100 Subject: [PATCH 15/18] feature/github-action --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6573978..34f74da 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,7 +56,7 @@ jobs: latest_versions=($latest_version) done - echo ${last_versions[@]} + echo ${latest_versions[@]} # Convert to JSON array for matrix TARGETS=$(echo ${latest_versions[@]}) echo "versions=$(./jq -cn --arg environments "${TARGETS}" '{target: $environments}')" >> $GITHUB_OUTPUT From bfab1d30a06691216949bf99e4698ee33ddf8007 Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 13:53:37 +1100 Subject: [PATCH 16/18] feature/github-action --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 34f74da..97d2197 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,13 +53,13 @@ jobs: for i in $(seq 0 3); do minor_version="${sorted_minor_versions[$i]}" latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') - latest_versions=($latest_version) + latest_versions+=($latest_version) done echo ${latest_versions[@]} # Convert to JSON array for matrix TARGETS=$(echo ${latest_versions[@]}) - echo "versions=$(./jq -cn --arg environments "${TARGETS}" '{target: $environments}')" >> $GITHUB_OUTPUT + echo "versions=$(./jq -cn --arg environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest From 898d5c0882b8c3c92b7ec65941e9cf06c88bc85a Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 14:20:42 +1100 Subject: [PATCH 17/18] feature/github-action --- .github/workflows/build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97d2197..8780bc3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,8 +58,8 @@ jobs: echo ${latest_versions[@]} # Convert to JSON array for matrix - TARGETS=$(echo ${latest_versions[@]}) - echo "versions=$(./jq -cn --arg environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT + TARGETS=${latest_versions[@]} + echo "versions=$(./jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest @@ -67,7 +67,8 @@ jobs: permissions: pull-requests: write strategy: - matrix: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + matrix: + versions: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} steps: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3 @@ -157,7 +158,7 @@ jobs: cache-to: type=gha,mode=max build-args: | HELM_VERSION=${{ env.HELM_VERSION }} - KUBECTL_VERSION=${{ matrix.target }} + KUBECTL_VERSION=${{ matrix.versions }} KUSTOMIZE_VERSION=${{ env.KUSTOMIZE_VERSION }} KUBESEAL_VERSION=${{ env.KUBESEAL_VERSION }} KREW_VERSION=${{ env.KREW_VERSION }} From 7f407c7a8ecc859535fcdbd5e89eaca76f4cb8dd Mon Sep 17 00:00:00 2001 From: Bill Wang Date: Tue, 22 Oct 2024 14:28:09 +1100 Subject: [PATCH 18/18] feature/github-action --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8780bc3..5b76374 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,11 +55,11 @@ jobs: latest_version=$(echo "$releases" | grep "^$minor_version\." | sort -rV | head -1 | sed 's/v//') latest_versions+=($latest_version) done - + echo ${latest_versions[@]} # Convert to JSON array for matrix - TARGETS=${latest_versions[@]} - echo "versions=$(./jq -cn --argjson environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT + TARGETS=$(echo ${latest_versions[@]}) + echo "versions=$(./jq -cn --arg environments "$TARGETS" '{target: $environments}')" >> $GITHUB_OUTPUT echo $GITHUB_OUTPUT build: runs-on: ubuntu-latest @@ -68,7 +68,7 @@ jobs: pull-requests: write strategy: matrix: - versions: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} + versions: ${{ fromJson(needs.get-kubectl-versions.outputs.versions) }} steps: - name: Setup Docker buildx uses: docker/setup-buildx-action@v3