Skip to content

3. Final Release

3. Final Release #8

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
# Define outputs that this job will pass to other jobs
outputs:
version_string: ${{ steps.versioning.outputs.VERSION_STRING }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Construct Dev Version String
id: versioning
if: github.event.inputs.build_type == 'dev_build'
run: |
BRANCH_NAME="${{ github.ref_name }}"
BASE_VERSION=$(echo $BRANCH_NAME | sed -n 's/.*REL_\([0-9.]*\).*/\1/p')
TICKET_NUM=$(echo $BRANCH_NAME | sed -n 's/.*TKT_\([0-9]*\).*/\1/p')
BRANCH_BUILD_NUM=$(git rev-list --count HEAD)
GLOBAL_BUILD_NUM="${{ github.run_number }}"
FINAL_VERSION="v${BASE_VERSION}_dev${TICKET_NUM}.${BRANCH_BUILD_NUM}_${GLOBAL_BUILD_NUM}"
echo "VERSION_STRING=${FINAL_VERSION}" >> $GITHUB_OUTPUT
# You would add more "Construct Version String" steps here for RC, Final, etc.
############################################################
# JOB 2: Run the actual builds by calling the reusable workflows
############################################################
build_binaries:
name: Build Binaries
needs: call_builds # This job waits for the version calculation to finish
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 }}