Skip to content

repo-scaffolding Plugin

This plugin bootstraps a GitHub or GitLab repo with scaffolding code for a web application.

Usage

The following content is an example of the "tool file".

For more information on the main config, the tool file, and the var file of DevStream, see Core Concepts Overview and DevStream Configuration.

YAML
tools:
# name of the tool
- name: repo-scaffolding
  # id of the tool instance
  instanceID: default
  # format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
  dependsOn: [ ]
  # options for the plugin
  options:
    # desinationRepo is the config for desination repo
    destinationRepo:
      # scm common field
      branch: YOUR_REPO_BRANCH
      token: YOUR_REPO_SCM_TOKEN
      # you can directly use the url of repo (git@gitlab.com/root/test-exmaple.git for example)
      url: YOUR_REPO_URL
      # or you can config detailed fields for this repo
      owner: YOUR_REPO_OWNER
      org: YOUR_REPO_ORG
      name: YOUR_REPO_NAME
      scmType: gitlab
      # you can config this field if you are using self-host gitlab
      baseURL: YOUR_SELF_HOST_GITLAB_URL
    # sourceRepo is the template repo location, support github only
    sourceRepo:
      # scm common field
      branch: YOUR_REPO_BRANCH
      token: YOUR_REPO_SCM_TOKEN
      # you can directly use the url of repo (git@github.com/root/test-exmaple.git for example)
      url: YOUR_REPO_URL
      # or you can config detailed fields for this repo
      owner: YOUR_REPO_OWNER
      org: YOUR_REPO_ORG
      name: YOUR_REPO_NAME
      scmType: github
    # this is used for template render
    vars:
      imageRepo: YOUR_DOCKERHUB_REPOSITORY

Notes:

  • If you run dtm delete, the repo will be completely removed.
  • If the Update interface is called, the repo will be completely removed and recreated.
  • For the repo-scaffolding plugin, we only need repo, delete_repo permission for the token.
  • destinationRepo config option represents codebase location; for more info, you can refer to SCM Config.
  • sourceRepo config option represents codebase location; for more info, you can refer to SCM Config.
  • if destinationRepo type is Gitlab, then Devstream supports config destinationRepo.visibility. This configuration is used to set the permissions of the new repository. The options are public, private, and internal.

vars

This configuration is used for template rendering, It has default variables listed below:

JSON
{
    "AppName": destinationRepo.repo,
    "Repo": {
        "Name": destinationRepo.repo,
        "Owner": destinationRepo.owner
    }
}

Outputs

This plugin has three outputs:

  • owner
  • repo
  • repoURL

Examples

official scaffolding repo config

These repositories are official scaffolding repo to use for sourceRepo config; You can use these repo directly or just create one for yourself.

language org repo
Golang devstream-io dtm-repo-scaffolding-golang-gin
Golang devstream-io dtm-repo-scaffolding-golang-cli
Python devstream-io dtm-repo-scaffolding-python-flask
Java devstream-io dtm-repo-scaffolding-java-springboot

Golang

YAML
tools:
- name: repo-scaffolding
  instanceID: golang-scaffolding
  options:
    destinationRepo:
      owner: test_owner
      org: ""
      name: dtm-test-golang
      branch: main
      scmType: github
    sourceRepo:
      org: devstream-io
      name: dtm-repo-scaffolding-golang-gin
      scmType: github
    vars:
      imageRepo: dtm-test/golang-repo

This config will create dtm-test-golang repo for user test_owner in GitHub, and the variable ImageRepo will be used for template rendering.

Golang CLI

YAML
tools:
- name: repo-scaffolding
  instanceID: golang-cli-scaffolding
  options:
    destinationRepo:
      owner: test_owner
      org: ""
      name: dtm-test-golang-cli
      branch: main
      scmType: github
    sourceRepo:
      org: devstream-io
      name: dtm-repo-scaffolding-golang-cli
      scmType: github

This config will create dtm-test-golang-cli repo for user test_owner in GitHub.

Java Spring

YAML
tools:
- name: repo-scaffolding
  instanceID: java-scaffolding
  options:
    destinationRepo:
      owner: test_owner
      org: ""
      name: dtm-test-java
      branch: main
      baseUrl: 127.0.0.1:30001
      visibility: public
      scmType: gitlab
    sourceRepo:
      org: devstream-io
      name: dtm-repo-scaffolding-java-springboot
      scmType: github

This config will create dtm-test-java repo for user test_owner in GitHub.