diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 76c3ca23..4323e1e1 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -2,7 +2,8 @@ name: Acceptance tests on: [push, pull_request] env: - node-version: 20.x + NODE_VERSION: 20.x + CYPRESS_RETRIES: 2 jobs: @@ -12,18 +13,13 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Use Node.js ${{ env.node-version }} + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: ${{ env.node-version }} + node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 8 - # We don't want to install until later, - # when the cache and Cypress are in place - run_install: false + - name: Enable corepack + run: corepack enable - name: Get pnpm store directory shell: bash @@ -43,7 +39,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.cache/Cypress - key: binary-${{ env.node-version }}-${{ hashFiles('pnpm-lock.yaml') }} + key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} - name: Install dependencies run: make install @@ -57,8 +53,8 @@ jobs: name: Start Servers with: run: | - make start-test-acceptance-server-ci & - make start-test-acceptance-frontend & + make ci-acceptance-backend-start & + make acceptance-frontend-prod-start & # your step-level and job-level environment variables are available to your commands as-is # npm install will count towards the wait-for timeout # whenever possible, move unrelated scripts to a different step @@ -85,7 +81,7 @@ jobs: # working-directory: backend - - run: make test-acceptance-headless + - run: make ci-acceptance-test # Upload Cypress screenshots - uses: actions/upload-artifact@v3 @@ -107,18 +103,13 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Use Node.js 20.x + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 8 - # We don't want to install until later, - # when the cache and Cypress are in place - run_install: false + - name: Enable corepack + run: corepack enable - name: Get pnpm store directory shell: bash @@ -152,8 +143,8 @@ jobs: name: Start Servers with: run: | - make start-test-acceptance-server-a11y-ci & - make start-test-acceptance-frontend-a11y & + make ci-acceptance-a11y-backend-start & + make acceptance-a11y-frontend-prod-start & # your step-level and job-level environment variables are available to your commands as-is # npm install will count towards the wait-for timeout # whenever possible, move unrelated scripts to a different step @@ -180,7 +171,7 @@ jobs: # working-directory: backend - - run: make test-acceptance-headless-a11y + - run: make ci-acceptance-a11y-test # Upload Cypress screenshots - uses: actions/upload-artifact@v3 diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index a7b25276..22bee9ae 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -6,7 +6,7 @@ on: - main env: - node-version: 20.x + NODE_VERSION: 20.x ADDON_NAME: volto-light-theme jobs: @@ -21,10 +21,10 @@ jobs: - name: Install pipx run: pip install towncrier - - name: Use Node.js ${{ env.node-version }} + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: ${{ env.node-version }} + node-version: ${{ env.NODE_VERSION }} - uses: pnpm/action-setup@v3 name: Install pnpm diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 2b2a7c52..8f6843bd 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -2,7 +2,7 @@ name: Code analysis checks on: [push] env: - node-version: 20.x + NODE_VERSION: 20.x jobs: codeanalysis: @@ -12,18 +12,13 @@ jobs: - name: Main checkout uses: actions/checkout@v4 - - name: Use Node.js ${{ env.node-version }} + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: ${{ env.node-version }} + node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 8 - # We don't want to install until later, - # when the cache and Cypress are in place - run_install: false + - name: Enable corepack + run: corepack enable - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 025ec6cb..dfecc81f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -29,7 +29,7 @@ jobs: ENVIRONMENT=${{ env.ENVIRONMENT }} echo "ENVIRONMENT=${ENVIRONMENT}" >> $GITHUB_OUTPUT echo "STACK_NAME=${ENVIRONMENT//./-}" >> $GITHUB_OUTPUT - python3 -c 'import json; data = json.load(open("mrs.developer.json")); print("VOLTO_VERSION=" + data["core"]["tag"] or 'latest')' >> $GITHUB_OUTPUT + python3 -c 'import json; data = json.load(open("./mrs.developer.json")); print("VOLTO_VERSION=" + data["core"].get("tag") or "latest")' >> $GITHUB_OUTPUT - run: echo "${{ steps.vars.outputs.VOLTO_VERSION }}" @@ -72,7 +72,7 @@ jobs: with: platforms: linux/amd64 context: ./ - file: dockerfiles/Dockerfile + file: Dockerfile build-args: | ADDON_NAME=@kitconcept/volto-light-theme ADDON_PATH=volto-light-theme diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index 907c2fe9..fb72735e 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -2,7 +2,7 @@ name: i18n on: [push] env: - node-version: 20.x + NODE_VERSION: 20.x jobs: unit: @@ -12,18 +12,13 @@ jobs: - name: Main checkout uses: actions/checkout@v4 - - name: Use Node.js ${{ env.node-version }} + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: ${{ env.node-version }} + node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 8 - # We don't want to install until later, - # when the cache and Cypress are in place - run_install: false + - name: Enable corepack + run: corepack enable - name: Get pnpm store directory shell: bash diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 85cd5b54..e7737f01 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -2,7 +2,7 @@ name: Unit Tests on: [push] env: - node-version: 20.x + NODE_VERSION: 20.x jobs: unit: @@ -12,18 +12,13 @@ jobs: - name: Main checkout uses: actions/checkout@v4 - - name: Use Node.js ${{ env.node-version }} + - name: Use Node.js ${{ env.NODE_VERSION }} uses: actions/setup-node@v4 with: - node-version: ${{ env.node-version }} + node-version: ${{ env.NODE_VERSION }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 8 - # We don't want to install until later, - # when the cache and Cypress are in place - run_install: false + - name: Enable corepack + run: corepack enable - name: Get pnpm store directory shell: bash diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5ef9c195 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# syntax=docker/dockerfile:1 +ARG VOLTO_VERSION +# TODO: Replace with +# FROM plone/frontend-builder:${VOLTO_VERSION} +# when the main image is ready +FROM ghcr.io/kitconcept/frontend-builder:${VOLTO_VERSION} as builder + +COPY --chown=node packages/volto-light-theme /app/packages/volto-light-theme +COPY --chown=node volto.config.js /app/ +COPY --chown=node package.json /app/package.json.temp + +RUN --mount=type=cache,id=pnpm,target=/app/.pnpm-store,uid=1000 < Start Docker-based Plone Backend$(RESET)" - docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone -e ADDONS='$(KGS)' $(DOCKER_IMAGE) + docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) + +## Storybook +.PHONY: storybook-start +storybook-start: ## Start Storybook server on port 6006 + @echo "$(GREEN)==> Start Storybook$(RESET)" + pnpm run storybook + +.PHONY: storybook-build +storybook-build: ## Build Storybook + @echo "$(GREEN)==> Build Storybook$(RESET)" + mkdir -p $(CURRENT_DIR)/.storybook-build + pnpm run build-storybook -o $(CURRENT_DIR)/.storybook-build ## Acceptance -.PHONY: start-test-acceptance-frontend-dev -start-test-acceptance-frontend-dev: ## Start acceptance frontend in dev mode +.PHONY: acceptance-frontend-dev-start +acceptance-frontend-dev-start: ## Start acceptance frontend in development mode RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start -.PHONY: start-test-acceptance-frontend -start-test-acceptance-frontend: ## Start acceptance frontend in prod mode +.PHONY: acceptance-frontend-prod-start +acceptance-frontend-prod-start: ## Start acceptance frontend in production mode RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod -.PHONY: start-test-acceptance-frontend-a11y -start-test-acceptance-frontend-a11y: ## Start a11y acceptance frontend in prod mode - pnpm build && pnpm start:prod - -.PHONY: start-test-acceptance-server -start-test-acceptance-server: ## Start acceptance server +.PHONY: acceptance-backend-start +acceptance-backend-start: ## Start backend acceptance server docker run -it --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) -.PHONY: start-test-acceptance-server-ci -start-test-acceptance-server-ci: ## Start acceptance server in CI mode (no terminal attached) +.PHONY: ci-acceptance-backend-start +ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) -.PHONY: start-test-acceptance-server-a11y-ci -start-test-acceptance-server-a11y-ci: ## Start acceptance a11y server in CI mode (no terminal attached) - docker run -i --rm --name=backend -p 8080:8080 -e SITE=Plone -e ADDONS='$(KGS)' $(DOCKER_IMAGE) +.PHONY: acceptance-test +acceptance-test: ## Start Cypress in interactive mode + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/main/**/*.{js,jsx,ts,tsx}' -.PHONY: test-acceptance -test-acceptance: ## Start Cypress in interactive mode - pnpm exec cypress open --config specPattern=$(CURRENT_DIR)'/cypress/tests/main/**/*.{js,jsx,ts,tsx}' +.PHONY: ci-acceptance-test +ci-acceptance-test: ## Run cypress tests in headless mode for CI + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/main/**/*.{js,jsx,ts,tsx}' -.PHONY: test-acceptance-a11y -test-acceptance-a11y: ## Start a11y Cypress in interactive mode - CYPRESS_a11y=1 CYPRESS_API_PATH=http://localhost:8080/Plone pnpm exec cypress open specPattern=$(CURRENT_DIR)'/cypress/tests/a11y/**/*.{js,jsx,ts,tsx}' +# a11y tests +.PHONY: acceptance-a11y-frontend-prod-start +acceptance-a11y-frontend-prod-start: ## Start a11y acceptance frontend in prod mode + pnpm build && pnpm start:prod + +.PHONY: ci-acceptance-a11y-backend-start +ci-acceptance-a11y-backend-start: ## Start acceptance a11y server in CI mode (no terminal attached) + docker run -i --rm --name=backend -p 8080:8080 -e SITE=Plone -e ADDONS='$(KGS)' $(DOCKER_IMAGE) -.PHONY: test-acceptance-headless -test-acceptance-headless: ## Run cypress tests in headless mode for CI - pnpm exec cypress run --config specPattern=$(CURRENT_DIR)'/cypress/tests/main/**/*.{js,jsx,ts,tsx}' +.PHONY: acceptance-a11y-test +acceptance-a11y-test: ## Start a11y Cypress in interactive mode + CYPRESS_a11y=1 CYPRESS_API_PATH=http://localhost:8080/Plone pnpm exec cypress open specPattern=$(CURRENT_DIR)'/cypress/tests/a11y/**/*.{js,jsx,ts,tsx}' -.PHONY: test-acceptance-headless-a11y -test-acceptance-headless-a11y: ## Run a11y cypress tests in headless mode for CI +.PHONY: ci-acceptance-a11y-test +ci-acceptance-a11y-test: ## Run a11y cypress tests in headless mode for CI CYPRESS_a11y=1 CYPRESS_API_PATH=http://localhost:8080/Plone pnpm exec cypress run --config specPattern=$(CURRENT_DIR)'/cypress/tests/a11y/**/*.{js,jsx,ts,tsx}' diff --git a/package.json b/package.json index 70622dc8..50cb5653 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "@kitconcept/volto-light-theme-dev", + "version": "0", "description": "Volto Light Theme by kitconcept", "main": "src/index.js", "types": "src/types/index.d.ts", diff --git a/packages/volto-light-theme/.release-it.json b/packages/volto-light-theme/.release-it.json index f49452fe..20d4cfeb 100644 --- a/packages/volto-light-theme/.release-it.json +++ b/packages/volto-light-theme/.release-it.json @@ -4,7 +4,8 @@ "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft", "pipx run towncrier build --yes --version ${version}", "cp ../../README.md ./ && cp CHANGELOG.md ../../CHANGELOG.md", - "git add ../../CHANGELOG.md" + "python3 -c 'import json; data = json.load(open(\"../../package.json\")); data[\"version\"] = ${version}; json.dump(data, open(\"../../package.json\", \"w\"), indent=2)'", + "git add ../../CHANGELOG.md ../../package.json" ], "after:release": "rm .changelog.draft" }, diff --git a/packages/volto-light-theme/news/390.internal b/packages/volto-light-theme/news/390.internal new file mode 100644 index 00000000..fe2bd193 --- /dev/null +++ b/packages/volto-light-theme/news/390.internal @@ -0,0 +1 @@ +Update the setup. Use new images. @sneridagh diff --git a/packages/volto-light-theme/package.json b/packages/volto-light-theme/package.json index 91850f29..878961d3 100644 --- a/packages/volto-light-theme/package.json +++ b/packages/volto-light-theme/package.json @@ -37,17 +37,8 @@ "@plone/scripts": "^3.6.1", "release-it": "^17.1.1" }, - "peerAddons": [ - "@eeacms/volto-accordion-block", - "@kitconcept/volto-button-block", - "@kitconcept/volto-heading-block", - "@kitconcept/volto-highlight-block", - "@kitconcept/volto-introduction-block", - "@kitconcept/volto-separator-block", - "@kitconcept/volto-slider-block" - ], "dependencies": { - "@plone/components": "2.0.0-alpha.6" + "@plone/components": "workspace:*" }, "peerDependencies": { "@eeacms/volto-accordion-block": "^10.4.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8622b77c..7d767f87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1420,8 +1420,8 @@ importers: specifier: ^6.3.1 version: 6.3.1(@plone/volto@core+packages+volto)(embla-carousel@8.0.0)(react@18.2.0) '@plone/components': - specifier: 2.0.0-alpha.6 - version: 2.0.0-alpha.6(react-dom@18.2.0)(react@18.2.0) + specifier: workspace:* + version: link:../../core/packages/components devDependencies: '@plone/scripts': specifier: ^3.6.1 @@ -6194,23 +6194,6 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@plone/components@2.0.0-alpha.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0z4lCUA0o59xe68nw8NVDvQ7sxJxDOTO+djZBsPfRkddAq+5kW93XVqrlNr+av2FAzAkWG1uR/yFL7dtcWnyPQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react-dom: - optional: true - dependencies: - '@react-aria/utils': 3.23.2(react@18.2.0) - '@react-spectrum/utils': 3.11.5(react@18.2.0) - clsx: 2.1.0 - react: 18.2.0 - react-aria-components: 1.2.1(react-dom@18.2.0)(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - dev: false - /@pmmmwh/react-refresh-webpack-plugin@0.4.3(react-refresh@0.9.0)(webpack-dev-server@4.11.1)(webpack@5.90.1): resolution: {integrity: sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==} engines: {node: '>= 10.x'}