Release sm-action Initial Release 2.0.0 #10
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: Release | |
run-name: Release sm-action ${{ inputs.release_type }} ${{ inputs.version_number }} | |
on: | |
workflow_dispatch: | |
inputs: | |
release_type: | |
description: "Release Options" | |
required: true | |
default: "Initial Release" | |
type: choice | |
options: | |
- Initial Release | |
- Redeploy | |
- Dry Run | |
version_number: | |
description: "New Version" | |
required: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
release: | |
name: "Release sm-action ${{ github.event.inputs.version_number }} Version" | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout Branch | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Branch check | |
if: ${{ github.event.inputs.release_type != 'Dry Run' }} | |
run: | | |
if [[ "$GITHUB_REF" != "refs/heads/main" ]]; then | |
echo "===================================" | |
echo "[!] Can only release from the 'main' branch" | |
echo "===================================" | |
exit 1 | |
fi | |
- name: Get latest release version | |
id: get-latest-release | |
run: | | |
latest_version=$(curl --silent "https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/latest" | jq -r '.tag_name') | |
echo "Latest release version is $latest_version" | |
echo "latest_version=$latest_version" >> $GITHUB_OUTPUT | |
- name: Check Release Version | |
id: version | |
env: | |
VERSION: ${{ github.event.inputs.version_number }} | |
LATEST_VERSION: ${{ steps.get-latest-release.outputs.latest_version }} | |
run: | | |
function version { printf "%03d%03d%03d" $(echo "$1" | tr 'v' ' ' | tr '.' ' '); } | |
VERSION="v"$VERSION | |
if [ $(version $VERSION) -le $(version $LATEST_VERSION) ]; then | |
echo "===================================" | |
echo "[!] Version provided $VERSION is not greater than latest release $LATEST_VERSION" | |
echo "===================================" | |
exit 1 | |
fi | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
echo "Version is $VERSION" | |
MAJOR_VERSION=$(echo $VERSION | cut -d "." -f 1) | |
echo "Major version is $MAJOR_VERSION" | |
echo "major_version=$MAJOR_VERSION" >> $GITHUB_OUTPUT | |
- name: Setup git | |
run: | | |
git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com" | |
git config --local user.name "bitwarden-devops-bot" | |
- name: Create release | |
if: ${{ github.event.inputs.release_type != 'Dry Run' }} | |
uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # v1.13.0 | |
env: | |
PKG_VERSION: ${{ github.event.inputs.version_number }} | |
with: | |
commit: ${{ github.sha }} | |
tag: v${{ env.PKG_VERSION }} | |
name: v${{ env.PKG_VERSION }} | |
body: "<insert release notes here>" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
draft: true | |
- name: git tag | |
env: | |
VERSION: ${{ steps.version.outputs.major_version }} | |
run: git tag -f $VERSION | |
- name: Push tags | |
if: ${{ github.event.inputs.release_type != 'Dry Run' }} | |
run: git push -f --tags |