diff --git a/staging/README.md b/staging/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7768b58cdea261c0ad31866da83d27464f4a1256 --- /dev/null +++ b/staging/README.md @@ -0,0 +1,60 @@ +# External Repository Staging Area + +This directory is the staging area for packages that have been split to their +own repository. The content here will be periodically published to respective +top-level kubesphere.io repositories. + +Repositories currently staged here: + +- [`kubesphere.io/client-go`](https://github.com/kubesphere/client-go) + + +The code in the staging/ directory is authoritative, i.e. the only copy of the +code. You can directly modify such code. + +## Using staged repositories from KubeSphere code + +KubeSphere code uses the repositories in this directory via symlinks in the +`vendor/kubesphere.io` directory into this staging area. For example, when +KubeSphere code imports a package from the `kubesphere.io/client-go` repository, that +import is resolved to `staging/src/kubesphere.io/client-go` relative to the project +root: + +```go +// pkg/example/some_code.go +package example + +import ( + "kubesphere.io/client-go/" // resolves to staging/src/kubesphere.io/client-go/dynamic +) +``` + +Once the change-over to external repositories is complete, these repositories +will actually be vendored from `kubesphere.io/`. + +## Creating a new repository in staging + +### Adding the staging repository in `kubesphere/kubesphere`: + +1. Add a propose to sig-architecture in [community](https://github.com/kubesphere/community/). Waiting approval for creating the staging repository. + +2. Once approval has been granted, create the new staging repository. + +3. Add a symlink to the staging repo in `vendor/kubesphere.io`. + +4. Add all mandatory template files to the staging repo such as README.md, LICENSE, OWNER,CONTRIBUTING.md. + + +### Creating the published repository + +1. Create an repository in the KubeSphere org. The published repository **must** have an +initial empty commit. + +2. Setup branch protection and enable access to the `ks-publishing-bot` bot. + +3. Once the repository has been created in the KubeSphere org, update the publishing-bot to publish the staging repository by updating: + + - [`rules.yaml`](/staging/publishing/rules.yaml): + Make sure that the list of dependencies reflects the staging repos in the `Godeps.json` file. + +4. Add the repo to the list of staging repos in this `README.md` file. \ No newline at end of file diff --git a/staging/publishing/rules.yaml b/staging/publishing/rules.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ddd51301c97ae7d4f721070b1eb933b5dcf2e844 --- /dev/null +++ b/staging/publishing/rules.yaml @@ -0,0 +1,21 @@ +recursive-delete-patterns: +- BUILD +default-go-version: 1.13.15 +rules: +- destination: client-go + library: true + branches: + - source: + branch: master + dir: staging/src/kubesphere.io/client-go + name: master + # - source: + # branch: release-3.1 + # dir: staging/src/kubesphere.io/client-go + # name: release-3.1 + # go: 1.13.15 + + smoke-test: | + # assumes GO111MODULE=on + go build ./... + go test ./... \ No newline at end of file