Skip to content

Release - Preview

Release - Preview #26

name: Release - Preview
on:
workflow_dispatch:
inputs:
branch_tag:
description: "Branch:Tag:Milestone:PreviousTag, ex: v1.6.x:v1.6.0-rc1:v1.6.0:v1.5.0"
required: true
defaults:
run:
shell: bash
env:
CARGO_TERM_COLOR: always
jobs:
release:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GH_ACTION_TOKEN }}
permissions:
contents: write
pull-requests: write
steps:
- name: Setup Git
run: |
gh auth setup-git
- uses: anchore/sbom-action/[email protected]
- run: |
git config --global user.email "[email protected]"
git config --global user.name "David Ko"
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: innobead/renote
ref: main
path: renote
- run: cargo install --path ./renote
- id: var
name: Get branch, tag, milestone
run: |
IFS=':' read -ra tokens <<< "${{ inputs.branch_tag }}"
branch="${tokens[0]}"
tag="${tokens[1]}"
milestone="${tokens[2]}"
prev_tag="${tokens[3]:-}"
if [ -z "${tokens[0]}" || -z "${tokens[1]}" || -z "${tokens[2]}" ]; then
echo "Branch, Tag or Milestone is empty"
exit 1
fi
echo "branch=${branch}" >> $GITHUB_OUTPUT
echo "tag=${tag}" >> $GITHUB_OUTPUT
echo "milestone=${milestone}" >> $GITHUB_OUTPUT
echo "prev_tag=${prev_tag}" >> $GITHUB_OUTPUT
cat <<EOF
branch=${branch}
tag=${tag}
milestone=${milestone}
prev_tag=${prev_tag}
EOF
- id: pr
name: Create a release PR (for updating the version file)
run: |
renote pr \
--owner longhorn \
--repo longhorn \
--branch ${{ steps.var.outputs.branch }} \
--tag ${{ steps.var.outputs.tag }} \
--longhorn-chart-repo charts \
--longhorn-repos longhorn-manager \
--longhorn-repos longhorn-engine \
--longhorn-repos longhorn-instance-manager \
--longhorn-repos longhorn-share-manager \
--longhorn-repos backing-image-manager \
--longhorn-repos longhorn-ui \
--longhorn-repos cli \
--merge
- id: artifact
name: Collect artifacts
run: |
./scripts/collect-artifacts.sh longhorn charts
- id: tag
name: Create a tag for each release repo
run: |
renote tag \
--owner longhorn \
--branch ${{ steps.var.outputs.branch }} \
--tag ${{ steps.var.outputs.tag }} \
--create-version-file \
--version-file-repos longhorn-manager \
--version-file-repos longhorn-engine \
--version-file-repos longhorn-instance-manager \
--version-file-repos longhorn-share-manager \
--version-file-repos backing-image-manager \
--version-file-repos longhorn-ui \
--version-file-repos cli \
--repos longhorn \
--force
- id: changelog-prev-tag
name: Create a changelog from the most previous tag
run: |
output=$(renote changelog \
--owner longhorn \
--branch ${{ steps.var.outputs.branch }} \
--tag ${{ steps.var.outputs.tag }} \
--repos longhorn-manager \
--repos longhorn-engine \
--repos longhorn-instance-manager \
--repos longhorn-share-manager \
--repos backing-image-manager \
--repos longhorn-ui \
--repos cli \
--repos longhorn)
echo "$output"
echo "$output" > ./changelog-prev-tag.md
- id: changelog
name: Create a changelog from the last release
run: |
output=$(renote changelog \
--owner longhorn \
--branch ${{ steps.var.outputs.branch }} \
--tag ${{ steps.var.outputs.tag }} \
--prev-tag ${{ steps.var.outputs.prev_tag }} \
--repos longhorn-manager \
--repos longhorn-engine \
--repos longhorn-instance-manager \
--repos longhorn-share-manager \
--repos backing-image-manager \
--repos longhorn-ui \
--repos cli \
--repos longhorn)
echo "$output"
echo "$output" > ./changelog.md
- id: release
name: Create a release
run: |
renote release \
--owner longhorn \
--repo longhorn \
--branch ${{ steps.var.outputs.branch }} \
--tag ${{ steps.var.outputs.tag }} \
--milestone ${{ steps.var.outputs.milestone }} \
--pre-note ./assets/release-preview/pre-note.md \
--note-contributors innobead \
--since-days 365 \
--exclude-labels "kind/test" \
--exclude-labels "area/infra" \
--exclude-labels "area/ci" \
--exclude-labels "area/qa" \
--exclude-labels "wontfix" \
--exclude-labels "duplicated" \
--exclude-labels "invalid" \
--exclude-labels "release/task" \
--note-section-labels "highlight" \
--note-section-labels "kind/feature" \
--note-section-labels "kind/improvement" \
--note-section-labels "kind/bug" \
--note-section-labels "area/performance" \
--note-section-labels "area/resilience" \
--note-section-labels "area/stability" \
--note-section-labels "area/scalability" \
--note-section-labels "area/benchmark" \
--pre-hook ./scripts/check-images-ready.sh \
--pre-hook-args "longhornio/longhorn-manager:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/longhorn-engine:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/longhorn-instance-manager:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/longhorn-share-manager:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/backing-image-manager:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/longhorn-ui:${{ steps.var.outputs.tag }}" \
--pre-hook-args "longhornio/longhorn-cli:${{ steps.var.outputs.tag }}" \
--artifacts ./longhorn.yaml \
--artifacts ./longhorn-images.txt \
--artifacts ./charts.tar.gz \
--artifacts ./changelog.md \
--artifacts ./changelog-prev-tag.md \
--artifacts ./longhorn-images-sbom.tar.gz \
--pre-release \
--draft