💚(CI) add frontend jobs
Add the frontend jobs to the CI pipeline.
This commit is contained in:
152
.github/workflows/impress-frontend.yml
vendored
Normal file
152
.github/workflows/impress-frontend.yml
vendored
Normal 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
|
||||||
|
|
||||||
13
Makefile
13
Makefile
@@ -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 \
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
3
env.d/development/common.e2e.dist
Normal file
3
env.d/development/common.e2e.dist
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# For the CI job test-e2e
|
||||||
|
SUSTAINED_THROTTLE_RATES="200/hour"
|
||||||
|
BURST_THROTTLE_RATES="200/minute"
|
||||||
Reference in New Issue
Block a user