From 9d243408677bf4ed7a36092d5d9ba2f1e4700978 Mon Sep 17 00:00:00 2001 From: thiloho <123883702+thiloho@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:12:56 +0200 Subject: [PATCH] Use GitHub environments for deploy action --- .github/workflows/deploy.yml | 16 +++++++--------- .../routes/(authenticated)/manage/+page.svelte | 4 ++-- .../website/[websiteId]/categories/+page.svelte | 2 +- .../[websiteId]/collaborators/+page.svelte | 2 +- .../website/[websiteId]/logs/+page.svelte | 2 +- web-app/tests/global-teardown.ts | 16 ++++++++++------ 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 69ded8a..b78769a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,15 +5,13 @@ on: workflows: [ 'Playwright tests' ] types: [ completed ] branches: [ devel, main ] -env: - SERVER_USER: root - QS_SERVER_IP: 128.140.75.240 - PROD_SERVER_IP: 116.203.122.75 jobs: deploy: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' }} + environment: ${{ github.event.workflow_run.head_branch == 'devel' && 'qs' || 'prod' }} + steps: - uses: actions/checkout@v4 with: @@ -27,14 +25,14 @@ jobs: - name: Install SSH Key uses: shimataro/ssh-key-action@v2 with: - key: ${{ github.event.workflow_run.head_branch == 'devel' && secrets.QS_SSH_KEY || secrets.PROD_SSH_KEY }} - known_hosts: ${{ github.event.workflow_run.head_branch == 'devel' && secrets.QS_KNOWN_HOSTS || secrets.PROD_KNOWN_HOSTS }} + key: ${{ secrets.SSH_KEY }} + known_hosts: ${{ vars.KNOWN_HOSTS }} - name: Deploy to demo server run: | nix run nixpkgs#nixos-rebuild -- switch \ - --flake .#${{ github.event.workflow_run.head_branch == 'devel' && 'qs' || 'prod' }} \ + --flake .#${{ vars.FLAKE_CONFIGURATION_NAME }} \ --fast \ - --build-host ${{ env.SERVER_USER }}@${{ github.event.workflow_run.head_branch == 'devel' && env.QS_SERVER_IP || env.PROD_SERVER_IP }} \ - --target-host ${{ env.SERVER_USER }}@${{ github.event.workflow_run.head_branch == 'devel' && env.QS_SERVER_IP || env.PROD_SERVER_IP }} \ + --build-host ${{ vars.SERVER_DEPLOY_USER }}@${{ vars.PUBLIC_SERVER_IP }} \ + --target-host ${{ vars.SERVER_DEPLOY_USER }}@${{ vars.PUBLIC_SERVER_IP }} \ --use-remote-sudo diff --git a/web-app/src/routes/(authenticated)/manage/+page.svelte b/web-app/src/routes/(authenticated)/manage/+page.svelte index 4ebd645..a85faac 100644 --- a/web-app/src/routes/(authenticated)/manage/+page.svelte +++ b/web-app/src/routes/(authenticated)/manage/+page.svelte @@ -39,7 +39,7 @@ - {#each data.usersWithWebsites as { id, created_at, username, max_number_websites, website }} + {#each data.usersWithWebsites as { id, created_at, username, max_number_websites, website } (id)} @@ -73,7 +73,7 @@ {#if website.length > 0}

Websites

- {#each website as { id, title, max_storage_size }} + {#each website as { id, title, max_storage_size } (id)}
{title}
diff --git a/web-app/src/routes/(authenticated)/website/[websiteId]/categories/+page.svelte b/web-app/src/routes/(authenticated)/website/[websiteId]/categories/+page.svelte index 5b8b0ef..11c28e1 100644 --- a/web-app/src/routes/(authenticated)/website/[websiteId]/categories/+page.svelte +++ b/web-app/src/routes/(authenticated)/website/[websiteId]/categories/+page.svelte @@ -56,7 +56,7 @@
    - {#each data.categories as { id, website_id, user_id, category_name, category_weight } (`${website_id}-${id}`)} + {#each data.categories as { id, user_id, category_name, category_weight } (id)}
  • {category_name} ({category_weight}) diff --git a/web-app/src/routes/(authenticated)/website/[websiteId]/collaborators/+page.svelte b/web-app/src/routes/(authenticated)/website/[websiteId]/collaborators/+page.svelte index 12b95b1..ef52777 100644 --- a/web-app/src/routes/(authenticated)/website/[websiteId]/collaborators/+page.svelte +++ b/web-app/src/routes/(authenticated)/website/[websiteId]/collaborators/+page.svelte @@ -65,7 +65,7 @@

      - {#each data.collaborators as { website_id, user_id, permission_level, user } (`${website_id}-${user_id}`)} + {#each data.collaborators as { user_id, permission_level, user } (user_id)}
    • {user?.username} ({permission_level}) diff --git a/web-app/src/routes/(authenticated)/website/[websiteId]/logs/+page.svelte b/web-app/src/routes/(authenticated)/website/[websiteId]/logs/+page.svelte index 9e1a3c9..5638206 100644 --- a/web-app/src/routes/(authenticated)/website/[websiteId]/logs/+page.svelte +++ b/web-app/src/routes/(authenticated)/website/[websiteId]/logs/+page.svelte @@ -111,7 +111,7 @@ - {#each data.changeLog as { id, table_name, operation, tstamp, old_value, new_value, user_id, username }} + {#each data.changeLog as { id, table_name, operation, tstamp, old_value, new_value, user_id, username } (id)} diff --git a/web-app/tests/global-teardown.ts b/web-app/tests/global-teardown.ts index fae68af..7b5c9cd 100644 --- a/web-app/tests/global-teardown.ts +++ b/web-app/tests/global-teardown.ts @@ -1,21 +1,25 @@ -import { test } from "@playwright/test"; +import { test, expect } from "@playwright/test"; import { password, authenticate, userOwner } from "./shared"; test.beforeEach(async ({ page }) => { await authenticate(userOwner, page); }); -/* test("Delete all regular users", async ({ page }) => { +test("Delete all regular users", async ({ page }) => { await page.getByRole("link", { name: "Manage" }).click(); await page.waitForSelector("tbody"); - const userRows = await page.locator("tbody > tr").filter({ hasNotText: userOwner }).all(); + const userRows = page.locator("tbody > tr").filter({ hasNotText: userOwner }); - for (const row of userRows) { - await row.getByRole("button", { name: "Manage" }).click(); + while ((await userRows.count()) > 0) { + const currentCount = await userRows.count(); + + await userRows.first().getByRole("button", { name: "Manage" }).click(); const modalName = page.url().split("#")[1]; await page.locator(`#${modalName}`).locator('summary:has-text("Delete")').click(); await page.locator(`#${modalName}`).getByRole("button", { name: "Delete user" }).click(); + + await expect(userRows).toHaveCount(currentCount - 1); } }); @@ -28,4 +32,4 @@ test("Delete admin account", async ({ page }) => { .locator("#delete-account-modal") .getByRole("button", { name: "Delete account" }) .click(); -}); */ +});