mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-07-23 08:23:19 +00:00
116 lines
3.9 KiB
YAML
116 lines
3.9 KiB
YAML
name: "release: bump version"
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
bump:
|
|
description: "Which part to increment (ignored when 'version' is set)"
|
|
type: choice
|
|
options:
|
|
- minor
|
|
- major
|
|
default: minor
|
|
version:
|
|
description: "Explicit MAJOR.MINOR to set, e.g. 4.36 (overrides 'bump')"
|
|
type: string
|
|
required: false
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
bump-version:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
|
|
- name: Compute new version
|
|
id: compute
|
|
env:
|
|
BUMP: ${{ inputs.bump }}
|
|
INPUT_VERSION: ${{ inputs.version }}
|
|
run: |
|
|
set -euo pipefail
|
|
CONST=weed/util/version/constants.go
|
|
|
|
MAJOR=$(grep -oP 'MAJOR_VERSION\s*=\s*int32\(\K[0-9]+' "$CONST")
|
|
MINOR=$(grep -oP 'MINOR_VERSION\s*=\s*int32\(\K[0-9]+' "$CONST")
|
|
echo "current: ${MAJOR}.${MINOR}"
|
|
|
|
if [ -n "$INPUT_VERSION" ]; then
|
|
if ! [[ "$INPUT_VERSION" =~ ^[0-9]+\.[0-9]+$ ]]; then
|
|
echo "::error::version must be MAJOR.MINOR, e.g. 5.01 (got '$INPUT_VERSION')"
|
|
exit 1
|
|
fi
|
|
# 10# forces base 10 so 08/09 are not parsed as octal.
|
|
MAJOR=$((10#${INPUT_VERSION%%.*}))
|
|
MINOR=$((10#${INPUT_VERSION##*.}))
|
|
if [ "$MINOR" -gt 99 ]; then
|
|
echo "::error::minor must be 0-99 (got $MINOR); it rolls into the next major at 99"
|
|
exit 1
|
|
fi
|
|
else
|
|
case "$BUMP" in
|
|
# Minor is a 2-digit field: 4.99 -> 5.00 -> 5.01.
|
|
major) MAJOR=$((MAJOR + 1)); MINOR=0 ;;
|
|
minor)
|
|
if [ "$MINOR" -ge 99 ]; then
|
|
MAJOR=$((MAJOR + 1)); MINOR=0
|
|
else
|
|
MINOR=$((MINOR + 1))
|
|
fi
|
|
;;
|
|
*) echo "::error::unknown bump '$BUMP'"; exit 1 ;;
|
|
esac
|
|
fi
|
|
|
|
# appVersion mirrors the Go VERSION_NUMBER (zero-padded minor);
|
|
# chart version is plain SemVer (no leading zeros).
|
|
APP_VERSION=$(printf '%d.%02d' "$MAJOR" "$MINOR")
|
|
CHART_VERSION="${MAJOR}.${MINOR}.0"
|
|
echo "new: app=${APP_VERSION} chart=${CHART_VERSION}"
|
|
|
|
{
|
|
echo "major=${MAJOR}"
|
|
echo "minor=${MINOR}"
|
|
echo "app_version=${APP_VERSION}"
|
|
echo "chart_version=${CHART_VERSION}"
|
|
} >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Apply version to constants.go
|
|
env:
|
|
MAJOR: ${{ steps.compute.outputs.major }}
|
|
MINOR: ${{ steps.compute.outputs.minor }}
|
|
run: |
|
|
set -euo pipefail
|
|
CONST=weed/util/version/constants.go
|
|
sed -i -E "s/(MAJOR_VERSION[[:space:]]*=[[:space:]]*int32\()[0-9]+(\))/\1${MAJOR}\2/" "$CONST"
|
|
sed -i -E "s/(MINOR_VERSION[[:space:]]*=[[:space:]]*int32\()[0-9]+(\))/\1${MINOR}\2/" "$CONST"
|
|
grep -E 'MAJOR_VERSION|MINOR_VERSION' "$CONST"
|
|
|
|
- name: Apply version to Chart.yaml
|
|
env:
|
|
APP_VERSION: ${{ steps.compute.outputs.app_version }}
|
|
CHART_VERSION: ${{ steps.compute.outputs.chart_version }}
|
|
run: |
|
|
set -euo pipefail
|
|
CHART=k8s/charts/seaweedfs/Chart.yaml
|
|
sed -i -E "s/^appVersion:.*/appVersion: \"${APP_VERSION}\"/" "$CHART"
|
|
sed -i -E "s/^version:.*/version: ${CHART_VERSION}/" "$CHART"
|
|
cat "$CHART"
|
|
|
|
- name: Commit and push
|
|
env:
|
|
APP_VERSION: ${{ steps.compute.outputs.app_version }}
|
|
run: |
|
|
set -euo pipefail
|
|
if git diff --quiet; then
|
|
echo "No version change to commit."
|
|
exit 0
|
|
fi
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git add weed/util/version/constants.go k8s/charts/seaweedfs/Chart.yaml
|
|
git commit -m "${APP_VERSION}"
|
|
git push
|