💚(CI) add frontend jobs

Add the frontend jobs to the CI pipeline.
This commit is contained in:
Anthony LC
2024-04-03 13:54:11 +02:00
committed by Anthony LC
parent 1d3f1f793e
commit bf19c50146
4 changed files with 213 additions and 8 deletions

152
.github/workflows/impress-frontend.yml vendored Normal file
View File

@@ -0,0 +1,152 @@
name: impress Workflow
on:
push:
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- '*'
jobs:
install-front:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18.x'
- name: Restore the frontend cache
uses: actions/cache@v4
id: front-node_modules
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
- name: Install dependencies
if: steps.front-node_modules.outputs.cache-hit != 'true'
run: cd src/frontend/ && yarn install --frozen-lockfile
- name: Cache install frontend
if: steps.front-node_modules.outputs.cache-hit != 'true'
uses: actions/cache@v4
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
build-front:
runs-on: ubuntu-latest
needs: install-front
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Restore the frontend cache
uses: actions/cache@v4
id: front-node_modules
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
- name: Build CI App
run: cd src/frontend/ && yarn ci:build
- name: Cache build frontend
uses: actions/cache@v4
with:
path: src/frontend/apps/impress/out/
key: build-front-${{ github.run_id }}
test-front:
runs-on: ubuntu-latest
needs: install-front
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Restore the frontend cache
uses: actions/cache@v4
id: front-node_modules
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
- name: Test App
run: cd src/frontend/ && yarn app:test
lint-front:
runs-on: ubuntu-latest
needs: install-front
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Restore the frontend cache
uses: actions/cache@v4
id: front-node_modules
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
- name: Check linting
run: cd src/frontend/ && yarn lint
test-e2e:
runs-on: ubuntu-latest
needs: build-front
timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set services env variables
run: |
make create-env-files
cat env.d/development/common.e2e.dist >> env.d/development/common
- name: Restore the frontend cache
uses: actions/cache@v4
id: front-node_modules
with:
path: 'src/frontend/**/node_modules'
key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }}
- name: Restore the build cache
uses: actions/cache@v4
id: cache-build
with:
path: src/frontend/apps/impress/out/
key: build-front-${{ github.run_id }}
- name: Build and Start Docker Servers
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
run: |
docker-compose build --pull --build-arg BUILDKIT_INLINE_CACHE=1
make run
- name: Apply DRF migrations
run: |
make migrate
- name: Install Playwright Browsers
run: cd src/frontend/apps/e2e && yarn install
- name: Run e2e tests
run: cd src/frontend/ && yarn e2e:test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: src/frontend/apps/e2e/report/
retention-days: 7

View File

@@ -68,14 +68,19 @@ data/static:
# -- Project # -- Project
create-env-files: ## Copy the dist env files to env files
create-env-files: \
env.d/development/common \
env.d/development/crowdin \
env.d/development/postgresql \
env.d/development/kc_postgresql
.PHONY: create-env-files
bootstrap: ## Prepare Docker images for the project bootstrap: ## Prepare Docker images for the project
bootstrap: \ bootstrap: \
data/media \ data/media \
data/static \ data/static \
env.d/development/common \ create-env-files \
env.d/development/crowdin \
env.d/development/postgresql \
env.d/development/kc_postgresql \
build \ build \
run \ run \
migrate \ migrate \

View File

@@ -46,6 +46,9 @@
"users": [ "users": [
{ {
"username": "impress", "username": "impress",
"email": "impress@impress.world",
"firstName": "John",
"lastName": "Doe",
"enabled": true, "enabled": true,
"credentials": [ "credentials": [
{ {
@@ -54,6 +57,48 @@
} }
], ],
"realmRoles": ["user"] "realmRoles": ["user"]
},
{
"username": "user-e2e-chromium",
"email": "user@chromium.e2e",
"firstName": "E2E",
"lastName": "Chromium",
"enabled": true,
"credentials": [
{
"type": "password",
"value": "password-e2e-chromium"
}
],
"realmRoles": ["user"]
},
{
"username": "user-e2e-webkit",
"email": "user@webkit.e2e",
"firstName": "E2E",
"lastName": "Webkit",
"enabled": true,
"credentials": [
{
"type": "password",
"value": "password-e2e-webkit"
}
],
"realmRoles": ["user"]
},
{
"username": "user-e2e-firefox",
"email": "user@firefox.e2e",
"firstName": "E2E",
"lastName": "Firefox",
"enabled": true,
"credentials": [
{
"type": "password",
"value": "password-e2e-firefox"
}
],
"realmRoles": ["user"]
} }
], ],
"roles": { "roles": {
@@ -1065,7 +1110,7 @@
}, },
{ {
"id": "79712bcf-b7f7-4ca3-b97c-418f48fded9b", "id": "79712bcf-b7f7-4ca3-b97c-418f48fded9b",
"name": "given name", "name": "first name",
"protocol": "openid-connect", "protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-property-mapper", "protocolMapper": "oidc-usermodel-property-mapper",
"consentRequired": false, "consentRequired": false,
@@ -1074,7 +1119,7 @@
"user.attribute": "firstName", "user.attribute": "firstName",
"id.token.claim": "true", "id.token.claim": "true",
"access.token.claim": "true", "access.token.claim": "true",
"claim.name": "given_name", "claim.name": "first_name",
"jsonType.label": "String" "jsonType.label": "String"
} }
}, },
@@ -1095,7 +1140,7 @@
}, },
{ {
"id": "7f741e96-41fe-4021-bbfd-506e7eb94e69", "id": "7f741e96-41fe-4021-bbfd-506e7eb94e69",
"name": "family name", "name": "last name",
"protocol": "openid-connect", "protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-property-mapper", "protocolMapper": "oidc-usermodel-property-mapper",
"consentRequired": false, "consentRequired": false,
@@ -1104,7 +1149,7 @@
"user.attribute": "lastName", "user.attribute": "lastName",
"id.token.claim": "true", "id.token.claim": "true",
"access.token.claim": "true", "access.token.claim": "true",
"claim.name": "family_name", "claim.name": "last_name",
"jsonType.label": "String" "jsonType.label": "String"
} }
}, },

View File

@@ -0,0 +1,3 @@
# For the CI job test-e2e
SUSTAINED_THROTTLE_RATES="200/hour"
BURST_THROTTLE_RATES="200/minute"