Merge pull request #5628 from antoooks/release-helper-script

Release helper script
This commit is contained in:
Kubernetes Prow Robot
2024-07-16 10:53:06 -07:00
committed by GitHub
2 changed files with 76 additions and 1 deletions

View File

@@ -75,14 +75,39 @@ cd kustomize
git push origin myfeature
```
### Pull Request Rules
We are using [Conventional Commits v1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) as the main guideline of making PR. This guideline serves to help contributor and maintainer to classify their changes, thus providing better insight on type of release will be covered on each Kustomize release cycle.
1. Please add these keywords on your PR titles accordingly
| Keyword | Description | Example |
| ------------- | ------------- | ------------- |
| fix | Patching or fixing bugs or improvements introduction from previous release. This type of change will mark a `PATCH` release. | fix: fix null value when generating yaml |
| feat | New features. This change will mark a `MINOR` release. | feat: new transformer and generator for ACME API CRD. |
| chore | Minor improvement outside main code base | chore: add exclusion for transformer test. |
| ci | CI/CD related changes (e.g. github workflow, scripts, CI steps). | ci: remove blocking tests |
| docs | Changes related to documentation. | docs: add rules documentation for PR. |
2. Add `BREAKING CHANGE:` on your commit message as footer to signify breaking changes. This will help maintainers identify `MAJOR` releases.
Example:
```
feat: change YAML parser from `yaml/v1` to `yaml/v2`
BREAKING CHANGE: parse() function now works with 2 arguments.
```
### Create a Pull Request
1. Visit your fork at `https://github.com/<user>/kustomize`
2. Click the **Compare & Pull Request** button next to your `myfeature` branch.
3. Check out the pull request [process](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md) for more details and advice.
If you ran `git push` in the previous step, GitHub will return a useful link to create a Pull Request.
### Build Kustomize
The [Kustomize Architecture] document describes the respository organization and the kustomize build process.
```bash

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Copyright 2024 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0
declare PATCH=false
declare MINOR=false
declare MAJOR=false
declare rc=0
ORIGIN_MASTER="origin/master"
LATEST_TAG=$(git describe --tags --abbrev=0)
git log "${LATEST_TAG}..HEAD" --oneline | tee /tmp/release-changelogs.txt
count=$(cat /tmp/release-changelogs.txt | wc -l)
if [[ $(cat /tmp/release-changelogs.txt | grep fix) || $(cat /tmp/release-changelogs.txt | grep patch) || $(cat /tmp/release-changelogs.txt | grep chore) || $(cat /tmp/release-changelogs.txt | grep docs) ]]; then
PATCH=true
fi
if [[ $(cat /tmp/release-changelogs.txt | grep feat) ]]; then
MINOR=true
fi
for commit in $(cut -d' ' -f1 /tmp/release-changelogs.txt); do
git log --format=%B -n 1 $commit | grep "BREAKING CHANGE"
if [ $? -eq 0 ]; then
MAJOR=true
fi
done
for f in $(find api); do
git diff "${LATEST_TAG}...${ORIGIN_MASTER}" --exit-code -- "${f}"
if [ $? -eq 1 ]; then
echo "Found changes on api dir at ${f}"
MAJOR=true
fi
done
echo -e "\n"
echo -e "================================================================================="
echo "Change counter: $(echo $count | tr -s ' ')"
if [[ $MAJOR == false && $MINOR == false ]]; then
echo "Recommended release type: patch"
elif [[ $MAJOR == false && $MINOR == true ]]; then
echo "Recommended release type: minor"
else
echo "Recommended release type: major"
fi