diff --git a/.github/workflows/pull-requests.yaml b/.github/workflows/pull-requests.yaml index 4614e63e..0bef19d4 100644 --- a/.github/workflows/pull-requests.yaml +++ b/.github/workflows/pull-requests.yaml @@ -87,14 +87,33 @@ jobs: - name: Set sandbox ID run: echo "SANDBOX_NAME=cozy-e2e-sandbox-$(echo "${GITHUB_REPOSITORY}:${GITHUB_WORKFLOW}:${GITHUB_REF}" | sha256sum | cut -c1-10)" >> $GITHUB_ENV + - name: Prepare workspace + run: | + cd .. + rm -rf /tmp/$SANDBOX_NAME + cp -r cozystack /tmp/$SANDBOX_NAME + sudo systemctl stop "rm-workspace-$SANDBOX_NAME.timer" "rm-workspace-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl reset-failed "rm-workspace-$SANDBOX_NAME.timer" "rm-workspace-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl daemon-reexec + sudo systemd-run \ + --on-calendar="$(date -d 'now + 24 hours' '+%Y-%m-%d %H:%M:%S')" \ + --unit=rm-workspace-$SANDBOX_NAME \ + rm -rf /tmp/$SANDBOX_NAME + - name: Delete sandbox in 24h - run: sudo systemd-run - --on-calendar="$(date -d 'now + 24 hours' '+%Y-%m-%d %H:%M:%S')" - --unit=teardown-$SANDBOX_NAME - /usr/bin/docker rm -f $SANDBOX_NAME + run: | + sudo systemctl stop "teardown-$SANDBOX_NAME.timer" "teardown-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl reset-failed "teardown-$SANDBOX_NAME.timer" "teardown-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl daemon-reexec + sudo systemd-run \ + --on-calendar="$(date -d 'now + 24 hours' '+%Y-%m-%d %H:%M:%S')" \ + --unit=teardown-$SANDBOX_NAME \ + /usr/bin/docker rm -f $SANDBOX_NAME - name: Prepare environment - run: make SANDBOX_NAME=$SANDBOX_NAME prepare-env + run: | + cd /tmp/$SANDBOX_NAME + make SANDBOX_NAME=$SANDBOX_NAME prepare-env install_cozystack: name: Install Cozystack @@ -106,20 +125,16 @@ jobs: !contains(github.event.pull_request.labels.*.name, 'release') steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - - name: Set sandbox ID run: echo "SANDBOX_NAME=cozy-e2e-sandbox-$(echo "${GITHUB_REPOSITORY}:${GITHUB_WORKFLOW}:${GITHUB_REF}" | sha256sum | cut -c1-10)" >> $GITHUB_ENV - name: Install Cozystack - run: make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME install-cozystack + run: | + cd /tmp/$SANDBOX_NAME + make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME install-cozystack - test_apps: - name: Test applications + setup_tenant: + name: Setup tenant-test runs-on: [self-hosted] needs: install_cozystack @@ -128,17 +143,35 @@ jobs: !contains(github.event.pull_request.labels.*.name, 'release') steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - - name: Set sandbox ID run: echo "SANDBOX_NAME=cozy-e2e-sandbox-$(echo "${GITHUB_REPOSITORY}:${GITHUB_WORKFLOW}:${GITHUB_REF}" | sha256sum | cut -c1-10)" >> $GITHUB_ENV - name: E2E Apps - run: make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME test-apps + run: | + cd /tmp/$SANDBOX_NAME + make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME test-apps-tenant + + + test_apps: + strategy: + matrix: + app: [clickhouse,kubernetes,mysql,postgres,virtualmachine,vminstance] + name: Test ${{ matrix.app }} + runs-on: [self-hosted] + needs: setup_tenant + + # Never run when the PR carries the "release" label. + if: | + !contains(github.event.pull_request.labels.*.name, 'release') + + steps: + - name: Set sandbox ID + run: echo "SANDBOX_NAME=cozy-e2e-sandbox-$(echo "${GITHUB_REPOSITORY}:${GITHUB_WORKFLOW}:${GITHUB_REF}" | sha256sum | cut -c1-10)" >> $GITHUB_ENV + + - name: E2E Apps + run: | + cd /tmp/$SANDBOX_NAME + make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME test-apps-${{ matrix.app }} cleanup: name: Tear down environment @@ -159,5 +192,16 @@ jobs: - name: Set sandbox ID run: echo "SANDBOX_NAME=cozy-e2e-sandbox-$(echo "${GITHUB_REPOSITORY}:${GITHUB_WORKFLOW}:${GITHUB_REF}" | sha256sum | cut -c1-10)" >> $GITHUB_ENV - - name: E2E Apps + - name: Tear down sandbox run: make -C packages/core/testing SANDBOX_NAME=$SANDBOX_NAME delete + + - name: Remove workspace + run: rm -rf /tmp/$SANDBOX_NAME + + - name: Tear down timers + run: | + sudo systemctl stop "rm-workspace-$SANDBOX_NAME.timer" "rm-workspace-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl reset-failed "rm-workspace-$SANDBOX_NAME.timer" "rm-workspace-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl stop "teardown-$SANDBOX_NAME.timer" "teardown-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl reset-failed "teardown-$SANDBOX_NAME.timer" "teardown-$SANDBOX_NAME.service" 2>/dev/null || true + sudo systemctl daemon-reexec diff --git a/hack/e2e-apps/clickhouse.bats b/hack/e2e-apps/clickhouse.bats new file mode 100644 index 00000000..b1d1f29c --- /dev/null +++ b/hack/e2e-apps/clickhouse.bats @@ -0,0 +1,42 @@ +#!/usr/bin/env bats + +@test "Create DB ClickHouse" { + name='test' + kubectl -n tenant-test get clickhouses.apps.cozystack.io $name || + kubectl create -f- <