mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
This PR modernizes the ZITADEL monorepo build system by migrating from Yarn to pnpm, introducing Turbo for improved build orchestration, and cleaning up configuration inconsistencies across all apps and packages. ### 🎯 Key Improvements #### 📦 **Package Manager Migration (Yarn → pnpm)** - **Performance**: Faster installs with pnpm's efficient symlink-based node_modules structure - **Disk space**: Significant reduction in disk usage through content-addressable storage - **Lockfile**: More reliable dependency resolution with pnpm-lock.yaml - **Workspace support**: Better monorepo dependency management #### ⚡ **Turbo Integration** - **Build orchestration**: Dependency-aware task execution across the monorepo - **Intelligent caching**: Dramatically faster builds on CI/CD and local development - **Parallel execution**: Optimal task scheduling based on dependency graphs - **Vercel optimization**: Enhanced build performance and caching on Vercel deployments #### 🧹 **Configuration Cleanup & Unification** - **Removed config packages**: Eliminated `@zitadel/*-config` packages and inlined configurations - **Simplified dependencies**: Reduced complexity in package.json files across all apps - **Consistent tooling**: Unified prettier, ESLint, and TypeScript configurations - **Standalone support**: Improved prepare-standalone.js script for subtree deployments ### 📋 Detailed Changes #### **🔧 Build System & Dependencies** - ✅ Updated all package.json scripts to use `pnpm` instead of `yarn` - ✅ Replaced `yarn.lock` with pnpm-lock.yaml and regenerated dependencies - ✅ Added Turbo configuration (turbo.json) to root and individual packages - ✅ Configured proper dependency chains: `@zitadel/proto#generate` → `@zitadel/client#build` → `console#build` - ✅ Added missing `@bufbuild/protobuf` dependency to console app for TypeScript compilation #### **🚀 CI/CD & Workflows** - ✅ Updated all GitHub Actions workflows to use `pnpm/action-setup@v4` - ✅ Migrated build processes to use Turbo with directory-based filters (`--filter=./console`) - ✅ **New**: Added `docs.yml` workflow for building documentation locally (helpful for contributors without Vercel access) - ✅ Fixed dependency resolution issues in lint workflows - ✅ Ensured proto generation always runs before builds and linting #### **📚 Documentation & Proto Generation** - ✅ **Robust plugin management**: Enhanced plugin-download.sh with retry logic and error handling - ✅ **Vercel compatibility**: Fixed protoc-gen-connect-openapi plugin availability in Vercel builds - ✅ **API docs generation**: Resolved Docusaurus build errors with OpenAPI plugin configuration - ✅ **Type safety**: Improved TypeScript type extraction patterns in Angular components #### **🛠️ Developer Experience** - ✅ Updated all README files to reference pnpm commands - ✅ Improved Makefile targets to use Turbo for consistent builds - ✅ Enhanced standalone build process for login app subtree deployments - ✅ Added debug utilities for troubleshooting build issues #### **🗂️ File Structure & Cleanup** - ✅ Removed obsolete configuration packages and their references - ✅ Cleaned up Docker files to remove non-existent package copies - ✅ Updated workspace references and import paths - ✅ Streamlined turbo.json configurations across all packages ### 🎉 Benefits 1. **⚡ Faster Builds**: Turbo's caching and parallel execution significantly reduce build times 2. **🔄 Better Caching**: Improved cache hits on Vercel and CI/CD environments 3. **🛠️ Simplified Maintenance**: Unified tooling and configuration management 4. **📈 Developer Productivity**: Faster local development with optimized dependency resolution 5. **🚀 Enhanced CI/CD**: More reliable and faster automated builds and deployments 6. **📖 Better Documentation**: Comprehensive build documentation and troubleshooting guides ### 🧪 Testing - ✅ All apps build successfully with new pnpm + Turbo setup - ✅ Proto generation works correctly across console, login, and docs - ✅ GitHub Actions workflows pass with new configuration - ✅ Vercel deployments work with enhanced plugin management - ✅ Local development workflow verified and documented This migration sets a solid foundation for future development while maintaining backward compatibility and improving the overall developer experience. --------- Co-authored-by: Elio Bischof <[email protected]>
70 lines
2.1 KiB
YAML
70 lines
2.1 KiB
YAML
name: Login Quality
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
ignore-run-cache:
|
|
description: "Ignore run caches"
|
|
type: boolean
|
|
required: true
|
|
node_version:
|
|
required: true
|
|
type: string
|
|
secrets:
|
|
DEPOT_TOKEN:
|
|
required: true
|
|
|
|
jobs:
|
|
quality:
|
|
name: Ensure Quality
|
|
runs-on: depot-ubuntu-22.04-8
|
|
timeout-minutes: 30
|
|
permissions:
|
|
actions: write
|
|
env:
|
|
CACHE_DIR: /tmp/login-run-caches
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: depot/setup-action@v1
|
|
- name: Restore Run Caches
|
|
uses: actions/cache/restore@v4
|
|
id: run-caches-restore
|
|
with:
|
|
path: ${{ env.CACHE_DIR }}
|
|
key: ${{ runner.os }}-login-run-caches-${{github.ref_name}}-${{ github.sha }}-${{github.run_attempt}}
|
|
restore-keys: |
|
|
${{ runner.os }}-login-run-caches-${{github.ref_name}}-${{ github.sha }}-
|
|
${{ runner.os }}-login-run-caches-${{github.ref_name}}-
|
|
${{ runner.os }}-login-run-caches-
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: .artifacts
|
|
name: zitadel-linux-amd64
|
|
- name: Unpack executable
|
|
run: |
|
|
tar -xvf .artifacts/zitadel-linux-amd64.tar.gz
|
|
mv zitadel-linux-amd64/zitadel ./zitadel
|
|
- uses: pnpm/action-setup@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ inputs.node_version }}
|
|
cache: "pnpm"
|
|
cache-dependency-path: pnpm-lock.yaml
|
|
- name: Install dependencies
|
|
run: pnpm install
|
|
- name: Run login quality checks with Turbo
|
|
run: pnpm turbo test:unit --filter=@zitadel/login
|
|
env:
|
|
DEPOT_TOKEN: ${{ secrets.DEPOT_TOKEN }}
|
|
LOGIN_BAKE_CLI: depot bake
|
|
DEPOT_PROJECT_ID: w47wkxzdtw
|
|
IGNORE_RUN_CACHE: ${{ github.event.inputs.ignore-run-cache }}
|
|
NODE_VERSION: ${{ inputs.node_version }}
|
|
|
|
- name: Save Run Caches
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: ${{ env.CACHE_DIR }}
|
|
key: ${{ steps.run-caches-restore.outputs.cache-primary-key }}
|
|
if: always()
|