diff --git a/.github/workflows/pull-requests.yaml b/.github/workflows/pull-requests.yaml index 0e8f786e..4e989f41 100644 --- a/.github/workflows/pull-requests.yaml +++ b/.github/workflows/pull-requests.yaml @@ -290,8 +290,8 @@ jobs: done echo "✅ The task completed successfully after $attempt attempts" - collect_report: - name: Collect report + collect_debug_information: + name: Collect debug information runs-on: [self-hosted] needs: [test_apps] if: ${{ always() }} @@ -313,10 +313,21 @@ jobs: name: cozyreport path: /tmp/${{ env.SANDBOX_NAME }}/_out/cozyreport.tgz + - name: Collect images list + run: | + cd /tmp/$SANDBOX_NAME + make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME collect-images + + - name: Upload image list + uses: actions/upload-artifact@v4 + with: + name: image-list + path: /tmp/${{ env.SANDBOX_NAME }}/_out/images.txt + cleanup: name: Tear down environment runs-on: [self-hosted] - needs: [collect_report] + needs: [collect_debug_information] if: ${{ always() && needs.test_apps.result == 'success' }} steps: diff --git a/hack/collect-images.sh b/hack/collect-images.sh new file mode 100755 index 00000000..817f1d06 --- /dev/null +++ b/hack/collect-images.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +for node in 11 12 13; do + talosctl -n 192.168.123.${node} -e 192.168.123.${node} images ls >> images.tmp + talosctl -n 192.168.123.${node} -e 192.168.123.${node} images --namespace system ls >> images.tmp +done + +while read _ name sha _ ; do echo $sha $name ; done < images.tmp | sort -u > images.txt diff --git a/packages/core/testing/Makefile b/packages/core/testing/Makefile index 206ab765..f597d5ce 100755 --- a/packages/core/testing/Makefile +++ b/packages/core/testing/Makefile @@ -55,6 +55,11 @@ collect-report: ## Collect the test report from the sandbox. mkdir -p ../../../_out docker cp "${SANDBOX_NAME}:/workspace/cozyreport.tgz" ../../../_out/cozyreport.tgz +collect-images: ## Collect the list of images used in the sandbox. + docker exec "${SANDBOX_NAME}" sh -c 'cd /workspace && hack/collect-images.sh' + mkdir -p ../../../_out + docker cp "${SANDBOX_NAME}":/workspace/images.txt ../../../_out/images.txt + delete: ## Remove sandbox from existing Kubernetes cluster. docker rm -f "${SANDBOX_NAME}" || true @@ -62,10 +67,13 @@ exec: ## Opens an interactive shell in the sandbox container. docker exec -ti "${SANDBOX_NAME}" bash apply: delete + mkdir -p /tmp/${SANDBOX_NAME} + chmod 777 /tmp/${SANDBOX_NAME} docker run \ -d --rm --name "${SANDBOX_NAME}" --privileged \ -e TALOSCONFIG=/workspace/talosconfig \ -e KUBECONFIG=/workspace/kubeconfig \ + -e SANDBOX_NAME=${SANDBOX_NAME} \ "$$(yq .e2e.image values.yaml)" \ --timeout 30m - docker cp "${ROOT_DIR}" "${SANDBOX_NAME}":/workspace + docker cp "${ROOT_DIR}/." "${SANDBOX_NAME}":/workspace