Files
OpenLLM/tools/run-release-action
2023-06-08 18:18:51 -04:00

72 lines
1.9 KiB
Bash
Executable File

#!/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
sleep 10
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=36000
sleep 10
echo "Generating release notes (release-notes.yml)..."
git pull --rebase
gh workflow run release-notes.yml --repo bentoml/openllm --ref "v$(hatch version)"
sleep 10
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