From 8e15621e83a1005c3b7d8d682652f984765996c1 Mon Sep 17 00:00:00 2001 From: Noel Georgi Date: Tue, 11 Jun 2024 22:19:39 +0700 Subject: [PATCH] chore(ci): add conformance pipelines This was missed when moving to GHA. Signed-off-by: Noel Georgi --- .github/workflows/ci.yaml | 92 +++++++++++++++++- .../integration-conformance-cron.yaml | 93 +++++++++++++++++++ .github/workflows/slack-notify.yaml | 3 +- .kres.yaml | 50 ++++++++++ hack/test/e2e-cloud-tf.sh | 2 +- 5 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/integration-conformance-cron.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4456dbfbc9..d040ebc2a7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2024-05-27T16:20:10Z by kres bcb280a. +# Generated on 2024-06-11T15:17:44Z by kres 7360563. name: default concurrency: @@ -1106,6 +1106,96 @@ jobs: - name: cloud-images run: | make cloud-images + integration-conformance: + permissions: + actions: read + contents: write + issues: read + packages: write + pull-requests: read + runs-on: + - self-hosted + - talos + if: contains(fromJSON(needs.default.outputs.labels), 'integration/conformance') + needs: + - default + steps: + - name: gather-system-info + id: system-info + uses: kenchan0130/actions-system-info@v1.3.0 + continue-on-error: true + - name: print-system-info + run: | + MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024)) + + OUTPUTS=( + "CPU Core: ${{ steps.system-info.outputs.cpu-core }}" + "CPU Model: ${{ steps.system-info.outputs.cpu-model }}" + "Hostname: ${{ steps.system-info.outputs.hostname }}" + "NodeName: ${NODE_NAME}" + "Kernel release: ${{ steps.system-info.outputs.kernel-release }}" + "Kernel version: ${{ steps.system-info.outputs.kernel-version }}" + "Name: ${{ steps.system-info.outputs.name }}" + "Platform: ${{ steps.system-info.outputs.platform }}" + "Release: ${{ steps.system-info.outputs.release }}" + "Total memory: ${MEMORY_GB} GB" + ) + + for OUTPUT in "${OUTPUTS[@]}";do + echo "${OUTPUT}" + done + continue-on-error: true + - name: checkout + uses: actions/checkout@v4 + - name: Unshallow + run: | + git fetch --prune --unshallow + - name: Set up Docker Buildx + id: setup-buildx + uses: docker/setup-buildx-action@v3 + with: + driver: remote + endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234 + timeout-minutes: 10 + - name: Download artifacts + if: github.event_name != 'schedule' + uses: actions/download-artifact@v4 + with: + name: talos-artifacts + path: _out + - name: Fix artifact permissions + if: github.event_name != 'schedule' + run: | + xargs -a _out/executable-artifacts -I {} chmod +x {} + - name: build + if: github.event_name == 'schedule' + env: + IMAGE_REGISTRY: registry.dev.siderolabs.io + PLATFORM: linux/amd64 + PUSH: "true" + run: | + make talosctl-linux-amd64 kernel sd-boot sd-stub initramfs installer imager talos _out/integration-test-linux-amd64 + - name: talosctl-cni-bundle + if: github.event_name == 'schedule' + run: | + make talosctl-cni-bundle + - name: conformance-qemu + env: + IMAGE_REGISTRY: registry.dev.siderolabs.io + QEMU_CPUS: "4" + QEMU_WORKERS: "2" + TEST_MODE: fast-conformance + run: | + sudo -E make e2e-qemu + - name: save artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: talos-logs-integration-qemu + path: |- + ~/.talos/clusters/**/*.log + !~/.talos/clusters/**/swtpm.log + retention-days: "5" integration-equinix-metal: permissions: actions: read diff --git a/.github/workflows/integration-conformance-cron.yaml b/.github/workflows/integration-conformance-cron.yaml new file mode 100644 index 0000000000..df18ffaebe --- /dev/null +++ b/.github/workflows/integration-conformance-cron.yaml @@ -0,0 +1,93 @@ +# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. +# +# Generated on 2024-06-11T15:17:44Z by kres 7360563. + +name: integration-conformance-cron +concurrency: + group: ${{ github.head_ref || github.run_id }} + cancel-in-progress: true +"on": + schedule: + - cron: 30 4 * * * +jobs: + default: + runs-on: + - self-hosted + - talos + steps: + - name: gather-system-info + id: system-info + uses: kenchan0130/actions-system-info@v1.3.0 + continue-on-error: true + - name: print-system-info + run: | + MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024)) + + OUTPUTS=( + "CPU Core: ${{ steps.system-info.outputs.cpu-core }}" + "CPU Model: ${{ steps.system-info.outputs.cpu-model }}" + "Hostname: ${{ steps.system-info.outputs.hostname }}" + "NodeName: ${NODE_NAME}" + "Kernel release: ${{ steps.system-info.outputs.kernel-release }}" + "Kernel version: ${{ steps.system-info.outputs.kernel-version }}" + "Name: ${{ steps.system-info.outputs.name }}" + "Platform: ${{ steps.system-info.outputs.platform }}" + "Release: ${{ steps.system-info.outputs.release }}" + "Total memory: ${MEMORY_GB} GB" + ) + + for OUTPUT in "${OUTPUTS[@]}";do + echo "${OUTPUT}" + done + continue-on-error: true + - name: checkout + uses: actions/checkout@v4 + - name: Unshallow + run: | + git fetch --prune --unshallow + - name: Set up Docker Buildx + id: setup-buildx + uses: docker/setup-buildx-action@v3 + with: + driver: remote + endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234 + timeout-minutes: 10 + - name: Download artifacts + if: github.event_name != 'schedule' + uses: actions/download-artifact@v4 + with: + name: talos-artifacts + path: _out + - name: Fix artifact permissions + if: github.event_name != 'schedule' + run: | + xargs -a _out/executable-artifacts -I {} chmod +x {} + - name: build + if: github.event_name == 'schedule' + env: + IMAGE_REGISTRY: registry.dev.siderolabs.io + PLATFORM: linux/amd64 + PUSH: "true" + run: | + make talosctl-linux-amd64 kernel sd-boot sd-stub initramfs installer imager talos _out/integration-test-linux-amd64 + - name: talosctl-cni-bundle + if: github.event_name == 'schedule' + run: | + make talosctl-cni-bundle + - name: conformance-qemu + env: + IMAGE_REGISTRY: registry.dev.siderolabs.io + QEMU_CPUS: "4" + QEMU_WORKERS: "2" + TEST_MODE: fast-conformance + run: | + sudo -E make e2e-qemu + - name: save artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: talos-logs-integration-qemu + path: |- + ~/.talos/clusters/**/*.log + !~/.talos/clusters/**/swtpm.log + retention-days: "5" diff --git a/.github/workflows/slack-notify.yaml b/.github/workflows/slack-notify.yaml index d9a865e018..3a18dd4d01 100644 --- a/.github/workflows/slack-notify.yaml +++ b/.github/workflows/slack-notify.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2024-05-24T15:02:03Z by kres b5844f8. +# Generated on 2024-06-11T15:17:44Z by kres 7360563. name: slack-notify "on": @@ -8,6 +8,7 @@ name: slack-notify workflows: - default - integration-qemu-cron + - integration-conformance-cron - integration-trusted-boot-cron - integration-provision-0-cron - integration-provision-1-cron diff --git a/.kres.yaml b/.kres.yaml index 7034db09ec..c6cf2455c2 100644 --- a/.kres.yaml +++ b/.kres.yaml @@ -64,6 +64,7 @@ spec: - integration-misc-4 - integration-extensions - integration-cilium + - integration-conformance - integration-qemu-encrypted-vip - integration-qemu-race - integration-qemu-csi @@ -348,6 +349,55 @@ spec: artifactPath: ~/.talos/clusters/**/*.log additionalArtifacts: - "!~/.talos/clusters/**/swtpm.log" + - name: integration-conformance + buildxOptions: + enabled: true + depends: + - default + runners: + - self-hosted + - talos + crons: + - '30 4 * * *' + triggerLabels: + - integration/conformance + steps: + - name: download-artifacts + conditions: + - not-on-schedule + artifactStep: + type: download + artifactName: talos-artifacts + artifactPath: _out + - name: build + conditions: + - only-on-schedule + command: talosctl-linux-amd64 kernel sd-boot sd-stub initramfs installer imager talos _out/integration-test-linux-amd64 + environment: + PLATFORM: linux/amd64 + IMAGE_REGISTRY: registry.dev.siderolabs.io + PUSH: true + - name: talosctl-cni-bundle + conditions: + - only-on-schedule + - name: conformance-qemu + command: e2e-qemu + withSudo: true + environment: + QEMU_WORKERS: 2 + QEMU_CPUS: 4 + TEST_MODE: fast-conformance + IMAGE_REGISTRY: registry.dev.siderolabs.io + - name: save-talos-logs + conditions: + - always + artifactStep: + type: upload + artifactName: talos-logs-integration-qemu + disableExecutableListGeneration: true + artifactPath: ~/.talos/clusters/**/*.log + additionalArtifacts: + - "!~/.talos/clusters/**/swtpm.log" - name: integration-trusted-boot buildxOptions: enabled: true diff --git a/hack/test/e2e-cloud-tf.sh b/hack/test/e2e-cloud-tf.sh index 1d0bc9424f..101de417d3 100755 --- a/hack/test/e2e-cloud-tf.sh +++ b/hack/test/e2e-cloud-tf.sh @@ -20,7 +20,7 @@ cp "${ARTIFACTS}/e2e-${TF_E2E_TEST_TYPE}-generated"/* "${TF_SCRIPT_DIR}/examples terraform -chdir="${TF_SCRIPT_DIR}/examples/terraform/${TF_E2E_TEST_TYPE}" \ init \ -backend-config="bucket=${BUCKET_NAME}" \ - -backend-config="key=cloud-tf/${TF_E2E_TEST_TYPE}-${GITHUB_SHA}-terraform.tfstate" + -backend-config="key=cloud-tf/${TF_E2E_TEST_TYPE}-${GITHUB_SHA}-${GITHUB_RUN_NUMBER}-terraform.tfstate" case "${TF_E2E_ACTION}" in "apply")