CI for PR 5798 #3714
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Check branch version | |
# This is a separate workflow from the main build-and-test workflow | |
# because we want it to run when a PR's target branch changes, and | |
# it'd be prohibitively time-consuming to re-run the main workflow | |
# every time that happens. | |
"on": | |
push: | |
branches: | |
- master | |
- release/v* | |
pull_request: | |
branches: | |
- master | |
- release/v* | |
types: | |
- opened # default | |
- reopened # default | |
- edited # default | |
- synchronize # also run if the target branch changes | |
jobs: | |
check-branch-version: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install Deps | |
uses: ./.github/actions/setup-deps | |
- name: Detect version numbers | |
id: get-versions | |
run: | | |
# Set tag_majorminor | |
tag_majorminor=$(git describe --tags --match='v*'|sed 's/^v//'|cut -d. -f1,2) | |
echo "tag_majorminor=${tag_majorminor}" >> $GITHUB_OUTPUT | |
# Set branch_majorminor | |
case "$GITHUB_REF" in | |
refs/heads/*) branch=${GITHUB_REF#refs/heads/};; | |
refs/pull/*) branch=${GITHUB_BASE_REF#refs/heads/};; | |
esac | |
if [[ $branch == master ]]; then | |
prev_branch_majorminor=$(git for-each-ref --format='%(refname:lstrip=4)' 'refs/remotes/origin/release/v*' | sort --version-sort | tail -n1 | sed 's/^v//') | |
if [[ "${prev_branch_majorminor%.*}" == "${tag_majorminor%.*}" ]]; then | |
branch_majorminor="${prev_branch_majorminor%.*}.$((${prev_branch_majorminor##*.}+1))" | |
else | |
branch_majorminor="$((${prev_branch_majorminor%.*}+1)).0" | |
fi | |
else | |
branch_majorminor=${branch#release/v} | |
fi | |
echo "branch_majorminor=${branch_majorminor}" >> $GITHUB_OUTPUT | |
# Set relnotes_majorminor | |
make tools/bin/yq | |
relnotes_version=$(tools/bin/yq read docs/releaseNotes.yml items[0].version) | |
relnotes_majorminor=$(cut -d. -f1,2 <<<"$relnotes_version") | |
echo "relnotes_majorminor=${relnotes_majorminor}" >> $GITHUB_OUTPUT | |
declare -p tag_majorminor branch_majorminor relnotes_majorminor | |
- name: Check version numbers | |
run: | | |
tag_majorminor=${{ steps.get-versions.outputs.tag_majorminor }} | |
branch_majorminor=${{ steps.get-versions.outputs.branch_majorminor }} | |
relnotes_majorminor=${{ steps.get-versions.outputs.relnotes_majorminor }} | |
declare -p tag_majorminor branch_majorminor relnotes_majorminor | |
# Check that those all agree | |
if [[ "$tag_majorminor" != "$branch_majorminor" ]]; then | |
echo "You seem to be on the Git branch for v${branch_majorminor}.z, but Git tags indicate that this is work for v${tag_majorminor}.z" | |
echo "Perhaps you need to go yell at the person who set up the release branch for the last .y bump." | |
exit 1 | |
fi | |
if [[ "$relnotes_majorminor" != "$tag_majorminor" ]]; then | |
echo "Your Git tag+branch indicate that you are targeting v${tag_majorminor}.z but your docs/releaseNotes.yml indicate that you are targeting v${relnotes_majorminor}.z" | |
exit 1 | |
fi |