Skip to content

3. Final Release

3. Final Release #27

Workflow file for this run

# .github/workflows/release.yml
name: MSX Tile Forge Build Orchestrator
on:
workflow_dispatch:
inputs:
build_type:
description: 'Type of build to run'
required: true
default: 'dev_build'
type: choice
options: [dev_build] # Add other types like 'rc_build' back in later
jobs:
############################################################
# JOB 1: Calculate Version and Trigger Worker Workflows
############################################################
call_builds:
name: Calculate Version & Call Builds
runs-on: ubuntu-latest
outputs:
version_string: ${{ steps.versioning.outputs.VERSION_STRING }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Construct Dev Version String via GitHub API
id: versioning
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
echo "--- Start Version Construction ---"
BRANCH_NAME="${{ github.ref_name }}"
echo "1. Branch Name: $BRANCH_NAME"
TICKET_NUM=$(echo "$BRANCH_NAME" | grep -oP 'TKT_[0-9]+' | sed 's/TKT_//')
echo "2. Parsed TICKET_NUM: $TICKET_NUM"
# Use the GitHub CLI to get the milestone title for the ticket
MILESTONE_TITLE=$(gh issue view "$TICKET_NUM" --json milestone --jq '.milestone.title')
echo "3. Fetched Milestone Title from API: $MILESTONE_TITLE"
# Parse the base version from the Milestone title
BASE_VERSION=$(echo "$MILESTONE_TITLE" | grep -oP 'REL_[0-9.]+' | sed 's/REL_//')
echo "4. Parsed BASE_VERSION: $BASE_VERSION"
BRANCH_BUILD_NUM=$(git rev-list --count HEAD)
echo "5. Parsed BRANCH_BUILD_NUM (Commit Count): $BRANCH_BUILD_NUM"
GLOBAL_BUILD_NUM="${{ github.run_number }}"
echo "6. Parsed GLOBAL_BUILD_NUM (Run Number): $GLOBAL_BUILD_NUM"
FINAL_VERSION="${BASE_VERSION}_dev${TICKET_NUM}.${BRANCH_BUILD_NUM}_${GLOBAL_BUILD_NUM}"
echo "7. Assembled FINAL_VERSION: $FINAL_VERSION"
echo "--- End Version Construction ---"
echo "VERSION_STRING=${FINAL_VERSION}" >> $GITHUB_OUTPUT
############################################################
# JOB 2: Run the actual builds by calling the reusable workflows
############################################################
build_binaries:
name: Build Binaries
needs: call_builds
uses: ./.github/workflows/build-windows.yml
with:
version_string: ${{ needs.call_builds.outputs.version_string }}
build_linux_binaries:
name: Build Linux Binaries
needs: call_builds
uses: ./.github/workflows/build-linux.yml
with:
version_string: ${{ needs.call_builds.outputs.version_string }}