Skip to content

manual release

manual release #38

Workflow file for this run

name: manual release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release'
required: true
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
name: Release ${{ inputs.version }}
outputs:
version: ${{ steps.version.outputs.version }}
notes: ${{ steps.cleaned-notes.outputs.notes }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Remove optional "v" prefix
id: version
run: |
VERSION=${{ inputs.version }}
echo "version=${VERSION#v}" >> "$GITHUB_OUTPUT"
- name: Check if branch and version match
id: guard
run: |
MAJOR_VERSION="${NUMERIC_VERSION%%.*}"
BRANCH_MAJOR_VERSION="${BRANCH%%.*}"
echo "MAJOR_VERSION=$(echo $MAJOR_VERSION)" >> $GITHUB_OUTPUT;
echo "BRANCH_MAJOR_VERSION=$(echo $BRANCH_MAJOR_VERSION)" >> $GITHUB_OUTPUT;
if [ "$MAJOR_VERSION" != "$BRANCH_MAJOR_VERSION" ]; then
echo "Mismatched versions! Aborting."
VERSION_MISMATCH='true';
else
echo "Versions match! Proceeding."
VERSION_MISMATCH='false';
fi
echo "VERSION_MISMATCH=$(echo $VERSION_MISMATCH)" >> $GITHUB_OUTPUT;
env:
BRANCH: ${{ github.ref_name }}
NUMERIC_VERSION: ${{ steps.version.outputs.version }}
- name: Fail if branch and release tag do not match
if: ${{ steps.guard.outputs.VERSION_MISMATCH == 'true' }}
uses: actions/github-script@v7
with:
script: |
core.setFailed('Workflow failed. Release version does not match with selected target branch. Did you select the correct branch?')
- name: Update Application.php version
run: sed -i "s/const VERSION = '.*';/const VERSION = '${{ steps.version.outputs.version }}';/g" src/Illuminate/Foundation/Application.php
- name: Commit version change
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update version to v${{ steps.version.outputs.version }}"
- name: SSH into splitter server
uses: appleboy/ssh-action@master
with:
host: 104.248.56.26
username: forge
key: ${{ secrets.SSH_PRIVATE_KEY_SPLITTER }}
script: |
cd laravel-${{ github.ref_name }}
git pull origin ${{ github.ref_name }}
bash ./bin/release.sh v${{ steps.version.outputs.version }}
script_stop: true
# - name: Generate release notes
# id: generated-notes
# uses: RedCrafter07/release-notes-action@main
# with:
# tag-name: v${{ steps.version.outputs.version }}
# token: ${{ secrets.GITHUB_TOKEN }}
# branch: ${{ github.ref_name }}
# - name: Cleanup release notes
# id: cleaned-notes
# run: |
# RELEASE_NOTES=$(echo $RELEASE_NOTES | sed '/## What/d')
# RELEASE_NOTES=$(echo $RELEASE_NOTES | sed '/## New Contributors/,$d')
# echo "notes=${RELEASE_NOTES}" >> "$GITHUB_OUTPUT"
# env:
# RELEASE_NOTES: ${{ steps.generated-notes.outputs.release-notes }}
# - name: Create release
# uses: softprops/action-gh-release@v2
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# tag_name: v${{ steps.version.outputs.version }}
# name: v${{ steps.version.outputs.version }}
# body: ${{ steps.cleaned-notes.outputs.notes }}
# target_commitish: ${{ github.ref_name }}
# make_latest: 'legacy'
# update-changelog:
# needs: release
# name: Update changelog
# uses: laravel/.github/.github/workflows/update-changelog.yml@main
# with:
# branch: ${{ github.ref_name }}
# version: "v${{ needs.release.outputs.version }}"
# notes: ${{ needs.release.outputs.notes }}