From da4d82a8667013a1be781ea950f8935a05458599 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Mon, 18 May 2026 11:09:48 +0200 Subject: [PATCH] Add nick as an embedded library workflow --- .github/workflows/nick.yml | 116 +++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .github/workflows/nick.yml diff --git a/.github/workflows/nick.yml b/.github/workflows/nick.yml new file mode 100644 index 00000000000..784ed3af016 --- /dev/null +++ b/.github/workflows/nick.yml @@ -0,0 +1,116 @@ +name: Nick +on: [push, pull_request] + +env: + python-version: '3.13' + POSTGRES_DB: nick + POSTGRES_USER: nick + POSTGRES_PASSWORD: nick + DATABASE_URL: postgresql://nick:nick@localhost:5432/nick + +jobs: + nick-embedded: + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + runs-on: ubuntu-latest + name: Plone 7 using Nick as an embedded library + timeout-minutes: 45 + strategy: + fail-fast: false + matrix: + node-version: [24.x] + services: + postgres: + image: postgres:17 + env: + POSTGRES_DB: nick + POSTGRES_USER: nick + POSTGRES_PASSWORD: nick + ports: + - 5432:5432 + options: >- + --health-cmd "pg_isready -U nick -d nick" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v6 + + - name: Set up Node.js environment + uses: ./.github/actions/node_env_setup + with: + node-version: ${{ matrix.node-version }} + + - name: Install the latest version of uv + uses: astral-sh/setup-uv@v5 + with: + python-version: ${{ env.python-version }} + enable-cache: false + + - name: Generate Cookieplone-based frontend addon + run: | + uvx cookieplone@2.0.0a2 plone7_nick_embedded --no-input + + - name: Install generated package + working-directory: project-title + run: | + pnpm dlx mrs-developer missdev --no-config --fetch-https + if [[ "${GITHUB_REF#refs/heads/}" != "seven" ]]; then + (cd core && git fetch --depth 1 origin ${GITHUB_REF#refs/heads/}:${GITHUB_REF#refs/heads/} && git checkout ${GITHUB_REF#refs/heads/}) + fi + pnpm i + make build-deps + + - name: Bootstrap Nick database + working-directory: project-title + env: + DATABASE_URL: ${{ env.DATABASE_URL }} + POSTGRES_DB: ${{ env.POSTGRES_DB }} + POSTGRES_USER: ${{ env.POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }} + run: pnpm nick:migrate && pnpm nick:seed + + - name: Install Playwright browsers + working-directory: project-title + run: pnpm exec playwright install --with-deps chromium + + - name: Create Nick smoke test + working-directory: project-title + run: | + mkdir -p apps/seven/acceptance/tests + cat > apps/seven/acceptance/tests/nick-smoke.test.ts <<'EOF' + import { expect, test } from '../../core/packages/tooling/playwright/test'; + + test('renders Plone 7 on the homepage', async ({ page }) => { + await page.goto('/'); + await expect(page.getByText('Plone 7')).toBeVisible(); + }); + EOF + + - uses: JarvusInnovations/background-action@v1 + name: Start generated Seven app + with: + run: | + cd project-title + pnpm build + pnpm start:prod & + wait-on: | + http://localhost:3000 + tail: true + log-output-resume: stderr + wait-for: 10m + log-output: stderr,stdout + log-output-if: failure + + - name: Run Nick smoke test + working-directory: project-title + env: + DATABASE_URL: ${{ env.DATABASE_URL }} + run: pnpm exec playwright test apps/seven/acceptance/tests/nick-smoke.test.ts --reporter=line + + - name: Run Nick checks + working-directory: project-title + env: + DATABASE_URL: ${{ env.DATABASE_URL }} + run: | + make format + make test