Skip to content

Create Release Version - master #7

Create Release Version - master

Create Release Version - master #7

name: Create Release
run-name: Create Release Version - ${{ github.ref_name }}
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag:
description: "Tag for the release (e.g., v1.0.0)"
required: true
default: "v1.0.0"
notes:
description: "Additional release notes"
required: false
default: ""
draft:
description: "Mark the release as a draft"
required: true
default: "false"
prerelease:
description: "Mark the release as a prerelease"
required: true
default: "false"
permissions:
contents: write
pull-requests: read
jobs:
release:
name: Create Release for ${{ github.ref_name || github.event.inputs.tag }}
runs-on: ubuntu-latest
steps:
- name: Check if tag is valid
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
TAG="${{ github.event.inputs.tag || github.ref_name }}"
if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then
echo "Failure: The tag '$TAG' is invalid. Tag must start with 'v' followed by semantic version (e.g., v1.0.0)"
exit 1
fi
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine tag and notes
id: set_inputs
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_ENV
echo "additional_notes=${{ github.event.inputs.notes }}" >> $GITHUB_ENV
echo "draft=${{ github.event.inputs.draft }}" >> $GITHUB_ENV
echo "prerelease=${{ github.event.inputs.prerelease }}" >> $GITHUB_ENV
else
echo "tag=${{ github.ref_name }}" >> $GITHUB_ENV
echo "additional_notes=" >> $GITHUB_ENV
echo "draft=false" >> $GITHUB_ENV
echo "prerelease=false" >> $GITHUB_ENV
fi
- name: Build changelog
id: build_changelog
uses: mikepenz/release-changelog-builder-action@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create release
run: |
release_notes=$(printf "%s\n\n%s" \
"${{ steps.build_changelog.outputs.changelog }}" \
"${{ env.additional_notes }}")
gh release create "$tag" \
--title "$tag" \
--notes "$release_notes" \
--draft=${{ env.draft }} \
--prerelease=${{ env.prerelease }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}