diff --git a/.github/workflows/image-build-test.yaml b/.github/workflows/image-build-test.yaml new file mode 100644 index 00000000..87a615ab --- /dev/null +++ b/.github/workflows/image-build-test.yaml @@ -0,0 +1,35 @@ +name: image-build-test +on: [push, pull_request] + +env: + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + +jobs: + build-image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Prepare version file + run: ./hack/get_version.sh > .version + + - name: Build and push container image + uses: docker/build-push-action@v5 + with: + context: . + push: false + # no need to explicitly set goarch, + # correct arch will be selected for each build platform + build-args: | + goarch= + platforms: ${{ env.BUILD_PLATFORMS }} + file: ./cmd/Dockerfile diff --git a/.github/workflows/image-push-main.yaml b/.github/workflows/image-push-main.yaml new file mode 100644 index 00000000..312cb453 --- /dev/null +++ b/.github/workflows/image-push-main.yaml @@ -0,0 +1,57 @@ +name: "Push images on merge to main" + +env: + IMAGE_NAME: ghcr.io/${{ github.repository }}-plugin + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + +on: + push: + branches: + - main + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker meta + id: docker_meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.IMAGE_NAME }} + + - name: Prepare version file + run: ./hack/get_version.sh > .version + + - name: Build and push container image + uses: docker/build-push-action@v5 + with: + context: . + push: true + # no need to explicitly set goarch, + # correct arch will be selected for each build platform + build-args: | + goarch= + platforms: ${{ env.BUILD_PLATFORMS }} + tags: | + ${{ env.IMAGE_NAME }}:latest + ${{ env.IMAGE_NAME }}:${{ github.sha }} + file: ./cmd/Dockerfile + labels: ${{ steps.docker_meta.outputs.labels }} diff --git a/.github/workflows/image-push-release.yaml b/.github/workflows/image-push-release.yaml new file mode 100644 index 00000000..9e1ae2a7 --- /dev/null +++ b/.github/workflows/image-push-release.yaml @@ -0,0 +1,58 @@ +name: "Push images on release" + +env: + IMAGE_NAME: ghcr.io/${{ github.repository }}-plugin + BUILD_PLATFORMS: linux/amd64,linux/arm64,linux/ppc64le + +on: + push: + tags: + - v* + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker meta + id: docker_meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.IMAGE_NAME }} + flavor: | + latest=false + + - name: Prepare version file + run: ./hack/get_version.sh > .version + + - name: Build and push container image + uses: docker/build-push-action@v5 + with: + context: . + push: true + # no need to explicitly set goarch, + # correct arch will be selected for each build platform + build-args: | + goarch= + platforms: ${{ env.BUILD_PLATFORMS }} + tags: | + ${{ steps.docker_meta.outputs.tags }} + labels: ${{ steps.docker_meta.outputs.labels }} + file: ./cmd/Dockerfile diff --git a/Makefile b/Makefile index 2ac3b160..03da15f8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -REGISTRY ?= quay.io/kubevirt +REGISTRY ?= ghcr.io/k8snetworkplumbingwg IMAGE_TAG ?= latest IMAGE_GIT_TAG ?= $(shell git describe --abbrev=8 --tags) diff --git a/cluster/sync.sh b/cluster/sync.sh index 2b62515c..4d1d31fb 100755 --- a/cluster/sync.sh +++ b/cluster/sync.sh @@ -36,7 +36,7 @@ REGISTRY=$registry make docker-push ovs_cni_manifest="./examples/ovs-cni.yml" -sed 's/quay.io\/kubevirt/registry:5000/g' examples/ovs-cni.yml | ./cluster/kubectl.sh delete --ignore-not-found -f - +sed 's/ghcr.io\/k8snetworkplumbingwg/registry:5000/g' examples/ovs-cni.yml | ./cluster/kubectl.sh delete --ignore-not-found -f - # Delete daemon sets that were deprecated/renamed ./cluster/kubectl.sh -n kube-system delete --ignore-not-found ds ovs-cni-plugin-amd64 @@ -50,4 +50,4 @@ until [ $(check_deleted "-f $ovs_cni_manifest") -eq 1 ]; do sleep 1; done until [ $(check_deleted "ds ovs-cni-plugin-amd64") -eq 1 ]; do sleep 1; done until [ $(check_deleted "ds ovs-vsctl-amd64") -eq 1 ]; do sleep 1; done -sed 's/quay.io\/kubevirt/registry:5000/g' examples/ovs-cni.yml | ./cluster/kubectl.sh apply -f - +sed 's/ghcr.io\/k8snetworkplumbingwg/registry:5000/g' examples/ovs-cni.yml | ./cluster/kubectl.sh apply -f - diff --git a/examples/ovs-cni.yml b/examples/ovs-cni.yml index e68499b2..4b255843 100644 --- a/examples/ovs-cni.yml +++ b/examples/ovs-cni.yml @@ -33,7 +33,7 @@ spec: effect: NoSchedule initContainers: - name: ovs-cni-plugin - image: quay.io/kubevirt/ovs-cni-plugin:latest + image: ghcr.io/k8snetworkplumbingwg/ovs-cni-plugin:latest command: ["/bin/sh","-c"] args: - > @@ -53,7 +53,7 @@ spec: priorityClassName: system-node-critical containers: - name: ovs-cni-marker - image: quay.io/kubevirt/ovs-cni-plugin:latest + image: ghcr.io/k8snetworkplumbingwg/ovs-cni-plugin:latest imagePullPolicy: IfNotPresent securityContext: privileged: true