diff --git a/.gitignore b/.gitignore index 17aee6bbe9..507bb3c82c 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ cmd/zitadel/zitadel **/statik/statik.go /zitadelctl /zitadel +.build # buildfolders and generated files tmp/ diff --git a/Dockerfile b/Dockerfile index 79baa1852c..162c0f33f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,39 @@ ARG NODE_VERSION=22 ARG GO_VERSION=1.23 -## Console Base +## Console FROM node:${NODE_VERSION} AS console-base WORKDIR /app COPY console/package.json console/yarn.lock console/buf.gen.yaml ./ COPY proto/ ../proto/ RUN yarn install && yarn generate - -## Console Build -FROM console-base AS console-build COPY console/ . COPY docs/frameworks.json ../docs/frameworks.json + +FROM console-base AS console-build RUN yarn build -## Console Image -FROM nginx:stable-alpine AS console +FROM console-base AS console-lint +RUN yarn lint + +FROM nginx:stable-alpine AS console-image RUN rm -rf /usr/share/nginx/html/* COPY .build/console/nginx.conf /etc/nginx/nginx.conf COPY --from=console-build /app/dist /usr/share/nginx/html CMD ["nginx", "-g", "daemon off;"] -## Core Base +FROM scratch AS console-output +COPY --from=console-build /app/dist/console . + +## Core FROM golang:${GO_VERSION} AS core-base ARG SASS_VERSION=1.64.1 +ARG GOLANG_CI_VERSION=1.64.5 RUN apt-get update && apt-get install -y npm && npm install -g sass@${SASS_VERSION} +RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v${GOLANG_CI_VERSION} WORKDIR /app -COPY go.mod go.sum Makefile buf.gen.yaml buf.work.yaml main.go ./ +COPY go.mod go.sum Makefile buf.gen.yaml buf.work.yaml main.go .golangci.yaml ./ +COPY .git/ .git/ COPY cmd/ cmd/ COPY internal/ internal/ COPY openapi/ openapi/ @@ -34,9 +41,18 @@ COPY pkg/ pkg/ COPY proto/ proto/ COPY statik/ statik/ COPY --from=console-build /app/dist/console internal/api/ui/console/static -RUN ls -la proto/zitadel RUN make core_build -## Core Unit Test +FROM core-base AS core-build +RUN make compile + +FROM core-base AS core-lint +RUN make core_lint + +FROM scratch AS core-output +COPY --from=core-build /app/zitadel . + +FROM core-base AS core-image + FROM core-base AS core-unit-test RUN make core_unit_test diff --git a/Makefile b/Makefile index 27e76c0614..eabb0ee80a 100644 --- a/Makefile +++ b/Makefile @@ -14,14 +14,14 @@ ZITADEL_MASTERKEY ?= MasterkeyNeedsToHave32Characters export GOCOVERDIR INTEGRATION_DB_FLAVOR ZITADEL_MASTERKEY .PHONY: compile -compile: core_build console_build compile_pipeline +compile: core_build compile_pipeline .PHONY: docker_image docker_image: compile DOCKER_BUILDKIT=1 docker build -f build/Dockerfile -t $(ZITADEL_IMAGE) . .PHONY: compile_pipeline -compile_pipeline: console_move +compile_pipeline: CGO_ENABLED=0 go build -o zitadel -v -ldflags="-s -w -X 'github.com/zitadel/zitadel/cmd/build.commit=$(COMMIT_SHA)' -X 'github.com/zitadel/zitadel/cmd/build.date=$(now)' -X 'github.com/zitadel/zitadel/cmd/build.version=$(VERSION)' " chmod +x zitadel @@ -81,25 +81,6 @@ core_api: core_api_generator core_grpc_dependencies .PHONY: core_build core_build: core_dependencies core_api core_static core_assets -.PHONY: console_move -console_move: - cp -r console/dist/console/* internal/api/ui/console/static - -.PHONY: console_dependencies -console_dependencies: - cd console && \ - yarn install --immutable - -.PHONY: console_client -console_client: - cd console && \ - yarn generate - -.PHONY: console_build -console_build: console_dependencies console_client - cd console && \ - yarn build - .PHONY: clean clean: $(RM) -r .artifacts/grpc @@ -154,11 +135,6 @@ core_integration_reports: .PHONY: core_integration_test core_integration_test: core_integration_server_start core_integration_test_packages core_integration_server_stop core_integration_reports -.PHONY: console_lint -console_lint: - cd console && \ - yarn lint - .PHONY: core_lint core_lint: golangci-lint run \ diff --git a/console/package.json b/console/package.json index 2c1d38da1b..38ae5607ba 100644 --- a/console/package.json +++ b/console/package.json @@ -5,7 +5,6 @@ "ng": "ng", "start": "node prebuild.development.js && ng serve", "build": "ng build --configuration production --base-href=/ui/console/", - "prelint": "npm run generate", "lint": "ng lint && prettier --check src", "lint:fix": "prettier --write src", "generate": "buf generate ../proto --include-imports --include-wkt" diff --git a/docker-bake.hcl b/docker-bake.hcl index 8e2b32f2c4..e1b660b938 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -3,46 +3,77 @@ variable "GITHUB_SHA" { } variable "REGISTRY" { - default = "ghcr.io/zitadel" + default = "ghcr.io/fforootd" } group "generate" { - targets = ["console-base"] + targets = ["console-base", "core-base"] +} + +group "build" { + targets = ["console-build", "core-build"] +} + +group "output" { + targets = ["console-output", "core-output"] } group "unit-test" { targets = ["core-unit-test"] } +group "lint" { + targets = ["console-lint", "core-lint"] +} + target "console-base" { target = "console-base" - cache-from = ["type=gha,scope=console-base"] - cache-to = ["type=gha,mode=max,scope=console-base"] } -target "console-builder" { - target = "console-builder" - cache-from = ["type=gha,scope=console-builder"] - cache-to = ["type=gha,mode=max,scope=console-builder"] +target "console-build" { + target = "console-build" } -target "console" { - target = "console" +target "console-lint" { + target = "console-lint" +} + +target "console-image" { + target = "console-image" tags = [ "${REGISTRY}/console:${GITHUB_SHA}", ] - cache-from = ["type=gha,scope=console"] - cache-to = ["type=gha,mode=max,scope=console"] +} + +target "console-output" { + target = "console-output" + output = ["type=local,dest=.build/console"] } target "core-base" { target = "core-base" - cache-from = ["type=gha,scope=core-base"] - cache-to = ["type=gha,mode=max,scope=core-base"] +} + +target "core-build" { + target = "core-build" +} + +target "core-lint" { + target = "core-lint" +} + +target "core-image" { + target = "core-image" + tags = [ + "${REGISTRY}/zitadel:${GITHUB_SHA}", + ] +} + +target "core-output" { + target = "core-output" + output = ["type=local,dest=.build/core"] } target "core-unit-test" { target = "core-unit-test" - cache-from = ["type=gha,scope=core-unit-test"] - cache-to = ["type=gha,mode=max,scope=core-unit-test"] } \ No newline at end of file