Merge pull request #8 from plone/usepnpm9 #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Plone Frontend Add-on CI | |
on: | |
push: | |
paths: | |
- "frontend_addon/**" | |
- ".github/workflows/frontend_addon.yml" | |
workflow_dispatch: | |
env: | |
NODE_VERSION: 20.x | |
PYTHON_VERSION: "3.10" | |
jobs: | |
generation: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
steps: | |
# git checkout | |
- name: Checkout codebase | |
uses: actions/checkout@v4 | |
# python setup | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: 'pip' | |
# python install | |
- name: Install dependencies | |
run: | | |
pip install -r requirements.txt | |
# Test | |
- name: Run tests | |
run: | | |
cd frontend_addon | |
python -m pytest tests | |
functional: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout codebase | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ env.PYTHON_VERSION }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '${{ env.PYTHON_VERSION }}' | |
cache: 'pip' | |
- name: Install dependencies | |
run: | | |
pip install -r requirements.txt | |
- name: Generate | |
working-directory: frontend_addon | |
run: | | |
make generate | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: pnpm/action-setup@v3 | |
name: Install pnpm | |
with: | |
version: 9 | |
# We don't want to install until later, | |
# when the cache and Cypress are in place | |
run_install: false | |
- name: Get pnpm store directory | |
shell: bash | |
run: | | |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
- uses: actions/cache@v4 | |
name: Setup pnpm cache | |
with: | |
path: ${{ env.STORE_PATH }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Cache Cypress Binary | |
id: cache-cypress-binary | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/Cypress | |
key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} | |
- name: Install generated package | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make install | |
- name: Run unit tests | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make test-ci | |
- name: Run i18n tests | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make i18n | |
- name: Run linting | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make lint | |
- name: Run formatting | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make format | |
- name: Run Storybook | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make storybook-build | |
- name: Start Servers | |
uses: JarvusInnovations/background-action@v1 | |
with: | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make start-test-acceptance-server-ci & | |
make start-test-acceptance-frontend & | |
# 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 | |
# to background multiple processes: add & to the end of the command | |
wait-on: | | |
http-get://localhost:55001/plone | |
http://localhost:3000 | |
# IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }} | |
# See wait-on section below for all resource types and prefixes | |
tail: true # true = stderr,stdout | |
# This will allow you to monitor the progress live | |
log-output-resume: stderr | |
# Eliminates previosuly output stderr log entries from post-run output | |
wait-for: 10m | |
log-output: stderr,stdout # same as true | |
log-output-if: failure | |
- name: Run acceptance tests | |
working-directory: frontend_addon/volto-addon | |
run: | | |
make test-acceptance-headless |