Skip to content

Release

Release #4664

Workflow file for this run

name: Release
on:
push:
schedule:
- cron: "0 */8 * * *"
workflow_dispatch: {}
jobs:
fetch-metadata:
runs-on: ubuntu-20.04
outputs:
kubectl-version: ${{ steps.kubectl.outputs.version }}
kustomize-version: ${{ steps.kustomize.outputs.version }}
image-exists: ${{ steps.image-existence.outputs.exists }}
image-tag: ${{ steps.image-existence.outputs.tag }}
steps:
- uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare checking latest kubectl version
env:
REPO_OWNER: ${{ github.repository_owner }}
run: |
docker build . \
-f metadata.Dockerfile \
-t "${REPO_OWNER}/kubectl-kustomize:kubectl-version" \
--target latest-kubectl-version
- name: Check latest kubectl version
id: kubectl
env:
REPO_OWNER: ${{ github.repository_owner }}
run: |
if version=$(docker run ${REPO_OWNER}/kubectl-kustomize:kubectl-version); then
echo "version=$version" >> $GITHUB_OUTPUT
else
exit 1
fi
- name: Prepare checking latest kustomize release
env:
REPO_OWNER: ${{ github.repository_owner }}
run: |
docker build . \
-f metadata.Dockerfile \
-t "${REPO_OWNER}/kubectl-kustomize:kustomize-version" \
--target latest-kustomize-version
- name: Check latest kustomize version
id: kustomize
env:
REPO_OWNER: ${{ github.repository_owner }}
run: |
if version=$(docker run ${REPO_OWNER}/kubectl-kustomize:kustomize-version); then
echo "version=$version" >> $GITHUB_OUTPUT
else
exit 1
fi
- name: Check image exists on registry
id: image-existence
env:
IMAGE_TAG: ${{ format('{0}-{1}', steps.kubectl.outputs.version, steps.kustomize.outputs.version) }}
REPO_OWNER: ${{ github.repository_owner }}
shell: bash +e {0}
run: |
echo "tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
result="$(DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect ${REPO_OWNER}/kubectl-kustomize:${IMAGE_TAG} 2>&1)"
if [[ $? -eq 0 ]]; then
echo "exists=true" >> $GITHUB_OUTPUT
elif [[ $result == *"no such manifest"* ]]; then
echo "exists=false" >> $GITHUB_OUTPUT
else
echo $result
exit 1;
fi
release:
runs-on: ubuntu-20.04
needs:
- fetch-metadata
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and test image
id: build
uses: docker/build-push-action@v4
with:
context: .
tags: ${{ github.repository_owner }}/kubectl-kustomize:test
target: test
platforms: |
linux/amd64
linux/arm64
build-args: |
KUBECTL_VERSION=${{ needs.fetch-metadata.outputs.kubectl-version }}
KUSTOMIZE_VERSION=${{ needs.fetch-metadata.outputs.kustomize-version }}
push: false
- name: Push image
if: ${{ needs.fetch-metadata.outputs.image-exists == 'false' && github.ref == 'refs/heads/master' }}
uses: docker/build-push-action@v4
with:
context: .
tags: |
${{ github.repository_owner }}/kubectl-kustomize:${{ needs.fetch-metadata.outputs.image-tag }}
${{ github.repository_owner }}/kubectl-kustomize:latest
target: runtime
platforms: |
linux/amd64
linux/arm64
build-args: |
KUBECTL_VERSION=${{ needs.fetch-metadata.outputs.kubectl-version }}
KUSTOMIZE_VERSION=${{ needs.fetch-metadata.outputs.kustomize-version }}
push: true