llvm-project/.github/workflows/set-release-binary-outputs.sh
Tom Stellard abac98479b
[Workflows] Re-write release-binaries workflow (#89521)
This updates the release-binaries workflow so that the different build
stages are split across multiple jobs. This saves money by reducing the
time spent on the larger github runners and also makes it easier to
debug, because now it's possible to build a smaller release package
(with clang and lld) using only the free GitHub runners.

The workflow no longer uses the test-release.sh script but instead uses
the Release.cmake cache. This gives the workflow more flexibility and
ensures that the binary package will always be created even if the tests
fail.

This idea to split the stages comes from the "LLVM Precommit CI through
Github Actions" RFC:

https://discourse.llvm.org/t/rfc-llvm-precommit-ci-through-github-actions/76456
2024-05-04 15:10:12 -07:00

35 lines
883 B
Bash

# Usage: set-release-binary-outputs.sh <github_user> <tag> <upload>
set -e
if [ -z "$GITHUB_OUTPUT" ]; then
export GITHUB_OUTPUT=`mktemp`
echo "Warning: Environment variable GITHUB_OUTPUT is not set."
echo "Writing output variables to $GITHUB_OUTPUT"
fi
tag=$1
upload=$2
if echo $tag | grep -e '^[0-9a-f]\+$'; then
# This is a plain commit.
# TODO: Don't hardcode this.
release_version="18"
upload='false'
ref="$tag"
else
pattern='^llvmorg-[0-9]\+\.[0-9]\+\.[0-9]\+\(-rc[0-9]\+\)\?$'
echo "$tag" | grep -e $pattern
if [ $? != 0 ]; then
echo "ERROR: Tag '$tag' doesn't match pattern: $pattern"
exit 1
fi
release_version=`echo "$tag" | sed 's/llvmorg-//g'`
release=`echo "$release_version" | sed 's/-.*//g'`
fi
echo "release-version=$release_version" >> $GITHUB_OUTPUT
echo "upload=$upload" >> $GITHUB_OUTPUT
echo "ref=$tag" >> $GITHUB_OUTPUT