repo-scaffolding 插件

这个插件会基于一个脚手架仓库来初始化一个 Gihub 或者 GitLab 仓库。

用例

下面的配置文件展示的是”tool file”的内容。

关于更多关于DevStream的主配置、tool file、var file的信息,请阅读核心概念概览DevStream配置.

YAML

  1. tools:
  2. # name of the tool
  3. - name: repo-scaffolding
  4. # id of the tool instance
  5. instanceID: default
  6. # format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
  7. dependsOn: [ ]
  8. # options for the plugin
  9. options:
  10. # desinationRepo is the config for desination repo
  11. destinationRepo:
  12. # scm common field
  13. branch: YOUR_REPO_BRANCH
  14. token: YOUR_REPO_SCM_TOKEN
  15. # you can directly use the url of repo (git@gitlab.com/root/test-exmaple.git for example)
  16. url: YOUR_REPO_URL
  17. # or you can config detailed fields for this repo
  18. owner: YOUR_REPO_OWNER
  19. org: YOUR_REPO_ORG
  20. name: YOUR_REPO_NAME
  21. scmType: gitlab
  22. # you can config this field if you are using self-host gitlab
  23. baseURL: YOUR_SELF_HOST_GITLAB_URL
  24. # sourceRepo is the template repo location, support github only
  25. sourceRepo:
  26. # scm common field
  27. branch: YOUR_REPO_BRANCH
  28. token: YOUR_REPO_SCM_TOKEN
  29. # you can directly use the url of repo (git@github.com/root/test-exmaple.git for example)
  30. url: YOUR_REPO_URL
  31. # or you can config detailed fields for this repo
  32. owner: YOUR_REPO_OWNER
  33. org: YOUR_REPO_ORG
  34. name: YOUR_REPO_NAME
  35. scmType: github
  36. # this is used for template render
  37. vars:
  38. imageRepo: YOUR_DOCKERHUB_REPOSITORY

注意:

  • 如果你执行 dtm delete 命令,这个仓库将会被删除。
  • 如果你执行 dtm update 命令, 这个仓库将会被删除然后重新创建。
  • 对于 repo-scaffolding 插件,目前只需要 token 有 repo, delete_repo 权限即可。
  • destinationRepo 配置字段用于表示代码仓库的配置信息,具体配置可查看SCM配置项
  • sourceRepo 配置字段用于表示代码仓库的配置信息,具体配置可查看SCM配置项
  • destinationRepo 如果是 gitlab, 则支持配置 destinationRepo.visibility,此配置用于设置新建仓库的权限,支持的选项有 public, privateinternal

变量

这个配置用于设置渲染源脚手架仓库时的变量,以下变量会默认设置:

JSON

  1. {
  2. "AppName": destinationRepo.repo,
  3. "Repo": {
  4. "Name": destinationRepo.repo,
  5. "Owner": destinationRepo.owner
  6. }
  7. }

Outputs

这个插件有以下三个输出:

  • owner
  • repo
  • repoURL

示例

官方支持脚手架项目

以下仓库是用于在 sourceRepo 设置的官方脚手架仓库,你可以使用这些仓库或者创建自己的脚手架仓库。

languageorgrepo
Golangdevstream-iodtm-scaffolding-golang
Golangdevstream-iodtm-scaffolding-golang-cli
Java Springspring-guidesgs-spring-boot
Pythondevstream-iodtm-repo-scaffolding-python-flask

Golang

YAML

  1. tools:
  2. - name: repo-scaffolding
  3. instanceID: golang-scaffolding
  4. options:
  5. destinationRepo:
  6. owner: test_owner
  7. org: ""
  8. name: dtm-test-golang
  9. branch: main
  10. scmType: github
  11. sourceRepo:
  12. org: devstream-io
  13. name: dtm-scaffolding-golang
  14. scmType: github
  15. vars:
  16. ImageRepo: dtm-test/golang-repo

这个配置在 GitHub 为用于 test_owner 创建 dtm-test-golang 仓库,它的生成是基于 devstream-io/dtm-scaffolding-golang 官方 Golang 脚手架仓库和传入的变量 ImageRepo

Golang CLI

YAML

  1. tools:
  2. - name: repo-scaffolding
  3. instanceID: golang-cli-scaffolding
  4. options:
  5. destinationRepo:
  6. owner: test_owner
  7. org: ""
  8. name: dtm-test-golang-cli
  9. branch: main
  10. scmType: github
  11. sourceRepo:
  12. org: devstream-io
  13. name: dtm-scaffolding-golang-cli
  14. scmType: github

这个配置在 GitHub 为用于 test_owner 创建 dtm-test-golang-cli 仓库,它的生成是基于 devstream-io/dtm-scaffolding-golang-cli 官方 Golang CLI 脚手架仓库。

Java Spring

YAML

  1. tools:
  2. - name: repo-scaffolding
  3. instanceID: java-scaffolding
  4. options:
  5. destinationRepo:
  6. owner: test_owner
  7. org: ""
  8. name: dtm-test-java
  9. branch: main
  10. baseUrl: 127.0.0.1:30001
  11. visibility: public
  12. scmType: gitlab
  13. sourceRepo:
  14. org: spring-guides
  15. name: gs-spring-boot
  16. scmType: github

这个配置会在 GitLab 为用户 test_owner 创建 dtm-test-java 仓库,使用的是 Spring 官方的 spring-guides/gs-spring-boot 仓库。