feat(script): add easy script to release

Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
This commit is contained in:
Aaron
2023-06-08 17:52:39 -04:00
parent f284c64370
commit f5edd4fcf4
5 changed files with 76 additions and 11 deletions

2
.github/CODEOWNERS vendored
View File

@@ -1 +1 @@
* @aarnphm @parano @ssheng
* @aarnphm @parano @ssheng

View File

@@ -33,6 +33,11 @@ repos:
- 'markdown'
- 'toml'
- 'json'
exclude: |
(?x)^(
tools/.*|
.github/.*
)$
- repo: local
hooks:
- id: check-models-table-update

View File

@@ -137,17 +137,11 @@ hatch run test
## Releasing a New Version
To release a new version, use `gh workflow run`:
To release a new version, use `./tools/run-release-action`. It requires `gh`,
`jq` and `hatch`:
```bash
gh workflow run create-releases.yml
```
After the release CI finishes, then run the following:
```bash
git pull --rebase
gh workflow run release-notes.yml --ref "v$(hatch version)"
./tools/run-release-action
```
> Note that currently this workflow can only be run by the BentoML team.

View File

@@ -1,7 +1,8 @@
#!/bin/bash
# License header pattern
LICENSE_HEADER=$(cat << 'EOF'
LICENSE_HEADER=$(
cat << 'EOF'
# Copyright [0-9]{4} BentoML Team. All rights reserved.
EOF
)

65
tools/run-release-action Executable file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail
if ! command -v gh @ >&1 > /dev/null; then
echo "ERROR: gh not installed. Aborting..."
exit 1
fi
if ! command -v jq @ >&1 > /dev/null; then
echo "ERROR: jq not installed. Aborting..."
exit 1
fi
if ! command -v hatch @ >&1 > /dev/null; then
echo "ERROR: hatch not installed. Aborting..."
exit 1
fi
echo "Running release actions (create-releases.yml)..."
gh workflow run create-releases.yml --repo bentoml/openllm
echo "Getting 'create-releases.yml' workflow id..."
WORKFLOW_ID=$(gh run list -w release --repo bentoml/openllm -L 1 --json databaseId | jq '.[]| .databaseId')
echo "Waiting for workflow create-releases.yml to complete..."
while true; do
status=$(gh run view "$WORKFLOW_ID" --json status --jq '.status')
if [[ $status == "completed" ]]; then
break
fi
sleep 10
done
# Set the maximum timeout (in seconds)
timeout=600
echo "Generating release notes (release-notes.yml)..."
git pull --rebase
gh workflow run release-notes.yml --repo bentoml/openllm --ref "v$(hatch version)"
echo "Getting 'release-notes.yml' workflow id..."
WORKFLOW_ID=$(gh run list -w release-notes --repo bentoml/openllm -L 1 --json databaseId | jq '.[]| .databaseId')
start_time=$(date +%s)
while true; do
status=$(gh run view "$WORKFLOW_ID" --json status --jq '.status')
if [[ $status == "completed" ]]; then
break
fi
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
if [[ $elapsed_time -gt $timeout ]]; then
echo "Timeout reached. Cancelling the check."
break
fi
sleep 10
done
# Run the second workflow (b.yml) if the first workflow completed
if [[ $status != "completed" ]]; then
echo "Failed to generate release notes. Check the logs at GitHub Actions."
exit 1
else
exit 0
fi