Files
idsync/Makefile
T
caowangrenbo 6d31cba631 docs: 交付收尾(README/Dockerfile/Makefile 对齐 + 移除迁移状态节)
- README 重写:两阶段架构、LDAP 读/GraphQL 写、部门索引组名、离职双确认、
  部署(起 LLDAP + Authelia 官方 lldap 模板 + 配 idsync + 构建运行)、命令、测试
- Makefile:test-integration 改指本地 LLDAP(3890/17170),新增 make lldap 起容器,
  头部注释更新为 LLDAP
- AGENTS.md:移除「迁移状态」节(迁移已完成,旧实现已删除/收敛)
2026-09-29 23:58:29 +08:00

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 清理产物"