Release container images to ghcr.io #7
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
env: | |
DOCKER_REGISTRY: ghcr.io/norbjd/k8s-pod-cpu-booster | |
IMAGE_TAG: ${{ github.head_ref != '' && github.head_ref || github.ref_name }} | |
jobs: | |
release: | |
name: build and push to ghcr.io | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: 1.21.x | |
- uses: ko-build/[email protected] | |
- uses: actions/checkout@v4 | |
- name: Build and push | |
env: | |
# TODO: use DOCKER_REGISTRY | |
KO_DOCKER_REPO: ghcr.io/norbjd/k8s-pod-cpu-booster | |
run: | | |
ko build ./cmd/informer ./cmd/webhook \ | |
--base-import-paths \ | |
--tags=${{ github.sha }},$IMAGE_TAG | |
e2e-tests: | |
name: e2e tests | |
needs: release | |
strategy: | |
fail-fast: false | |
matrix: | |
k8s-version: | |
- v1.27.x | |
- v1.28.x | |
- v1.29.x | |
os: | |
- ubuntu-20.04 # Ubuntu 20.04 uses cgroup v1 | |
- ubuntu-22.04 # Ubuntu 22.04 uses cgroup v2 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: 1.21.x | |
- # TODO: this is a fork to be able to use feature gates | |
# TODO: change to the official chainguard-dev/actions/setup-kind@main when merged upstream | |
uses: norbjd/actions/setup-kind@add-feature-gates-to-setup-kind | |
with: | |
k8s-version: ${{ matrix.k8s-version }} | |
kind-worker-count: 1 | |
feature-gates: InPlacePodVerticalScaling | |
- name: Install helm | |
run: curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | |
- uses: actions/checkout@v4 | |
- name: Build and install k8s-pod-cpu-booster | |
run: | | |
helm install k8s-pod-cpu-booster --namespace pod-cpu-booster --create-namespace ./helm \ | |
--set informer.image=$DOCKER_REGISTRY/informer:$IMAGE_TAG \ | |
--set webhook.image=$DOCKER_REGISTRY/webhook:$IMAGE_TAG \ | |
- name: Wait for Ready | |
run: | | |
echo "Waiting for k8s-pod-cpu-booster items to become ready" | |
kubectl wait pod --for=condition=Ready -n pod-cpu-booster -l app=pod-cpu-boost-reset | |
kubectl wait pod --for=condition=Ready -n pod-cpu-booster -l app=mutating-webhook | |
sleep 5 # because readiness probe is not accurate (Ready != informer is started), but sleeping is enough for now | |
- name: Run e2e Tests | |
shell: bash | |
run: | | |
OS=${{ matrix.os }} ./test/e2e-kind.sh |