diff --git a/config/jobs/image-pushing/k8s-staging-sig-storage.sh b/config/jobs/image-pushing/k8s-staging-sig-storage.sh index 1e63943d6fbe..7dd92315f081 100755 --- a/config/jobs/image-pushing/k8s-staging-sig-storage.sh +++ b/config/jobs/image-pushing/k8s-staging-sig-storage.sh @@ -27,6 +27,7 @@ readonly REPOS=( kubernetes-csi/external-provisioner kubernetes-csi/external-resizer kubernetes-csi/external-snapshotter + kubernetes-csi/external-snapshot-metadata kubernetes-csi/livenessprobe kubernetes-csi/node-driver-registrar kubernetes-csi/csi-driver-nfs diff --git a/config/jobs/image-pushing/k8s-staging-sig-storage.yaml b/config/jobs/image-pushing/k8s-staging-sig-storage.yaml index 629eccfb6558..0f22c7edc21e 100644 --- a/config/jobs/image-pushing/k8s-staging-sig-storage.yaml +++ b/config/jobs/image-pushing/k8s-staging-sig-storage.yaml @@ -321,6 +321,46 @@ postsubmits: - --scratch-bucket=gs://k8s-staging-sig-storage-gcb - --env-passthrough=PULL_BASE_REF - . + kubernetes-csi/external-snapshot-metadata: + - name: post-external-snapshot-metadata-push-images + rerun_auth_config: + github_team_slugs: + - org: kubernetes + slug: release-managers + - org: kubernetes + slug: test-infra-admins + - org: kubernetes + slug: sig-storage-image-build-admins + cluster: k8s-infra-prow-build-trusted + annotations: + testgrid-dashboards: sig-storage-image-build, sig-k8s-infra-gcb + decorate: true + decoration_config: + timeout: 240m + grace_period: 15m + branches: + # For publishing canary images. + - ^master$ + - ^release- + # For publishing tagged images. Those will only get built once, i.e. + # existing images are not getting overwritten. A new tag must be set to + # trigger another image build. Images are only built for tags that follow + # the semver format (regex from https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string). + - ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ + spec: + serviceAccountName: gcb-builder + containers: + - image: gcr.io/k8s-staging-test-infra/image-builder:v20240909-d870e42d3d + command: + - /run.sh + args: + # this is the project GCB will run in, which is the same as the GCR + # images are pushed to. + - --project=k8s-staging-sig-storage + # This is the same as above, but with -gcb appended. + - --scratch-bucket=gs://k8s-staging-sig-storage-gcb + - --env-passthrough=PULL_BASE_REF + - . kubernetes-csi/livenessprobe: - name: post-livenessprobe-push-images rerun_auth_config: @@ -1060,6 +1100,37 @@ periodics: - --scratch-bucket=gs://k8s-staging-sig-storage-gcb - --env-passthrough=PULL_BASE_REF - . + - name: canary-external-snapshot-metadata-push-images + cluster: k8s-infra-prow-build-trusted + annotations: + testgrid-dashboards: sig-storage-image-build, sig-k8s-infra-gcb + decorate: true + interval: 168h # one week + extra_refs: + # This also becomes the current directory for run.sh and thus + # the cloud image build. + - org: kubernetes-csi + repo: external-snapshot-metadata + base_ref: master + spec: + serviceAccountName: gcb-builder + containers: + - image: gcr.io/k8s-staging-test-infra/image-builder:v20240909-d870e42d3d + command: + - /run.sh + env: + # We need to emulate a pull job for the cloud build to work the same + # way as it usually does. + - name: PULL_BASE_REF + value: master + args: + # this is the project GCB will run in, which is the same as the GCR + # images are pushed to. + - --project=k8s-staging-sig-storage + # This is the same as above, but with -gcb appended. + - --scratch-bucket=gs://k8s-staging-sig-storage-gcb + - --env-passthrough=PULL_BASE_REF + - . - name: canary-livenessprobe-push-images cluster: k8s-infra-prow-build-trusted annotations: diff --git a/config/jobs/kubernetes-csi/external-snapshot-metadata/external-snapshot-metadata-config.yaml b/config/jobs/kubernetes-csi/external-snapshot-metadata/external-snapshot-metadata-config.yaml new file mode 100644 index 000000000000..6ebd6b2dc445 --- /dev/null +++ b/config/jobs/kubernetes-csi/external-snapshot-metadata/external-snapshot-metadata-config.yaml @@ -0,0 +1,433 @@ +# generated by gen-jobs.sh, do not edit manually + +presubmits: + kubernetes-csi/external-snapshot-metadata: + - name: pull-kubernetes-csi-external-snapshot-metadata-1-29-on-kubernetes-1-29 + cluster: eks-prow-build-cluster + always_run: true + optional: false + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-29-on-kubernetes-1-29 + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.29 on Kubernetes 1.29 + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + # We pick some version for which there are pre-built images for kind. + # Update only when the newer version is known to not cause issues, + # otherwise presubmit jobs may start to fail for reasons that are + # unrelated to the PR. Testing against the latest Kubernetes is covered + # by periodic jobs (see https://testgrid.k8s.io/sig-storage-csi-ci#Summary). + - name: CSI_PROW_KUBERNETES_VERSION + value: "1.29.0" + - name: CSI_PROW_KUBERNETES_DEPLOYMENT + value: "1.29" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_SNAPSHOTTER_VERSION + value: "v6.1.0" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-1-29-on-kubernetes-master + # Explicitly needs to be started with /test. + # This cannot be enabled by default because there's always the risk + # that something changes in master which breaks the pre-merge check. + cluster: eks-prow-build-cluster + always_run: false + optional: true + decorate: true + skip_report: false + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-29-on-kubernetes-master + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.29 on Kubernetes master + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + - name: CSI_PROW_KUBERNETES_VERSION + value: "latest" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_SNAPSHOTTER_VERSION + value: "master" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-1-30-on-kubernetes-1-30 + cluster: eks-prow-build-cluster + always_run: true + optional: false + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-30-on-kubernetes-1-30 + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.30 on Kubernetes 1.30 + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + # We pick some version for which there are pre-built images for kind. + # Update only when the newer version is known to not cause issues, + # otherwise presubmit jobs may start to fail for reasons that are + # unrelated to the PR. Testing against the latest Kubernetes is covered + # by periodic jobs (see https://testgrid.k8s.io/sig-storage-csi-ci#Summary). + - name: CSI_PROW_KUBERNETES_VERSION + value: "1.30.0" + - name: CSI_PROW_KUBERNETES_DEPLOYMENT + value: "1.30" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_SNAPSHOTTER_VERSION + value: "v6.1.0" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-1-30-on-kubernetes-master + # Explicitly needs to be started with /test. + # This cannot be enabled by default because there's always the risk + # that something changes in master which breaks the pre-merge check. + cluster: eks-prow-build-cluster + always_run: false + optional: true + decorate: true + skip_report: false + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-30-on-kubernetes-master + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.30 on Kubernetes master + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + - name: CSI_PROW_KUBERNETES_VERSION + value: "latest" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_SNAPSHOTTER_VERSION + value: "master" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-1-31-on-kubernetes-1-31 + cluster: eks-prow-build-cluster + always_run: true + optional: true + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-31-on-kubernetes-1-31 + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.31 on Kubernetes 1.31 + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + # We pick some version for which there are pre-built images for kind. + # Update only when the newer version is known to not cause issues, + # otherwise presubmit jobs may start to fail for reasons that are + # unrelated to the PR. Testing against the latest Kubernetes is covered + # by periodic jobs (see https://testgrid.k8s.io/sig-storage-csi-ci#Summary). + - name: CSI_PROW_KUBERNETES_VERSION + value: "1.31.0" + - name: CSI_PROW_KUBERNETES_DEPLOYMENT + value: "1.31" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_SNAPSHOTTER_VERSION + value: "v6.1.0" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-1-31-on-kubernetes-master + # Explicitly needs to be started with /test. + # This cannot be enabled by default because there's always the risk + # that something changes in master which breaks the pre-merge check. + cluster: eks-prow-build-cluster + always_run: false + optional: true + decorate: true + skip_report: false + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: 1-31-on-kubernetes-master + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for non-alpha tests, using deployment 1.31 on Kubernetes master + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + - name: CSI_PROW_KUBERNETES_VERSION + value: "latest" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_SNAPSHOTTER_VERSION + value: "master" + - name: CSI_PROW_TESTS + value: "sanity serial parallel" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-alpha-1-30-on-kubernetes-1-30 + cluster: eks-prow-build-cluster + always_run: false + optional: true + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: alpha-1-30-on-kubernetes-1-30 + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for alpha tests, using deployment 1.30 on Kubernetes 1.30 + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + # We pick some version for which there are pre-built images for kind. + # Update only when the newer version is known to not cause issues, + # otherwise presubmit jobs may start to fail for reasons that are + # unrelated to the PR. Testing against the latest Kubernetes is covered + # by periodic jobs (see https://testgrid.k8s.io/sig-storage-csi-ci#Summary). + - name: CSI_PROW_KUBERNETES_VERSION + value: "1.30.0" + - name: CSI_PROW_KUBERNETES_DEPLOYMENT + value: "1.30" + - name: CSI_PROW_DEPLOYMENT_SUFFIX + value: "" + - name: CSI_PROW_DRIVER_VERSION + value: "v1.15.0" + - name: CSI_SNAPSHOTTER_VERSION + value: "v6.1.0" + - name: CSI_PROW_TESTS + value: "serial-alpha parallel-alpha" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + - name: pull-kubernetes-csi-external-snapshot-metadata-unit + cluster: eks-prow-build-cluster + always_run: true + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: unit + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for unit tests + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + - name: CSI_PROW_TESTS + value: "unit" + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 + + - name: pull-kubernetes-csi-external-snapshot-metadata-canary + cluster: eks-prow-build-cluster + optional: true + decorate: true + skip_report: false + skip_branches: [] + labels: + preset-service-account: "true" + preset-dind-enabled: "true" + preset-kind-volume-mounts: "true" + annotations: + testgrid-dashboards: sig-storage-csi-external-snapshot-metadata + testgrid-tab-name: canary + description: Kubernetes-CSI pull job in repo external-snapshot-metadata for canary tests + spec: + containers: + # We need this image because it has Docker in Docker and go. + - image: gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240903-6a352c5344-master + command: + - runner.sh + args: + - ./.prow.sh + env: + - name: CSI_PROW_KUBERNETES_VERSION + value: "latest" + - name: CSI_PROW_TESTS + value: "serial-alpha parallel-alpha" + - name: CSI_PROW_BUILD_JOB + value: "true" + - name: CSI_PROW_HOSTPATH_CANARY + value: "canary" + - name: CSI_SNAPSHOTTER_VERSION + value: "master" + - name: CSI_PROW_DRIVER_VERSION + value: "master" + # ... but the RBAC rules only when testing on master. + # The other jobs test against the unmodified deployment for + # that Kubernetes version, i.e. with the original RBAC rules. + - name: UPDATE_RBAC_RULES + value: "true" + + # docker-in-docker needs privileged mode + securityContext: + privileged: true + resources: + requests: + memory: "9Gi" + cpu: 4 + limits: + memory: "9Gi" + cpu: 4 diff --git a/config/jobs/kubernetes-csi/gen-jobs.sh b/config/jobs/kubernetes-csi/gen-jobs.sh index e66f3c196b9b..d93c6ddb5952 100755 --- a/config/jobs/kubernetes-csi/gen-jobs.sh +++ b/config/jobs/kubernetes-csi/gen-jobs.sh @@ -58,6 +58,7 @@ external-attacher external-provisioner external-resizer external-snapshotter +external-snapshot-metadata livenessprobe node-driver-registrar " diff --git a/config/testgrids/kubernetes/sig-storage/config.yaml b/config/testgrids/kubernetes/sig-storage/config.yaml index e870066ef692..7701e069cac0 100644 --- a/config/testgrids/kubernetes/sig-storage/config.yaml +++ b/config/testgrids/kubernetes/sig-storage/config.yaml @@ -10,6 +10,7 @@ dashboard_groups: - sig-storage-csi-external-provisioner - sig-storage-csi-external-resizer - sig-storage-csi-external-snapshotter + - sig-storage-csi-external-snapshot-metadata - sig-storage-csi-livenessprobe - sig-storage-csi-node-driver-registrar - sig-storage-csi-other @@ -85,6 +86,7 @@ dashboards: - name: sig-storage-csi-external-provisioner - name: sig-storage-csi-external-resizer - name: sig-storage-csi-external-snapshotter +- name: sig-storage-csi-external-snapshot-metadata - name: sig-storage-csi-livenessprobe - name: sig-storage-csi-node-driver-registrar - name: sig-storage-csi-other