Files
emacs-builds/.github/workflows/_build.yml
Jim Myhrberg c2431549ce chore(workflows): update to macos-15 runners
Upgrade from `macos-13` and `macos-14` runners to `macos-15` and 
`macos-15-intel` runners.

Previously we were still using `macos-13`, as the default free tier were
Intel-based. From macos-14 and later the default free tier is ARM-based.
2025-10-09 19:03:26 +01:00

152 lines
4.8 KiB
YAML

---
name: _build
on:
workflow_call:
inputs:
git_ref:
description: Emacs git ref to build
required: true
type: string
git_sha:
description: Override Emacs git commit SHA to build
required: false
type: string
builder_ref:
description: "Git ref to checkout of build-emacs-for-macos"
required: false
type: string
builder_args:
description: Custom arguments passed to build script
required: false
default: ""
type: string
build_variant:
description: "Optional build number used as version suffix"
required: false
type: string
test_build_name:
description: "Test build name"
required: false
default: ""
type: string
test_release_type:
description: "prerelease or draft"
required: false
default: ""
type: string
x86_64:
description: "Build x86_64 version of Emacs"
required: false
default: true
type: boolean
arm64:
description: "Build arm64 version of Emacs"
required: false
default: true
type: boolean
jobs:
prepare:
name: Prepare
uses: ./.github/workflows/_prepare.yml
with:
builder_ref: ${{ inputs.builder_ref }}
# ----------------------------------------------------------------------------
# Build x86_64 version of Emacs
# ----------------------------------------------------------------------------
build_x86_64:
name: Build (x86_64)
if: inputs.x86_64
uses: ./.github/workflows/_build_emacs.yml
needs: [prepare]
with:
builder_ref: ${{ needs.prepare.outputs.builder_sha }}
os: "macos-15-intel"
build_os: "macos-15-intel"
artifact_prefix: "x86_64-"
git_ref: ${{ inputs.git_ref }}
git_sha: ${{ inputs.git_sha }}
build_args: ${{ inputs.builder_args }}
build_variant: ${{ inputs.build_variant }}
test_build_name: ${{ inputs.test_build_name }}
test_release_type: ${{ inputs.test_release_type }}
secrets: inherit
release_x86_64:
name: Release (x86_64)
uses: ./.github/workflows/_release.yml
# Depend on both build_x86_64 and build_arm64, but only run if build_x86_64
# was successful and a package was created. This ensure wait for all builds
# to complete before running any release jobs.
needs: [prepare, build_x86_64, build_arm64]
if: |
always() &&
needs.build_x86_64.result == 'success' &&
needs.build_x86_64.outputs.package_created &&
needs.build_arm64.result != 'failure'
with:
builder_ref: ${{ needs.prepare.outputs.builder_sha }}
os: "macos-15-intel"
plan_artifact: x86_64-build-plan
dmg_artifact: x86_64-dmg
# ----------------------------------------------------------------------------
# Build arm64 version of Emacs
# ----------------------------------------------------------------------------
build_arm64:
name: Build (arm64)
if: inputs.arm64
uses: ./.github/workflows/_build_emacs.yml
needs: [prepare]
with:
builder_ref: ${{ needs.prepare.outputs.builder_sha }}
os: "macos-15"
build_os: "macos-15"
artifact_prefix: "arm64-"
git_ref: ${{ inputs.git_ref }}
git_sha: ${{ inputs.git_sha }}
build_args: ${{ inputs.builder_args }}
build_variant: ${{ inputs.build_variant }}
test_build_name: ${{ inputs.test_build_name }}
test_release_type: ${{ inputs.test_release_type }}
secrets: inherit
release_arm64:
name: Release (arm64)
uses: ./.github/workflows/_release.yml
# Depend on both build_arm64 and build_x86_64, but only run if build_arm64
# was successful and a package was created. This ensure wait for all builds
# to complete before running any release jobs.
needs: [prepare, build_arm64, build_x86_64]
if: |
always() &&
needs.build_arm64.result == 'success' &&
needs.build_arm64.outputs.package_created &&
needs.build_x86_64.result != 'failure'
with:
builder_ref: ${{ needs.prepare.outputs.builder_sha }}
os: "macos-15"
plan_artifact: arm64-build-plan
dmg_artifact: arm64-dmg
# ----------------------------------------------------------------------------
# Trigger update casks workflow in homebrew tap
# ----------------------------------------------------------------------------
update_casks:
name: Update Casks
uses: ./.github/workflows/_update-casks.yml
# Depend on both release jobs, but only run if either of them was
# successful. This ensures we only run this job once all release jobs have
# been completed.
needs: [release_x86_64, release_arm64]
if: >-
always() &&
inputs.test_build_name == '' &&
contains(needs.*.result, 'success') &&
!contains(needs.*.result, 'failure')
secrets: inherit