- README 重写:两阶段架构、LDAP 读/GraphQL 写、部门索引组名、离职双确认、 部署(起 LLDAP + Authelia 官方 lldap 模板 + 配 idsync + 构建运行)、命令、测试 - Makefile:test-integration 改指本地 LLDAP(3890/17170),新增 make lldap 起容器, 头部注释更新为 LLDAP - AGENTS.md:移除「迁移状态」节(迁移已完成,旧实现已删除/收敛)
98 lines
2.6 KiB
Makefile
98 lines
2.6 KiB
Makefile
# idsync — 飞书 → SQLite → LLDAP 同步器
|
|
# 宿主未安装 Go,所有 Go 操作都在 podman 容器内执行。
|
|
# 注意:容器必须 --network=host,否则容器内的 127.0.0.1 指向容器自身,无法访问宿主代理。
|
|
|
|
GO_IMAGE := docker.io/library/golang:1.26-trixie
|
|
NODE_IMAGE := docker.io/library/node:20-alpine
|
|
PROXY := http://127.0.0.1:10808
|
|
|
|
PODMAN := podman run --rm --pull=never --network=host \
|
|
-e http_proxy=$(PROXY) -e https_proxy=$(PROXY) \
|
|
-v $(PWD):/app -w /app \
|
|
-v idsync-gomod:/go/pkg/mod \
|
|
-v idsync-gocache:/root/.cache/go-build
|
|
|
|
.PHONY: default
|
|
default: help
|
|
|
|
.PHONY: deps
|
|
deps:
|
|
$(PODMAN) $(GO_IMAGE) go mod download
|
|
$(PODMAN) $(GO_IMAGE) go mod tidy
|
|
|
|
.PHONY: build
|
|
build:
|
|
$(PODMAN) -e CGO_ENABLED=0 $(GO_IMAGE) go build -trimpath -o bin/idsync .
|
|
|
|
.PHONY: test
|
|
test:
|
|
$(PODMAN) $(GO_IMAGE) go test ./...
|
|
|
|
.PHONY: vet
|
|
vet:
|
|
$(PODMAN) $(GO_IMAGE) go vet ./...
|
|
|
|
# 集成测试对真实 LLDAP 运行(LDAP 3890 / GraphQL 17170),先 `make lldap` 起容器。
|
|
LDAP_TEST ?= ldap://127.0.0.1:3890
|
|
LLDAP_GQL ?= http://127.0.0.1:17170
|
|
|
|
.PHONY: lldap
|
|
lldap:
|
|
podman run -d --name idsync-lldap \
|
|
-e LLDAP_LDAP_BASE_DN=dc=example,dc=com \
|
|
-e LLDAP_JWT_SECRET='change-me-jwt-secret-please' \
|
|
-e LLDAP_LDAP_USER_PASS=adminpass \
|
|
-p 3890:3890 -p 17170:17170 \
|
|
ghcr.io/lldap/lldap:stable
|
|
|
|
.PHONY: test-integration
|
|
test-integration:
|
|
podman run --rm --pull=never --network=host \
|
|
--add-host host.containers.internal:host-gateway \
|
|
-e no_proxy=127.0.0.1,localhost,host.containers.internal \
|
|
-e NO_PROXY=127.0.0.1,localhost,host.containers.internal \
|
|
-e LDAP_TEST_URL=$(LDAP_TEST) \
|
|
-v $(PWD):/app -w /app \
|
|
-v idsync-gomod:/go/pkg/mod \
|
|
-v idsync-gocache:/root/.cache/go-build \
|
|
$(GO_IMAGE) go test -tags=integration ./internal/... -v
|
|
|
|
.PHONY: fmt
|
|
fmt:
|
|
$(PODMAN) $(GO_IMAGE) gofmt -l -w .
|
|
|
|
.PHONY: css
|
|
css:
|
|
sh scripts/build-webui.sh
|
|
|
|
.PHONY: run
|
|
run:
|
|
$(PODMAN) $(GO_IMAGE) go run . -config config.yml
|
|
|
|
.PHONY: shell
|
|
shell:
|
|
podman run --rm -it --network=host \
|
|
-e http_proxy=$(PROXY) -e https_proxy=$(PROXY) \
|
|
-v $(PWD):/app -w /app \
|
|
-v idsync-gomod:/go/pkg/mod \
|
|
-v idsync-gocache:/root/.cache/go-build \
|
|
$(GO_IMAGE) bash
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf bin
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo "目标:"
|
|
@echo " deps 下载并整理 Go 依赖"
|
|
@echo " build 构建 bin/idsync"
|
|
@echo " test 运行单元测试"
|
|
@echo " test-integration 对真实 OpenLDAP 运行集成测试"
|
|
@echo " vet go vet"
|
|
@echo " fmt 格式化"
|
|
@echo " css 构建 WebUI 样式(node 容器)"
|
|
@echo " run 本地运行"
|
|
@echo " shell 进入构建容器"
|
|
@echo " clean 清理产物"
|