Skip to content

frontend: Add context for workflow layout to support dynamic content … #6538

frontend: Add context for workflow layout to support dynamic content …

frontend: Add context for workflow layout to support dynamic content … #6538

Workflow file for this run

name: frontend
on:
push:
branches:
- main
pull_request:
branches:
- main
paths:
- "frontend/**"
- .github/workflows/frontend.yml
- Makefile
- tools/frontend-e2e.sh
env:
FRONTEND_DIR: ./frontend
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "18.x"
check-latest: true
- name: Enforce consistent Yarn version
run: make yarn-ensure
- name: node_modules cache
id: node-modules-cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ steps.setup-node.outputs.node-version }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: build cache
if: |
steps.node-modules-cache.outputs.cache-hit == 'true' &&
github.ref != 'refs/heads/main'
id: build-cache
uses: actions/cache@v4
with:
path: |
**/dist
**/app/build
**/tsconfig.tsbuildinfo
!**/node_modules
key: ${{ runner.os }}-fe-build-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: make frontend-install
- name: build
run: make frontend
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "18.x"
check-latest: true
- name: Enforce consistent Yarn version
run: make yarn-ensure
- name: node_modules cache
id: node-modules-cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ steps.setup-node.outputs.node-version }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: make frontend-install
- name: Compile packages
run: yarn run compile:dev
working-directory: ${{ env.FRONTEND_DIR }}
- name: Frontend Lint
run: make frontend-lint
- name: Frontend Verify
run: make frontend-verify
- name: Frontend Constraints
run: yarn constraints
working-directory: ${{ env.FRONTEND_DIR }}
- name: Frontend Test Licenses
run: yarn run test:licenses
working-directory: ${{ env.FRONTEND_DIR }}
test-e2e:
name: Test [e2e]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
id: setup-go
with:
go-version: 1.23.x
- uses: actions/setup-node@v4
with:
node-version: "18.x"
check-latest: true
- name: Enforce consistent Yarn version
run: make yarn-ensure
- name: cypress cache
id: cypress-cache
uses: actions/cache@v4
with:
path: |
~/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ hashFiles('**/yarn.lock') }}
- name: node_modules cache
id: node-modules-cache
if: steps.cypress-cache.outputs.cache-hit == 'true'
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ steps.setup-node.outputs.node-version }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: go mod cache
uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
key: ${{ runner.os }}-${{ steps.setup-go.outputs.go-version }}-go-mod-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-mod-
- name: go build cache
uses: actions/cache@v4
with:
path: |
~/.cache/go-build
key: ${{ runner.os }}-${{ steps.setup-go.outputs.go-version }}-go-mock-build-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-mock-build-
${{ runner.os }}-go-build-
- name: Install dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: make frontend-install
- name: Compile packages
run: yarn run compile:dev
working-directory: ${{ env.FRONTEND_DIR }}
- name: Test [e2e]
id: e2e
run: ./tools/frontend-e2e.sh
- name: Upload end-to-end artifacts
uses: actions/upload-artifact@v4
if: failure() && steps.e2e.outcome == 'failure'
with:
name: screenshots
path: ./frontend/packages/app/cypress/screenshots
test-unit:
name: Test [unit]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "18.x"
check-latest: true
- name: Enforce consistent Yarn version
run: make yarn-ensure
- name: node_modules cache
id: node-modules-cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ steps.setup-node.outputs.node-version }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: make frontend-install
- name: Compile packages
run: yarn run compile:dev
working-directory: ${{ env.FRONTEND_DIR }}
- name: Test [unit]
run: yarn run test:coverage
working-directory: ${{ env.FRONTEND_DIR }}
publish:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
needs: [build, lint, test-unit, test-e2e]
steps:
- uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "18.x"
check-latest: true
registry-url: "https://registry.npmjs.org"
- name: Enforce consistent Yarn version
run: make yarn-ensure
- name: node_modules cache
id: node-modules-cache
uses: actions/cache@v4
with:
path: |
**/node_modules
key: ${{ runner.os }}-${{ steps.setup-node.outputs.node-version }}-node-modules-${{ hashFiles('**/yarn.lock') }}
- name: Install dependencies
if: steps.node-modules-cache.outputs.cache-hit != 'true'
run: make frontend-install
- name: Set Publish Auth
run: yarn config set npmAuthToken $NODE_AUTH_TOKEN
working-directory: ${{ env.FRONTEND_DIR }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: publish
run: yarn run publishBeta
working-directory: ${{ env.FRONTEND_DIR }}