Skip to content

Release (Manual Step) #16

Release (Manual Step)

Release (Manual Step) #16

Workflow file for this run

name: Release (Manual Step)
on:
workflow_dispatch:
inputs:
name:
description: "Enter - major, minor, patch"
default: "patch"
jobs:
tfswitch-release:
runs-on: ubuntu-latest
steps:
- name: Check if provided input is valid
run: |
echo "Semantic Version: ${{ github.event.inputs.name }}"
VERSION=${{ github.event.inputs.name }}
if [ "$VERSION" != "major" ] && [ "$VERSION" != "minor" ] && [ "$VERSION" != "patch" ]; then
echo "Error: Provided input string must be 'major', 'minor', or 'patch'"
exit 1
fi
# Checkout code from repo
- name: Checkout repo
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }} # required for better experience using pre-releases
fetch-depth: '0'
# Install Go
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: '1.22' # The Go version to download (if necessary) and use
# Double check Go version
- name: Go version
id: Version
run: go version
# Download Go dependencies
- name: Go download
run: go mod download
# Test to see if tfswitch works with --help
- name: Go build
env:
CGO_ENABLED: 0 # Build statically linked binaries
run: mkdir -p build && go build -v -o build/tfswitch && build/tfswitch --help
continue-on-error: false
- name: Create dry tag
uses: anothrNick/github-tag-action@1.69.0
id: semver-tag-dry
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: true
INITIAL_VERSION: 1.1.0
RELEASE_BRANCHES: master
DEFAULT_BUMP: ${{ github.event.inputs.name }}
PRERELEASE: false
DRY_RUN: true # Only get the tag - dry
VERBOSE: false
# Echo version
- name: Echo version
run: |
echo ${{ steps.semver-tag-dry.outputs.tag }}
# Push the changes to remote
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: release-${{ steps.semver-tag-dry.outputs.tag }}
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: release-${{ steps.semver-tag-dry.outputs.tag }}
title: Release ${{ steps.semver-tag-dry.outputs.tag }}
labels: automerge
- name: Merging release PR
run: gh pr merge --merge --auto "${{ steps.cpr.outputs.pull-request-number }}"
env:
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
# Introduce new tag (for real)
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.69.0
id: semver-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: false
INITIAL_VERSION: 1.1.0
RELEASE_BRANCHES: master
DEFAULT_BUMP: ${{ github.event.inputs.name }}
PRERELEASE: false
DRY_RUN: false # Not dry
VERBOSE: true
# Run goreleaser to create new binaries
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_VERSION: ${{ steps.semver-tag.outputs.tag }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
# Install Python
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.x
# Install Py dependencies
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install mkdocs-material
# Build WWW page
- name: Build page
run: cd www && mkdocs gh-deploy --force
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}