Set up a layered build for CI similar to what EW does

This commit is contained in:
Johannes Marbach
2026-09-30 11:35:06 +02:00
parent 81233e5cfb
commit bd8c3142a6
8 changed files with 182 additions and 2 deletions
+12
View File
@@ -14,6 +14,11 @@ on:
description: The build mode for vite. Must be either 'development' or 'production'
required: false
default: production
layered:
type: boolean
description: Build against the matching branch of matrix-js-sdk (if any) instead of the locked commit.
required: false
default: false
secrets:
SENTRY_ORG:
required: true
@@ -43,8 +48,15 @@ jobs:
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
if: ${{ !inputs.layered }}
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
- name: Install dependencies (layered)
if: ${{ inputs.layered }}
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "scripts/layered.sh --ignore-pnpmfile"
env:
PR_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }}
- name: Build Element Call
run: pnpm run build:"$PACKAGE":"$BUILD_MODE"
env:
+3
View File
@@ -15,6 +15,7 @@ jobs:
package: full
vite_app_version: ${{ github.event.release.tag_name || github.sha }}
build_mode: ${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'development build') && 'development' || 'production' }}
layered: ${{ github.event_name == 'pull_request' }}
secrets:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
@@ -65,6 +66,7 @@ jobs:
package: embedded
vite_app_version: ${{ github.event.release.tag_name || github.sha }}
build_mode: ${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'development build') && 'development' || 'production' }}
layered: ${{ github.event_name == 'pull_request' }}
secrets:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
@@ -79,6 +81,7 @@ jobs:
package: sdk
vite_app_version: ${{ github.event.release.tag_name || github.sha }}
build_mode: ${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'development build') && 'development' || 'production' }}
layered: ${{ github.event_name == 'pull_request' }}
secrets:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
+4 -2
View File
@@ -17,9 +17,11 @@ jobs:
with:
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
- name: Install dependencies (layered)
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
run: "scripts/layered.sh --ignore-pnpmfile"
env:
PR_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }}
- name: Formatting
run: "pnpm run format:check"
- name: i18n
+13
View File
@@ -20,8 +20,15 @@ jobs:
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
if: github.event_name != 'pull_request'
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
- name: Install dependencies (layered)
if: github.event_name == 'pull_request'
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "scripts/layered.sh --ignore-pnpmfile"
env:
PR_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }}
- name: Get Playwright version
run: echo "PLAYWRIGHT_VERSION=$(pnpm list @playwright/test --depth=0 --json | jq -r '.[0].devDependencies["@playwright/test"].version')" >> $GITHUB_ENV
- name: Cache Playwright binaries
@@ -58,8 +65,14 @@ jobs:
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
if: github.event_name != 'pull_request'
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: pnpm install --frozen-lockfile --ignore-pnpmfile
- name: Install dependencies (layered)
if: github.event_name == 'pull_request'
run: scripts/layered.sh --ignore-pnpmfile
env:
PR_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }}
- name: Get Playwright version
run: echo "PLAYWRIGHT_VERSION=$(pnpm list @playwright/test --depth=0 --json | jq -r '.[0].devDependencies["@playwright/test"].version')" >> $GITHUB_ENV
- name: Cache Playwright binaries