@@ -151,12 +151,6 @@ token:
151151 - api
152152 # 不指定 expires_at,系统自动设为第2天
153153
154- # 方式 3: 注释掉 expires_at(推荐用于测试)
155- token:
156- scope:
157- - api
158- - read_user
159- # expires_at: 2026-01-01 # 注释掉则使用默认值
160154` ` `
161155
162156**默认过期时间说明**:
@@ -297,266 +291,3 @@ gitlab-cli/
297291- [架构设计文档](docs/ARCHITECTURE.md) - 详细的代码架构说明
298292- [模板使用指南](docs/TEMPLATE.md) - 自定义输出模板
299293- [详细使用文档](docs/README.md) - 完整功能说明
300-
301- ## 🔧 命令行参数
302-
303- ### user create
304-
305- 创建用户、组、项目和 Token。
306-
307- ```bash
308- ./bin/gitlab-cli user create [flags]
309- ```
310-
311- ** 参数** :
312-
313- - ` -f, --config ` - 配置文件路径 (默认: test-users.yaml)
314- - ` --host ` - GitLab 主机地址
315- - ` --token ` - GitLab Personal Access Token
316- - ` -o, --output ` - 输出结果到 YAML 文件
317- - ` -t, --template ` - 使用模板文件格式化输出
318-
319- ** 示例** :
320-
321- ``` bash
322- # 基本用法
323- ./bin/gitlab-cli user create -f config.yaml
324-
325- # 输出到文件
326- ./bin/gitlab-cli user create -f config.yaml -o output.yaml
327-
328- # 使用模板输出
329- ./bin/gitlab-cli user create -f config.yaml -o output.yaml -t template.yaml
330-
331- # 指定 GitLab 地址和 Token
332- ./bin/gitlab-cli user create \
333- --host https://gitlab.example.com \
334- --token glpat-xxxxxxxxxxxxxxxxxxxx \
335- -f config.yaml \
336- -o output.yaml
337- ```
338-
339- ### user cleanup
340-
341- 清理配置文件中定义的用户及其所有资源。
342-
343- ``` bash
344- ./bin/gitlab-cli user cleanup [flags]
345- ```
346-
347- ** 参数** :
348-
349- - ` -f, --config ` - 配置文件路径
350- - ` --host ` - GitLab 主机地址
351- - ` --token ` - GitLab Personal Access Token
352-
353- ** 示例** :
354-
355- ``` bash
356- ./bin/gitlab-cli user cleanup -f config.yaml
357- ```
358-
359- ## 🛠️ 开发
360-
361- ### 构建命令
362-
363- ``` bash
364- # 下载依赖
365- make deps
366-
367- # 格式化代码
368- make fmt
369-
370- # 运行代码检查
371- make lint
372-
373- # 运行测试
374- make test
375-
376- # 构建当前平台
377- make build
378-
379- # 构建所有平台
380- make build-all
381-
382- # 创建发布包
383- make release
384-
385- # 清理构建文件
386- make clean
387-
388- # 查看帮助
389- make help
390- ```
391-
392- ### 版本管理
393-
394- 版本号通过构建时注入:
395-
396- ``` bash
397- go build -ldflags " -X main.Version=1.0.0" -o bin/gitlab-cli ./cmd/gitlab-cli
398- ```
399-
400- 查看版本:
401-
402- ``` bash
403- ./bin/gitlab-cli --version
404- ```
405-
406- ## 🎯 使用场景
407-
408- ### 场景 1: CI/CD 测试环境准备
409-
410- 为 CI/CD 流程自动创建测试用户、组和项目:
411-
412- ``` yaml
413- users :
414- - username : ci-test-user
415- 416- name : CI Test User
417- password : " SecurePassword123!"
418- token :
419- scope :
420- - api
421- - read_repository
422- - write_repository
423- expires_at : 2025-12-31
424- groups :
425- - name : ci-test-group
426- visibility : private
427- projects :
428- - name : test-project
429- visibility : private
430- ` ` `
431-
432- ### 场景 2: 批量用户管理
433-
434- 为团队成员批量创建 GitLab 账户和项目空间:
435-
436- ` ` ` yaml
437- users :
438- - username : developer1
439- 440- token :
441- scope : [api, read_user]
442- groups :
443- - name : dev1-workspace
444-
445- - username : developer2
446- 447- token :
448- scope : [api, read_user]
449- groups :
450- - name : dev2-workspace
451- ` ` `
452-
453- ### 场景 3: 生成自定义配置
454-
455- 使用模板为其他系统生成配置文件:
456-
457- ` ` ` bash
458- # 生成符合特定格式的配置
459- ./bin/gitlab-cli user create \
460- -f users.yaml \
461- -o k8s-config.yaml \
462- -t k8s-template.yaml
463- ```
464-
465- ## ⚠️ 注意事项
466-
467- 1 . ** Token 安全**
468- - Personal Access Token 只在创建时显示一次
469- - 请妥善保存输出文件中的 Token 值
470- - 不要将包含 Token 的输出文件提交到版本控制
471-
472- 2 . ** 权限要求**
473- - 需要 GitLab 管理员权限的 Token
474- - Token 必须包含 ` api ` 和 ` sudo ` 权限范围
475-
476- 3 . ** 清理操作**
477- - ` cleanup ` 命令会删除用户及其所有关联资源
478- - 删除操作不可逆,请谨慎使用
479- - 建议在生产环境使用前先在测试环境验证
480-
481- 4 . ** 过期时间**
482- - Token 的过期时间默认为第2天
483- - 建议根据实际需要设置合适的过期时间
484- - 已过期的 Token 无法使用,需要重新创建
485-
486- ## 🐛 故障排查
487-
488- ### 认证失败
489-
490- ```
491- authentication failed: 401 Unauthorized
492- ```
493-
494- ** 解决方案** : 检查 Token 是否有效,是否有管理员权限。
495-
496- ### 权限不足
497-
498- ```
499- current user is not admin
500- ```
501-
502- ** 解决方案** : 确保使用的 Token 属于管理员账户。
503-
504- ### Token Scope 无效
505-
506- ```
507- scopes does not have a valid value
508- ```
509-
510- ** 解决方案** : 检查配置文件中的 scope 值是否为 GitLab 支持的权限范围。
511-
512- ### 模板渲染错误
513-
514- ```
515- parse template: template: output:1: unexpected "}"
516- ```
517-
518- ** 解决方案** : 检查模板语法,确保所有的 ` {{ ` 都有对应的 ` }} ` 。
519-
520- ## 📝 更新日志
521-
522- ### v0.2.0 (Latest)
523-
524- ** 新功能** :
525- - ✨ 添加 Personal Access Token 自动创建功能
526- - ✨ 支持自定义 Token 权限范围和过期时间
527- - ✨ Token 过期时间默认值(第2天)
528- - ✨ 输出结果到 YAML 文件
529- - ✨ 自定义模板输出功能
530- - ✨ 完整的输出数据结构(包括 Token 值、项目 URL 等)
531-
532- ** 改进** :
533- - 📝 完善文档和使用示例
534- - 🔧 优化错误处理和日志输出
535-
536- ### v0.1.0
537-
538- ** 初始版本** :
539- - ✅ 基于 GitLab Go SDK 的基础实现
540- - ✅ 用户、组、项目的创建和管理
541- - ✅ 批量操作支持
542- - ✅ 清理功能
543-
544- ## 🤝 贡献
545-
546- 欢迎贡献代码!请遵循以下步骤:
547-
548- 1 . Fork 本项目
549- 2 . 创建特性分支 (` git checkout -b feature/AmazingFeature ` )
550- 3 . 提交更改 (` git commit -m 'Add some AmazingFeature' ` )
551- 4 . 推送到分支 (` git push origin feature/AmazingFeature ` )
552- 5 . 创建 Pull Request
553-
554- ## 📄 许可证
555-
556- MIT License
557-
558- ## 🙏 致谢
559-
560- - [ GitLab Go SDK] ( https://gitlab.com/gitlab-org/api/client-go ) - 官方 GitLab API 客户端
561- - [ Cobra] ( https://github.com/spf13/cobra ) - CLI 框架
562- - [ YAML v3] ( https://github.com/go-yaml/yaml ) - YAML 解析库
0 commit comments