mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 15:27:33 +00:00
chore: reproducible pipeline with dev containers (#10305)
# Which Problems Are Solved - The previous monorepo in monorepo structure for the login app and its related packages was fragmented, complicated and buggy. - The process for building and testing the login container was inconsistent between local development and CI. - Lack of clear documentation as well as easy and reliable ways for non-frontend developers to reproduce and fix failing PR checks locally. # How the Problems Are Solved - Consolidated the login app and its related npm packages by moving the main package to `apps/login/apps/login` and merging `apps/login/packages/integration` and `apps/login/packages/acceptance` into the main `apps/login` package. - Migrated from Docker Compose-based test setups to dev container-based setups, adding support for multiple dev container configurations: - `.devcontainer/base` - `.devcontainer/turbo-lint-unit` - `.devcontainer/turbo-lint-unit-debug` - `.devcontainer/login-integration` - `.devcontainer/login-integration-debug` - Added npm scripts to run the new dev container setups, enabling exact reproduction of GitHub PR checks locally, and updated the pipeline to use these containers. - Cleaned up Dockerfiles and docker-bake.hcl files to only build the production image for the login app. - Cleaned up compose files to focus on dev environments in dev containers. - Updated `CONTRIBUTING.md` with guidance on running and debugging PR checks locally using the new dev container approach. - Introduced separate Dockerfiles for the login app to distinguish between using published client packages and building clients from local protos. - Ensured the login container is always built in the pipeline for use in integration and acceptance tests. - Updated Makefile and GitHub Actions workflows to use `--frozen-lockfile` for installing pnpm packages, ensuring reproducible installs. - Disabled GitHub release creation by the changeset action. - Refactored the `/build` directory structure for clarity and maintainability. - Added a `clean` command to `docks/package.json`. - Experimentally added `knip` to the `zitadel-client` package for improved linting of dependencies and exports. # Additional Changes - Fixed Makefile commands for consistency and reliability. - Improved the structure and clarity of the `/build` directory to support seamless integration of the login build. - Enhanced documentation and developer experience for running and debugging CI checks locally. # Additional Context - See updated `CONTRIBUTING.md` for new local development and debugging instructions. - These changes are a prerequisite for further improvements to the CI pipeline and local development workflow. - Closes #10276
This commit is contained in:
49
package.json
49
package.json
@@ -3,33 +3,10 @@
|
||||
"private": true,
|
||||
"name": "zitadel-monorepo",
|
||||
"scripts": {
|
||||
"generate": "pnpm exec turbo run generate",
|
||||
"build": "pnpm exec turbo run build",
|
||||
"build:client:standalone": "pnpm exec turbo run build:client:standalone",
|
||||
"build:login:standalone": "pnpm exec turbo run build:login:standalone",
|
||||
"build:packages": "pnpm exec turbo run build --filter=./login/packages/*",
|
||||
"build:apps": "pnpm exec turbo run build --filter=./login/apps/*",
|
||||
"build:console": "pnpm exec turbo run build --filter=console",
|
||||
"test": "pnpm exec turbo run test",
|
||||
"start": "pnpm exec turbo run start",
|
||||
"start:built": "pnpm exec turbo run start:built",
|
||||
"test:unit": "pnpm exec turbo run test:unit -- --passWithNoTests",
|
||||
"test:unit:standalone": "pnpm exec turbo run test:unit:standalone -- --passWithNoTests",
|
||||
"test:integration": "cd login/apps/login-test-integration && pnpm test:integration",
|
||||
"test:integration:setup": "NODE_ENV=test pnpm exec turbo run test:integration:setup",
|
||||
"test:acceptance": "cd login/apps/login-test-acceptance && pnpm test:acceptance",
|
||||
"test:acceptance:setup": "cd login/apps/login-test-acceptance && pnpm test:acceptance:setup",
|
||||
"dev": "pnpm exec turbo run dev --no-cache --continue",
|
||||
"dev:local": "pnpm test:acceptance:setup",
|
||||
"dev:console": "pnpm exec turbo run start --filter=console",
|
||||
"lint": "pnpm exec turbo run lint",
|
||||
"lint:fix": "pnpm exec turbo run lint:fix",
|
||||
"clean": "pnpm exec turbo run clean && rm -rf node_modules",
|
||||
"format:fix": "pnpm exec prettier --write \"**/*.{ts,tsx,md}\"",
|
||||
"format": "pnpm exec prettier --check \"**/*.{ts,tsx,md}\"",
|
||||
"changeset": "pnpm exec changeset",
|
||||
"version-packages": "pnpm exec changeset version",
|
||||
"release": "pnpm exec turbo run build --filter=login^... && pnpm exec changeset publish"
|
||||
"changeset": "changeset",
|
||||
"devcontainer": "devcontainer",
|
||||
"devcontainer:lint-unit": "pnpm devcontainer up --config .devcontainer/turbo-lint-unit/devcontainer.json --workspace-folder . --remove-existing-container",
|
||||
"devcontainer:integration:login": "pnpm devcontainer up --config .devcontainer/login-integration/devcontainer.json --workspace-folder . --remove-existing-container"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
@@ -39,20 +16,8 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.29.2",
|
||||
"@eslint/compat": "^1.3.1",
|
||||
"@eslint/eslintrc": "^3.3.1",
|
||||
"@vitejs/plugin-react": "^4.4.1",
|
||||
"axios": "^1.8.4",
|
||||
"dotenv": "^16.5.0",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "9.30.1",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"tsup": "^8.4.0",
|
||||
"turbo": "2.5.0",
|
||||
"typescript": "^5.8.3",
|
||||
"vite-tsconfig-paths": "^5.1.4",
|
||||
"vitest": "^3.1.2"
|
||||
"@changesets/cli": "^2.29.5",
|
||||
"@devcontainers/cli": "^0.80.0",
|
||||
"turbo": "2.5.5"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user