Skip to content

Commit

Permalink
Add release doc and script: (#164)
Browse files Browse the repository at this point in the history
## Description


This doc and helper script is used across other Tinkerbell repos.

## Why is this needed



Fixes: #

## How Has This Been Tested?





## How are existing users impacted? What migration steps/scripts do we need?





## Checklist:

I have:

- [ ] updated the documentation and/or roadmap (if required)
- [ ] added unit or e2e tests
- [ ] provided instructions on how to upgrade
  • Loading branch information
mergify[bot] authored Feb 25, 2023
2 parents 9d54933 + b4649ba commit 211acf4
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 3 deletions.
19 changes: 19 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Releasing

## Process

For version v0.x.y:

1. Create the annotated tag
> NOTE: To use your GPG signature when pushing the tag, use `SIGN_TAG=1 ./contrib/tag-release.sh v0.x.y` instead)
- `./contrib/tag-release.sh v0.x.y`
1. Push the tag to the GitHub repository. This will automatically trigger a [Github Action](https://github.com/tinkerbell/hook/actions) to create a release.
> NOTE: `origin` should be the name of the remote pointing to `github.com/tinkerbell/boots`
- `git push origin v0.x.y`
1. Review the release on GitHub.

### Permissions

Releasing requires a particular set of permissions.

- Tag push access to the GitHub repository
40 changes: 40 additions & 0 deletions contrib/tag-release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash

set -o errexit -o nounset -o pipefail

if [ -z "${1-}" ]; then
echo "Must specify new tag"
exit 1
fi

new_tag=${1-}
[[ $new_tag =~ ^v[0-9]*\.[0-9]*\.[0-9]*$ ]] || (
echo "Tag must be in the form of vX.Y.Z"
exit 1
)

if [[ $(git symbolic-ref HEAD) != refs/heads/main ]] && [[ -z ${ALLOW_NON_MAIN:-} ]]; then
echo "Must be on main branch" >&2
exit 1
fi
if [[ $(git describe --dirty) != $(git describe) ]]; then
echo "Repo must be in a clean state" >&2
exit 1
fi

git fetch --all

last_tag=$(git describe --abbrev=0)
last_tag_commit=$(git rev-list -n1 "$last_tag")
last_specific_tag=$(git tag --contains="$last_tag_commit" | grep -E "^v[0-9]*\.[0-9]*\.[0-9]*$" | tail -n 1)
last_specific_tag_commit=$(git rev-list -n1 "$last_specific_tag")
if [[ $last_specific_tag_commit == $(git rev-list -n1 HEAD) ]]; then
echo "No commits since last tag" >&2
exit 1
fi

if [[ -n ${SIGN_TAG-} ]]; then
git tag -s -m "${new_tag}" "${new_tag}" &>/dev/null && echo "created signed tag ${new_tag}" >&2 && exit
else
git tag -a -m "${new_tag}" "${new_tag}" &>/dev/null && echo "created annotated tag ${new_tag}" >&2 && exit
fi
6 changes: 3 additions & 3 deletions hook-bootkit/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ type tinkConfig struct {

// tinkServerTLS is whether or not to use TLS for tink-server communication.
tinkServerTLS string
httpProxy string
httpsProxy string
noProxy string
httpProxy string
httpsProxy string
noProxy string
}

const maxRetryAttempts = 20
Expand Down

0 comments on commit 211acf4

Please sign in to comment.