From a34566e6fa9a3d11e79b5d88ce98334a2d6d4b51 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 10 Jun 2026 13:47:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 5 +++- docker-compose.yml | 1 - internal/workspace/handler.go | 53 +++++++++++++++++------------------ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index da466b8..3df43ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,10 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories WORKDIR /app COPY --from=go /out/server /app/server COPY migrations /app/migrations -RUN mkdir -p /data && chown app:app /data +RUN mkdir -p /data/uploads && chown -R app:app /data +ENV APP_DATA_DIR=/data \ + APP_WORKSPACE_DATA_DIR=/data \ + APP_STORAGE_LOCALFS_BASE_PATH=/data/uploads USER app EXPOSE 8080 ENTRYPOINT ["/app/server"] diff --git a/docker-compose.yml b/docker-compose.yml index 8690e0e..92137cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,6 @@ services: APP_HTTP_ADDR: ":8080" APP_DB_DSN: "postgres://${POSTGRES_USER:-acw}:${POSTGRES_PASSWORD:-acw}@postgres:5432/${POSTGRES_DB:-acw}?sslmode=disable" APP_MASTER_KEY: "${APP_MASTER_KEY}" - APP_DATA_DIR: "/data" APP_BOOTSTRAP_ADMIN_EMAIL: "${APP_BOOTSTRAP_ADMIN_EMAIL:-admin@local}" APP_BOOTSTRAP_ADMIN_PASSWORD: "${APP_BOOTSTRAP_ADMIN_PASSWORD}" ports: diff --git a/internal/workspace/handler.go b/internal/workspace/handler.go index 0b8648b..43328c0 100644 --- a/internal/workspace/handler.go +++ b/internal/workspace/handler.go @@ -42,35 +42,34 @@ func NewHandler(ws WorkspaceService, wt WorktreeService, gop GitOpsService, reso // Mount 把所有 workspace / worktree / gitops 路由挂到 r 上,统一装入 Auth 中间件。 func (h *Handler) Mount(r chi.Router) { - r.Route("/api/v1", func(r chi.Router) { - r.Use(middleware.Auth(h.resolver, middleware.AuthOptions{})) - r.Route("/projects/{projectSlug}/workspaces", func(r chi.Router) { - r.Post("/", h.createWorkspace) - r.Get("/", h.listWorkspaces) - }) - r.Route("/workspaces/{wsID}", func(r chi.Router) { - r.Get("/", h.getWorkspace) - r.Patch("/", h.updateWorkspace) - r.Delete("/", h.deleteWorkspace) - r.Post("/sync", h.syncWorkspace) - r.Put("/credential", h.upsertCredential) - r.Get("/credential", h.getCredentialMeta) + auth := middleware.Auth(h.resolver, middleware.AuthOptions{}) - r.Get("/main/status", h.statusOnMain) - r.Post("/main/commit", h.commitOnMain) - r.Post("/main/push", h.pushOnMain) + r.With(auth).Route("/api/v1/projects/{projectSlug}/workspaces", func(r chi.Router) { + r.Post("/", h.createWorkspace) + r.Get("/", h.listWorkspaces) + }) + r.With(auth).Route("/api/v1/workspaces/{wsID}", func(r chi.Router) { + r.Get("/", h.getWorkspace) + r.Patch("/", h.updateWorkspace) + r.Delete("/", h.deleteWorkspace) + r.Post("/sync", h.syncWorkspace) + r.Put("/credential", h.upsertCredential) + r.Get("/credential", h.getCredentialMeta) - r.Get("/worktrees", h.listWorktrees) - r.Post("/worktrees", h.createWorktree) - }) - r.Route("/worktrees/{wtID}", func(r chi.Router) { - r.Delete("/", h.deleteWorktree) - r.Post("/acquire", h.acquireWorktree) - r.Post("/release", h.releaseWorktree) - r.Get("/status", h.statusOnWorktree) - r.Post("/commit", h.commitOnWorktree) - r.Post("/push", h.pushOnWorktree) - }) + r.Get("/main/status", h.statusOnMain) + r.Post("/main/commit", h.commitOnMain) + r.Post("/main/push", h.pushOnMain) + + r.Get("/worktrees", h.listWorktrees) + r.Post("/worktrees", h.createWorktree) + }) + r.With(auth).Route("/api/v1/worktrees/{wtID}", func(r chi.Router) { + r.Delete("/", h.deleteWorktree) + r.Post("/acquire", h.acquireWorktree) + r.Post("/release", h.releaseWorktree) + r.Get("/status", h.statusOnWorktree) + r.Post("/commit", h.commitOnWorktree) + r.Post("/push", h.pushOnWorktree) }) }