Merge pull request #3782 from nikhita/template-repo
Update repo creation process to use GitHub repo templates
This commit is contained in:
commit
399ea79a7c
|
|
@ -22,12 +22,8 @@ against the kubernetes/org repo.
|
||||||
- [Core Repositories](#core-repositories)
|
- [Core Repositories](#core-repositories)
|
||||||
* [Goals](#goals-2)
|
* [Goals](#goals-2)
|
||||||
* [Rules](#rules-1)
|
* [Rules](#rules-1)
|
||||||
- [Creating Repositories](#creating-repositories)
|
|
||||||
* [Non-staging repositories](#non-staging-repositories)
|
|
||||||
* [Staging repositories](#staging-repositories)
|
|
||||||
- [Removing Repositories](#removing-repositories)
|
- [Removing Repositories](#removing-repositories)
|
||||||
* [Grounds for removal](#grounds-for-removal)
|
* [Grounds for removal](#grounds-for-removal)
|
||||||
* [Procedure for removal](#procedure-for-removal)
|
|
||||||
- [FAQ](#faq)
|
- [FAQ](#faq)
|
||||||
|
|
||||||
## Associated Repositories
|
## Associated Repositories
|
||||||
|
|
@ -137,64 +133,6 @@ ecosystem. Carries the endorsement of the Kubernetes community.
|
||||||
Kubernetes steering committee elections. in the Kubernetes community
|
Kubernetes steering committee elections. in the Kubernetes community
|
||||||
* Repository must be approved by SIG-Architecture
|
* Repository must be approved by SIG-Architecture
|
||||||
|
|
||||||
## Creating Repositories
|
|
||||||
|
|
||||||
### Non-staging repositories
|
|
||||||
|
|
||||||
For non-staging repositories, suggestions on how to create
|
|
||||||
a new repository are described below.
|
|
||||||
|
|
||||||
* Ensure that the repo creation request has appropriate approvals
|
|
||||||
as per the rules mentioned above.
|
|
||||||
* Using the organization and repository name mentioned in the repo creation
|
|
||||||
request, create a new repo with default GitHub settings.
|
|
||||||
* Set the description as per the repo creation request.
|
|
||||||
* Clone the newly created repo locally.
|
|
||||||
* Copy the latest contents of [kubernetes-template-project] and create an
|
|
||||||
initial commit with the message *Initial commit from the
|
|
||||||
kubernetes-template-project*.
|
|
||||||
* Make the following changes in the next commit:
|
|
||||||
* If the request references a GitHub team to be listed in the `OWNERS`
|
|
||||||
file, update the `OWNERS_ALIASES` file to remove the steering-committee
|
|
||||||
alias and add a new alias for the team with members populated as per the
|
|
||||||
GitHub team. If the request does not reference a GitHub team, remove the
|
|
||||||
`OWNERS_ALIASES` file.
|
|
||||||
* Update the OWNERS file as per the request. If the repo is a
|
|
||||||
[SIG Repository], add a labels entry for the SIG that the repo belongs to.
|
|
||||||
* Update the `SECURITY_CONTACTS` file as per the request. Note that aliases
|
|
||||||
cannot be used in this case so expand the GitHub team, if specified.
|
|
||||||
* Create a new commit with the message *Update OWNERS, OWNERS_ALIASES and
|
|
||||||
SECURITY_CONTACTS*.
|
|
||||||
* Push the new commits directly to the master branch.
|
|
||||||
* If the repo is a [SIG Repository], add a new topic of the form
|
|
||||||
`k8s-sig-<sig-name-repo-belongs-to>` using the *Manage Topics* option.
|
|
||||||
* Create a PR against [kubernetes/org] to add teams as per the [team guidance]
|
|
||||||
for alloting repo admin and write access.
|
|
||||||
* Once the above PR is merged and the postsubmit has run, the new GitHub teams
|
|
||||||
will be created. In the *Collaborators and Teams* section in Settings,
|
|
||||||
assign the new teams appropriate access to the repo.
|
|
||||||
* Ask the author of the repo creation request to add the repo
|
|
||||||
as a part of a subproject in [`sigs.yaml`](/sigs.yaml).
|
|
||||||
|
|
||||||
### Staging Repositories
|
|
||||||
|
|
||||||
If the repository is a staging repository, there are some deviations
|
|
||||||
from the above procedure:
|
|
||||||
|
|
||||||
* The repository **must** have an initial empty commit. The contents of the
|
|
||||||
repo will be populated from staging by the [publishing-bot].
|
|
||||||
* Grant the [@kubernetes/stage-bots] team admin access to the repo.
|
|
||||||
* Setup branch protection and enable access to the
|
|
||||||
`stage-bots` team by adding the repo in
|
|
||||||
[`prow/config.yaml`](https://git.k8s.io/test-infra/prow/config.yaml). See
|
|
||||||
[kubernetes/test-infra#9292](https://github.com/kubernetes/test-infra/pull/9292)
|
|
||||||
for an example.
|
|
||||||
* Once the repo has been created, add the repo to
|
|
||||||
[`hack/fetch-all-latest-and-push.sh`](https://git.k8s.io/publishing-bot/hack/fetch-all-latest-and-push.sh)
|
|
||||||
in the [publishing-bot] repo.
|
|
||||||
|
|
||||||
<!-- TODO: Add suggestions for how to migrate existing repos -->
|
|
||||||
|
|
||||||
## Removing Repositories
|
## Removing Repositories
|
||||||
|
|
||||||
As important as it is to add new repositories, it is equally important to prune
|
As important as it is to add new repositories, it is equally important to prune
|
||||||
|
|
@ -223,31 +161,6 @@ Associated repositories are much more loosely associated with the Kubernetes
|
||||||
project and are generally not subject to removal, except under exceptional
|
project and are generally not subject to removal, except under exceptional
|
||||||
circumstances (e.g. a code of conduct violation).
|
circumstances (e.g. a code of conduct violation).
|
||||||
|
|
||||||
### Procedure for removal
|
|
||||||
|
|
||||||
When a repository has been deemed eligible for removal, we take the following
|
|
||||||
steps:
|
|
||||||
|
|
||||||
* Ownership of the repo is transferred to the [kubernetes-retired] GitHub
|
|
||||||
organization
|
|
||||||
* The repo description is edited to start with the phrase "[EOL]"
|
|
||||||
* All open issues and PRs are closed
|
|
||||||
* All external collaborators are removed
|
|
||||||
* All webhooks, apps, integrations or services are removed
|
|
||||||
* GitHub Pages are disabled
|
|
||||||
* The repo is marked as archived using [GitHub's archive feature]
|
|
||||||
* Remove all teams associated with the repo
|
|
||||||
* Remove the repo from [sigs.yaml]
|
|
||||||
* The removal is announced on the kubernetes-dev mailing list and community
|
|
||||||
meeting
|
|
||||||
|
|
||||||
This maintains the complete record of issues, PRs and other contributions,
|
|
||||||
leaves the repository read-only, and makes it clear that the repository should
|
|
||||||
be considered retired and unmaintained.
|
|
||||||
|
|
||||||
In case a repository has only the initial commits adding template files
|
|
||||||
and no additional activity, it can be completely deleted.
|
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
**My project is currently in kubernetes-incubator, what is going to happen to
|
**My project is currently in kubernetes-incubator, what is going to happen to
|
||||||
|
|
@ -306,14 +219,3 @@ owned by the authors of Kubernetes.
|
||||||
|
|
||||||
Note that you should _never_ modify or remove a third party's copyright notice if
|
Note that you should _never_ modify or remove a third party's copyright notice if
|
||||||
you are not authorized by them to do so.
|
you are not authorized by them to do so.
|
||||||
|
|
||||||
[GitHub's archive feature]:
|
|
||||||
https://help.github.com/articles/archiving-a-github-repository/
|
|
||||||
[kubernetes-retired]: https://github.com/kubernetes-retired
|
|
||||||
[kubernetes-template-project]: https://github.com/kubernetes/kubernetes-template-project
|
|
||||||
[kubernetes/org]: https://github.com/kubernetes/org
|
|
||||||
[team guidance]: /github-management/org-owners-guide.md#team-guidance
|
|
||||||
[SIG Repository]: #sig-repositories
|
|
||||||
[publishing-bot]: https://github.com/kubernetes/publishing-bot
|
|
||||||
[@kubernetes/stage-bots]: https://github.com/orgs/kubernetes/teams/stage-bots
|
|
||||||
[sigs.yaml]: /sigs.yaml
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,8 @@ managed by the Kubernetes project or use a different name.
|
||||||
|
|
||||||
Due to licensing and CLA issues, prior to transferring software into a
|
Due to licensing and CLA issues, prior to transferring software into a
|
||||||
Kubernetes managed organization there is some due diligence that needs to occur.
|
Kubernetes managed organization there is some due diligence that needs to occur.
|
||||||
Please contact the steering committee and CNCF prior to moving any code in.
|
If needed, please contact the steering committee and CNCF prior to moving any
|
||||||
|
code in.
|
||||||
|
|
||||||
It is easier to start new code in a Kubernetes organization than it is to
|
It is easier to start new code in a Kubernetes organization than it is to
|
||||||
transfer in existing code.
|
transfer in existing code.
|
||||||
|
|
@ -137,7 +138,97 @@ checking on all contributions. For more details on those please see the
|
||||||
Project](https://github.com/kubernetes/kubernetes-template-project), and the
|
Project](https://github.com/kubernetes/kubernetes-template-project), and the
|
||||||
[Repository Guidelines](kubernetes-repositories.md)
|
[Repository Guidelines](kubernetes-repositories.md)
|
||||||
|
|
||||||
|
The process for creating and removing new repositories is detailed below.
|
||||||
|
|
||||||
|
### Creating Repositories
|
||||||
|
|
||||||
|
#### Non-staging repositories
|
||||||
|
|
||||||
|
For non-staging repositories, suggestions on how to create
|
||||||
|
a new repository are described below.
|
||||||
|
|
||||||
|
* Ensure that the repo creation request has appropriate approvals
|
||||||
|
as per the rules mentioned above.
|
||||||
|
* Using the organization and repository name mentioned in the repo creation
|
||||||
|
request, create a new repo with:
|
||||||
|
* `Repository Template` as `kubernetes/kubernetes-template-project`
|
||||||
|
* `Description` as mentioned in the repo creation request
|
||||||
|
* Clone the newly created repo locally.
|
||||||
|
* Make the following changes:
|
||||||
|
* If the request references a team to be listed in the `OWNERS`
|
||||||
|
file, update the `OWNERS_ALIASES` file to remove the steering-committee
|
||||||
|
alias and add a new alias for the team with members populated as per the
|
||||||
|
GitHub team. If the request does not reference a team, remove the
|
||||||
|
`OWNERS_ALIASES` file.
|
||||||
|
* Update the OWNERS file as per the request. If the repo is a
|
||||||
|
[SIG Repository], add a labels entry for the SIG that the repo belongs to.
|
||||||
|
* Update the `SECURITY_CONTACTS` file as per the request. Note that aliases
|
||||||
|
cannot be used in this case so expand the team, if specified.
|
||||||
|
* Create a new commit with the message *Update OWNERS, OWNERS_ALIASES and
|
||||||
|
SECURITY_CONTACTS*.
|
||||||
|
* Push the new commit directly to the master branch.
|
||||||
|
* If the repo is a [SIG Repository], add a new topic of the form
|
||||||
|
`k8s-sig-<sig-name-repo-belongs-to>` using the *Manage Topics* option.
|
||||||
|
* Create a PR against [kubernetes/org] to add teams as per the [team guidance](#team-guidance)
|
||||||
|
for alloting repo admin and write access.
|
||||||
|
* Once the above PR is merged and the postsubmit has run, the new GitHub teams
|
||||||
|
will be created. In the *Collaborators and Teams* section in Settings,
|
||||||
|
assign the new teams appropriate access to the repo.
|
||||||
|
* Ask the author of the repo creation request to add the repo
|
||||||
|
as a part of a subproject in [`sigs.yaml`](/sigs.yaml).
|
||||||
|
|
||||||
|
#### Staging Repositories
|
||||||
|
|
||||||
|
If the repository is a staging repository, there are some deviations
|
||||||
|
from the above procedure:
|
||||||
|
|
||||||
|
* The repository **must** have an initial empty commit. The contents of the
|
||||||
|
repo will be populated from staging by the [publishing-bot].
|
||||||
|
* Grant the [@kubernetes/stage-bots] team admin access to the repo.
|
||||||
|
* Setup branch protection and enable access to the
|
||||||
|
`stage-bots` team by adding the repo in
|
||||||
|
[`prow/config.yaml`](https://git.k8s.io/test-infra/prow/config.yaml). See
|
||||||
|
[kubernetes/test-infra#9292](https://github.com/kubernetes/test-infra/pull/9292)
|
||||||
|
for an example.
|
||||||
|
* Once the repo has been created, add the repo to
|
||||||
|
[`hack/fetch-all-latest-and-push.sh`](https://git.k8s.io/publishing-bot/hack/fetch-all-latest-and-push.sh)
|
||||||
|
in the [publishing-bot] repo.
|
||||||
|
|
||||||
|
<!-- TODO: Add suggestions for how to migrate existing repos -->
|
||||||
|
|
||||||
|
### Removing Repositories
|
||||||
|
|
||||||
|
When a repository has been deemed eligible for removal, we take the following
|
||||||
|
steps:
|
||||||
|
|
||||||
|
* Ownership of the repo is transferred to the [kubernetes-retired] GitHub
|
||||||
|
organization
|
||||||
|
* The repo description is edited to start with the phrase "[EOL]"
|
||||||
|
* All open issues and PRs are closed
|
||||||
|
* All external collaborators are removed
|
||||||
|
* All webhooks, apps, integrations or services are removed
|
||||||
|
* GitHub Pages are disabled
|
||||||
|
* Remove all teams associated with the repo
|
||||||
|
* The repo is marked as archived using [GitHub's archive feature]
|
||||||
|
* Remove the repo from [sigs.yaml]
|
||||||
|
* The removal is announced on the kubernetes-dev mailing list and community
|
||||||
|
meeting
|
||||||
|
|
||||||
|
This maintains the complete record of issues, PRs and other contributions,
|
||||||
|
leaves the repository read-only, and makes it clear that the repository should
|
||||||
|
be considered retired and unmaintained.
|
||||||
|
|
||||||
|
In case a repository has only the initial commits adding template files
|
||||||
|
and no additional activity, it can be completely deleted.
|
||||||
|
|
||||||
[GitHub Administration Team]:
|
[GitHub Administration Team]:
|
||||||
/github-management/README.md#github-administration-team
|
/github-management/README.md#github-administration-team
|
||||||
|
[GitHub's archive feature]:
|
||||||
|
https://help.github.com/articles/archiving-a-github-repository/
|
||||||
[@kubernetes/owners]: https://github.com/orgs/kubernetes/teams/owners
|
[@kubernetes/owners]: https://github.com/orgs/kubernetes/teams/owners
|
||||||
[kubernetes/org]: https://github.com/kubernetes/org
|
[kubernetes/org]: https://github.com/kubernetes/org
|
||||||
|
[publishing-bot]: https://github.com/kubernetes/publishing-bot
|
||||||
|
[@kubernetes/stage-bots]: https://github.com/orgs/kubernetes/teams/stage-bots
|
||||||
|
[kubernetes-retired]: https://github.com/kubernetes-retired
|
||||||
|
[kubernetes-template-project]: https://github.com/kubernetes/kubernetes-template-project
|
||||||
|
[SIG Repository]: /github-management/kubernetes-repositories.md##sig-repositories
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue