diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index dc757773..3372b3ae 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -9,6 +9,7 @@ on: - "!**_test.go" # exclude test files to ignore unit test changes - "test/**" # include test files in e2e again - "!**.md" + - "examples/**" - ".github/workflows/e2e.yaml" concurrency: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..fa839268 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,95 @@ +name: Release + +on: + release: + types: [created] + +permissions: + contents: read + +jobs: + publish-image: + if: startsWith(github.ref, 'refs/tags/v') == true + runs-on: ubuntu-22.04 + + permissions: + id-token: write # This is the key for OIDC cosign! + packages: write + contents: read + + steps: + - uses: actions/checkout@v3 + - uses: sigstore/cosign-installer@main + with: + cosign-release: "v2.0.2" + - id: get_version + run: | + RELEASE_VERSION=$(echo $GITHUB_REF | sed -nE 's!refs/tags/!!p') + echo "::set-output name=release_version::$RELEASE_VERSION" + - name: Get Docker tags + id: docker_meta + uses: docker/metadata-action@v4 + with: + images: ghcr.io/loft-sh/rancher-nodeless-plugin + tags: | + type=semver,pattern={{version}} + type=raw,value=latest + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to ghcr.io + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: loft-sh + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push the hooks + working-directory: ./examples/hooks + id: docker_build + uses: docker/build-push-action@v4 + with: + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: "ghcr.io/loft-sh/vcluster-example-hooks:${{steps.get_version.outputs.release_version}}" + labels: ${{ steps.docker_meta.outputs.labels }} + - name: Images digests for + run: echo ${{ steps.docker_build.outputs.digest }} + - name: Build and push the bootstrap + id: docker_build + working-directory: ./examples/bootstrap-with-deployment + uses: docker/build-push-action@v4 + with: + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: "ghcr.io/loft-sh/vcluster-example-bootstrap-bootstrap-with-deployment:${{steps.get_version.outputs.release_version}}" + labels: ${{ steps.docker_meta.outputs.labels }} + - name: Images digests for bootstrap + run: echo ${{ steps.docker_build.outputs.digest }} + - name: Build and push import secret + working-directory: ./examples/import-secrets + id: docker_build + uses: docker/build-push-action@v4 + with: + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: "ghcr.io/loft-sh/vcluster-example-import-secrets:${{steps.get_version.outputs.release_version}}" + labels: ${{ steps.docker_meta.outputs.labels }} + - name: Images digests for import secret + run: echo ${{ steps.docker_build.outputs.digest }} + - name: Build and push crd sync + working-directory: ./examples/crd-sync + id: docker_build + uses: docker/build-push-action@v4 + with: + file: Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: "ghcr.io/loft-sh/vcluster-example-crd-sync:${{steps.get_version.outputs.release_version}}" + labels: ${{ steps.docker_meta.outputs.labels }} + - name: Images digests for crd sync + run: echo ${{ steps.docker_build.outputs.digest }} + diff --git a/examples/bootstrap-with-deployment/Dockerfile b/examples/bootstrap-with-deployment/Dockerfile index f914edf0..db3a00f5 100644 --- a/examples/bootstrap-with-deployment/Dockerfile +++ b/examples/bootstrap-with-deployment/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.21.5 as builder +FROM golang:1.22.2 as builder # Make sure we use go modules WORKDIR vcluster diff --git a/examples/bootstrap-with-deployment/plugin.yaml b/examples/bootstrap-with-deployment/plugin.yaml index 7274f8f7..b72eeb9a 100644 --- a/examples/bootstrap-with-deployment/plugin.yaml +++ b/examples/bootstrap-with-deployment/plugin.yaml @@ -1,7 +1,6 @@ # Plugin Definition below. This is essentially a valid helm values file that will be merged # with the other vcluster values during vcluster create or helm install. -plugin: +plugins: bootstrap-with-deployment: - version: v2 image: ghcr.io/loft-sh/vcluster-example-bootstrap-with-deployment:v4 imagePullPolicy: IfNotPresent diff --git a/examples/crd-sync/Dockerfile b/examples/crd-sync/Dockerfile index f914edf0..db3a00f5 100644 --- a/examples/crd-sync/Dockerfile +++ b/examples/crd-sync/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.21.5 as builder +FROM golang:1.22.2 as builder # Make sure we use go modules WORKDIR vcluster diff --git a/examples/crd-sync/plugin.yaml b/examples/crd-sync/plugin.yaml index f2f043a7..faefa21c 100644 --- a/examples/crd-sync/plugin.yaml +++ b/examples/crd-sync/plugin.yaml @@ -1,8 +1,7 @@ # Plugin Definition below. This is essentially a valid helm values file that will be merged # with the other vcluster values during vcluster create or helm install. -plugin: +plugins: crd-sync: - version: v2 image: ghcr.io/loft-sh/vcluster-example-crd-sync:v3 imagePullPolicy: IfNotPresent rbac: @@ -21,4 +20,4 @@ plugin: # resource definitions. rbac: clusterRole: - create: true \ No newline at end of file + enabled: true diff --git a/examples/hooks/Dockerfile b/examples/hooks/Dockerfile index c9f439bb..772996b0 100644 --- a/examples/hooks/Dockerfile +++ b/examples/hooks/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.21.5 as builder +FROM golang:1.22.2 as builder # Make sure we use go modules WORKDIR vcluster diff --git a/examples/hooks/plugin.yaml b/examples/hooks/plugin.yaml index 0ec6f2a2..972d6206 100644 --- a/examples/hooks/plugin.yaml +++ b/examples/hooks/plugin.yaml @@ -1,7 +1,6 @@ # Plugin Definition below. This is essentially a valid helm values file that will be merged # with the other vcluster values during vcluster create or helm install. -plugin: +plugins: hooks: - version: v2 image: ghcr.io/loft-sh/vcluster-example-hooks:v1 - imagePullPolicy: IfNotPresent \ No newline at end of file + imagePullPolicy: IfNotPresent diff --git a/examples/import-secrets/Dockerfile b/examples/import-secrets/Dockerfile index c9f439bb..772996b0 100644 --- a/examples/import-secrets/Dockerfile +++ b/examples/import-secrets/Dockerfile @@ -1,5 +1,5 @@ # Build the manager binary -FROM golang:1.21.5 as builder +FROM golang:1.22.2 as builder # Make sure we use go modules WORKDIR vcluster diff --git a/examples/import-secrets/plugin.yaml b/examples/import-secrets/plugin.yaml index 91b46626..d2ec4580 100644 --- a/examples/import-secrets/plugin.yaml +++ b/examples/import-secrets/plugin.yaml @@ -1,7 +1,6 @@ # Plugin Definition below. This is essentially a valid helm values file that will be merged # with the other vcluster values during vcluster create or helm install. -plugin: +plugins: import-secrets: - version: v2 image: ghcr.io/loft-sh/vcluster-example-import-secrets:v1 - imagePullPolicy: IfNotPresent \ No newline at end of file + imagePullPolicy: IfNotPresent