mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 13:19:21 +00:00
hot swappable dev services
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
FROM mcr.microsoft.com/devcontainers/base:ubuntu AS dev
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
RUN apt-get --no-install-recommends install -y \
|
||||
libgtk2.0-0t64 libgtk-3-0t64 libgbm-dev libnotify-dev libnss3 libxss1 libasound2t64 libxtst6 xauth xvfb && \
|
||||
# clean up
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
apt-get clean
|
||||
|
||||
RUN pnpm install --recursive --frozen-lockfile .
|
16
.devcontainer/base/Dockerfile
Normal file
16
.devcontainer/base/Dockerfile
Normal file
@@ -0,0 +1,16 @@
|
||||
FROM mcr.microsoft.com/devcontainers/typescript-node:20-bookworm
|
||||
|
||||
ENV SHELL=/bin/bash \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
LANG=C.UTF-8 \
|
||||
LC_ALL=C.UTF-8 \
|
||||
CI=1 \
|
||||
PNPM_HOME=/home/node/.local/share/pnpm \
|
||||
PATH=/home/node/.local/share/pnpm:$PATH
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get --no-install-recommends install -y \
|
||||
libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb && \
|
||||
apt-get clean && \
|
||||
corepack enable && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare pnpm@9.1.2 --activate
|
@@ -8,11 +8,8 @@
|
||||
"ghcr.io/devcontainers/features/go:1": {
|
||||
"version": "1.24"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "lts/iron"
|
||||
},
|
||||
"ghcr.io/guiyomh/features/golangci-lint:0": {},
|
||||
"ghcr.io/jungaretti/features/make:1": {},
|
||||
"ghcr.io/jungaretti/features/make:1": {}
|
||||
},
|
||||
"forwardPorts": [
|
||||
3000,
|
||||
@@ -20,7 +17,8 @@
|
||||
4200,
|
||||
8080
|
||||
],
|
||||
"onCreateCommand": "npm install -g sass@1.64.1",
|
||||
"remoteUser": "node",
|
||||
"onCreateCommand": "pnpm install -g sass@1.64.1 && pnpm install --frozen-lockfile --recursive",
|
||||
"customizations": {
|
||||
"jetbrains": {
|
||||
"settings": {
|
@@ -1,10 +1,12 @@
|
||||
services:
|
||||
|
||||
devcontainer:
|
||||
container_name: devcontainer
|
||||
user: node
|
||||
build:
|
||||
context: .
|
||||
volumes:
|
||||
- ..:/workspaces:cached
|
||||
- ../../:/workspaces:cached
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:cached
|
||||
- ~/.cache:/home/vscode/.cache:delegated
|
||||
command: sleep infinity
|
||||
@@ -34,7 +36,7 @@ services:
|
||||
mock-zitadel:
|
||||
container_name: mock-zitadel
|
||||
build:
|
||||
context: ../apps/login/packages/integration/core-mock
|
||||
context: ../../apps/login/packages/integration/core-mock
|
||||
ports:
|
||||
- 22220:22220
|
||||
- 22222:22222
|
||||
@@ -42,10 +44,7 @@ services:
|
||||
login-integration:
|
||||
container_name: login-integration
|
||||
image: "${LOGIN_TAG:-ghcr.io/zitadel/zitadel-login:v4.0.0-rc.2}"
|
||||
env_file:
|
||||
- fileName: ../apps/login/apps/login/.env.test
|
||||
volumes:
|
||||
- ../apps/login/apps/login/.env.test:/env-files/.env:cached
|
||||
env_file: ../../apps/login/apps/login/.env.test
|
||||
network_mode: service:devcontainer
|
||||
environment:
|
||||
PORT: 3001
|
||||
@@ -58,8 +57,8 @@ services:
|
||||
container_name: zitadel
|
||||
command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --config /zitadel.yaml --steps /zitadel.yaml'
|
||||
volumes:
|
||||
- ../apps/login/packages/acceptance/pat:/pat:delegated
|
||||
- ../apps/login/packages/acceptance/zitadel.yaml:/zitadel.yaml:cached
|
||||
- ../../apps/login/packages/acceptance/pat:/pat:delegated
|
||||
- ../../apps/login/packages/acceptance/zitadel.yaml:/zitadel.yaml:cached
|
||||
network_mode: service:devcontainer
|
||||
healthcheck:
|
||||
test:
|
||||
@@ -76,7 +75,7 @@ services:
|
||||
container_name: configure-login
|
||||
restart: no
|
||||
build:
|
||||
context: ../apps/login/packages/acceptance/setup
|
||||
context: ../../apps/login/packages/acceptance/setup
|
||||
dockerfile: ../go-command.Dockerfile
|
||||
entrypoint: "./setup.sh"
|
||||
network_mode: service:devcontainer
|
||||
@@ -91,18 +90,18 @@ services:
|
||||
ZITADEL_API_DOMAIN: localhost
|
||||
ZITADEL_ADMIN_USER: zitadel-admin@zitadel.localhost
|
||||
volumes:
|
||||
- ../apps/login/packages/acceptance/pat:/pat:cached # Read the PAT file from zitadels setup
|
||||
- ../apps/login/apps/login:/login-env:delegated # Write the environment variables file for the login
|
||||
- ../../apps/login/packages/acceptance/pat:/pat:cached # Read the PAT file from zitadels setup
|
||||
- ../../apps/login/apps/login:/login-env:delegated # Write the environment variables file for the login
|
||||
depends_on:
|
||||
zitadel:
|
||||
condition: "service_healthy"
|
||||
|
||||
login:
|
||||
login-acceptance:
|
||||
container_name: login
|
||||
image: "${LOGIN_TAG:-ghcr.io/zitadel/zitadel-login:v4.0.0-rc.2}"
|
||||
network_mode: service:devcontainer
|
||||
volumes:
|
||||
- ../apps/login/apps/login/.env.test.local:/env-files/.env:cached
|
||||
- ../../apps/login/apps/login/.env.test.local:/env-files/.env:cached
|
||||
depends_on:
|
||||
configure-login:
|
||||
condition: service_completed_successfully
|
||||
@@ -110,7 +109,7 @@ services:
|
||||
mock-notifications:
|
||||
container_name: mock-notifications
|
||||
build:
|
||||
context: ../apps/login/packages/acceptance/sink
|
||||
context: ../../apps/login/packages/acceptance/sink
|
||||
dockerfile: ../go-command.Dockerfile
|
||||
args:
|
||||
- LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine}
|
||||
@@ -134,7 +133,7 @@ services:
|
||||
mock-oidcrp:
|
||||
container_name: mock-oidcrp
|
||||
build:
|
||||
context: ../apps/login/packages/acceptance/oidcrp
|
||||
context: ../../apps/login/packages/acceptance/oidcrp
|
||||
dockerfile: ../go-command.Dockerfile
|
||||
args:
|
||||
- LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine}
|
||||
@@ -149,7 +148,7 @@ services:
|
||||
PORT: '8000'
|
||||
SCOPES: 'openid profile email'
|
||||
volumes:
|
||||
- ../apps/login/packages/acceptance/pat:/pat:cached
|
||||
- ../../apps/login/packages/acceptance/pat:/pat:cached
|
||||
depends_on:
|
||||
configure-login:
|
||||
condition: "service_completed_successfully"
|
||||
@@ -157,7 +156,7 @@ services:
|
||||
# mock-oidcop:
|
||||
# container_name: mock-oidcop
|
||||
# build:
|
||||
# context: ../apps/login/packages/acceptance/idp/oidc
|
||||
# context: ../../apps/login/packages/acceptance/idp/oidc
|
||||
# dockerfile: ../../go-command.Dockerfile
|
||||
# args:
|
||||
# - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine}
|
||||
@@ -178,7 +177,7 @@ services:
|
||||
mock-samlsp:
|
||||
container_name: mock-samlsp
|
||||
build:
|
||||
context: ../apps/login/packages/acceptance/samlsp
|
||||
context: ../../apps/login/packages/acceptance/samlsp
|
||||
dockerfile: ../go-command.Dockerfile
|
||||
args:
|
||||
- LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine}
|
||||
@@ -200,7 +199,7 @@ services:
|
||||
# mock-samlidp:
|
||||
# container_name: mock-samlidp
|
||||
# build:
|
||||
# context: ../apps/login/packages/acceptance/idp/saml
|
||||
# context: ../../apps/login/packages/acceptance/idp/saml
|
||||
# dockerfile: ../../go-command.Dockerfile
|
||||
# args:
|
||||
# - LOGIN_TEST_ACCEPTANCE_GOLANG_TAG=${LOGIN_TEST_ACCEPTANCE_GOLANG_TAG:-golang:1.24-alpine}
|
22
.devcontainer/debug-login-integration/devcontainer.json
Normal file
22
.devcontainer/debug-login-integration/devcontainer.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json",
|
||||
"name": "debug-login-integration",
|
||||
"dockerComposeFile": [
|
||||
"../base/docker-compose.yml",
|
||||
"docker-compose.yml"
|
||||
],
|
||||
"service": "debug-login-integration",
|
||||
"runServices": ["debug-login-integration"],
|
||||
"workspaceFolder": "/workspaces",
|
||||
"forwardPorts": [3001],
|
||||
"remoteUser": "node",
|
||||
"onCreateCommand": "pnpm install --frozen-lockfile --recursive",
|
||||
"postAttachCommand": "pnpm turbo daemon clean && pnpm turbo @zitadel/login#dev",
|
||||
"customizations": {
|
||||
"jetbrains": {
|
||||
"settings": {
|
||||
"com.intellij:app:HttpConfigurable.use_proxy_pac": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
.devcontainer/debug-login-integration/docker-compose.yml
Normal file
12
.devcontainer/debug-login-integration/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
debug-login-integration:
|
||||
extends:
|
||||
file: ../base/docker-compose.yml
|
||||
service: devcontainer
|
||||
container_name: debug-login-integration
|
||||
environment:
|
||||
NODE_ENV: 'test'
|
||||
PORT: 3001
|
||||
depends_on:
|
||||
mock-zitadel:
|
||||
condition: service_started
|
@@ -1,18 +1,17 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/refs/heads/main/schemas/devContainer.schema.json",
|
||||
"name": "login",
|
||||
"name": "debug-turbo-lint-unit",
|
||||
"dockerComposeFile": [
|
||||
"../docker-compose.yml",
|
||||
"../base/docker-compose.yml",
|
||||
"docker-compose.yml"
|
||||
],
|
||||
"service": "devcontainer",
|
||||
"service": "debug-turbo-lint-unit",
|
||||
"runServices": ["debug-turbo-lint-unit"],
|
||||
"workspaceFolder": "/workspaces",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"version": "lts/iron"
|
||||
}
|
||||
},
|
||||
"forwardPorts": [3001],
|
||||
"remoteUser": "node",
|
||||
"onCreateCommand": "pnpm install --frozen-lockfile --recursive",
|
||||
"postAttachCommand": "pnpm turbo daemon clean && pnpm turbo watch lint test:unit",
|
||||
"customizations": {
|
||||
"jetbrains": {
|
||||
"settings": {
|
6
.devcontainer/debug-turbo-lint-unit/docker-compose.yml
Normal file
6
.devcontainer/debug-turbo-lint-unit/docker-compose.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
services:
|
||||
debug-turbo-lint-unit:
|
||||
extends:
|
||||
file: ../base/docker-compose.yml
|
||||
service: devcontainer
|
||||
container_name: debug-turbo-lint-unit
|
@@ -1,14 +0,0 @@
|
||||
services:
|
||||
login-integration:
|
||||
extends:
|
||||
file: ../docker-compose.yml
|
||||
service: devcontainer
|
||||
container_name: login-integration
|
||||
command: pnpm turbo @zitadel/login#dev
|
||||
network_mode: service:devcontainer
|
||||
environment:
|
||||
NODE_ENV: 'test'
|
||||
PORT: 3001
|
||||
depends_on:
|
||||
mock-zitadel:
|
||||
condition: service_started
|
@@ -5,10 +5,8 @@
|
||||
"scripts": {
|
||||
"changeset": "changeset",
|
||||
"devcontainer": "devcontainer",
|
||||
"test:integration": "cd login/integration && pnpm test:integration",
|
||||
"test:integration:setup": "cd login/integration && NODE_ENV=test pnpm exec turbo run test:integration:setup",
|
||||
"test:acceptance": "cd login/acceptance && pnpm test:acceptance",
|
||||
"test:acceptance:setup": "cd login/apps/login-test-acceptance && pnpm test:acceptance:setup"
|
||||
"test:integration": "cd apps/login/packages/integration && pnpm test:integration",
|
||||
"test:acceptance": "cd apps/login/packages/acceptance && pnpm test:acceptance"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
@@ -19,7 +17,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.29.5",
|
||||
"devcontainer": "^0.3.0",
|
||||
"@devcontainers/cli": "^0.80.0",
|
||||
"turbo": "2.5.5"
|
||||
}
|
||||
}
|
||||
|
18
pnpm-lock.yaml
generated
18
pnpm-lock.yaml
generated
@@ -16,9 +16,9 @@ importers:
|
||||
'@changesets/cli':
|
||||
specifier: ^2.29.5
|
||||
version: 2.29.5
|
||||
devcontainer:
|
||||
specifier: ^0.3.0
|
||||
version: 0.3.0
|
||||
'@devcontainers/cli':
|
||||
specifier: ^0.80.0
|
||||
version: 0.80.0
|
||||
turbo:
|
||||
specifier: 2.5.5
|
||||
version: 2.5.5
|
||||
@@ -2166,6 +2166,11 @@ packages:
|
||||
'@cypress/xvfb@1.2.4':
|
||||
resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
|
||||
|
||||
'@devcontainers/cli@0.80.0':
|
||||
resolution: {integrity: sha512-w2EaxgjyeVGyzfA/KUEZBhyXqu/5PyWNXcnrXsZOBrt3aN2zyGiHrXoG54TF6K0b5DSCF01Rt5fnIyrCeFzFKw==}
|
||||
engines: {node: ^16.13.0 || >=18.0.0}
|
||||
hasBin: true
|
||||
|
||||
'@discoveryjs/json-ext@0.5.7':
|
||||
resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
@@ -7363,9 +7368,6 @@ packages:
|
||||
engines: {node: '>= 4.0.0'}
|
||||
hasBin: true
|
||||
|
||||
devcontainer@0.3.0:
|
||||
resolution: {integrity: sha512-RAZPW5YLy7bgX3rYRjAzxedQPccJPgRPgfXOUGC3uIJSmcw5x4GEigNPswk/IH4N3f2BIeCAlNKeG6l1xYbXzg==}
|
||||
|
||||
devlop@1.1.0:
|
||||
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
|
||||
|
||||
@@ -16861,6 +16863,8 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@devcontainers/cli@0.80.0': {}
|
||||
|
||||
'@discoveryjs/json-ext@0.5.7': {}
|
||||
|
||||
'@docsearch/css@3.9.0': {}
|
||||
@@ -23381,8 +23385,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
devcontainer@0.3.0: {}
|
||||
|
||||
devlop@1.1.0:
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
|
Reference in New Issue
Block a user