Build #302
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Build | |
on: | |
workflow_dispatch: | |
inputs: | |
git_ref: | |
description: Emacs git ref to build | |
required: true | |
default: "master" | |
git_sha: | |
description: Override Emacs git commit SHA to build | |
required: false | |
builder_ref: | |
description: "Git ref to checkout of build-emacs-for-macos" | |
required: true | |
default: "v0.6.48" | |
builder_args: | |
description: Custom arguments passed to build script | |
required: false | |
default: "" | |
os: | |
description: 'Runner OS ("macos-13", "macos-14", or "macos-latest")' | |
required: true | |
default: "macos-13" | |
test_build_name: | |
description: "Test build name" | |
required: false | |
default: "" | |
test_release_type: | |
description: "prerelease or draft" | |
required: false | |
default: "" | |
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: false | |
type: boolean | |
jobs: | |
prepare: | |
name: Prepare | |
uses: ./.github/workflows/_prepare.yml | |
with: | |
os: ${{ github.event.inputs.os }} | |
builder_ref: ${{ github.event.inputs.builder_ref }} | |
secrets: | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} | |
# ---------------------------------------------------------------------------- | |
# Build x86_64 version of Emacs | |
# ---------------------------------------------------------------------------- | |
build_x86_64: | |
name: Build (x86_64) | |
if: ${{ github.event.inputs.x86_64 == 'true' }} | |
uses: ./.github/workflows/_build.yml | |
needs: [prepare] | |
with: | |
os: ${{ github.event.inputs.os }} | |
build_os: "macos-13" | |
artifact_prefix: "x86_64-" | |
git_ref: ${{ github.event.inputs.git_ref }} | |
git_sha: ${{ github.event.inputs.git_sha }} | |
build_args: ${{ github.event.inputs.builder_args }} | |
test_build_name: ${{ github.event.inputs.test_build_name }} | |
test_release_type: ${{ github.event.inputs.test_release_type }} | |
secrets: | |
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }} | |
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
AC_USERNAME: ${{ secrets.AC_USERNAME }} | |
AC_PASSWORD: ${{ secrets.AC_PASSWORD }} | |
AC_PROVIDER: ${{ secrets.AC_PROVIDER }} | |
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }} | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} | |
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: [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: | |
os: ${{ github.event.inputs.os }} | |
plan_artifact: x86_64-build-plan | |
dmg_artifact: x86_64-dmg | |
secrets: | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} | |
# ---------------------------------------------------------------------------- | |
# Build arm64 version of Emacs | |
# ---------------------------------------------------------------------------- | |
build_arm64: | |
name: Build (arm64) | |
if: ${{ github.event.inputs.arm64 == 'true' }} | |
uses: ./.github/workflows/_build.yml | |
needs: [prepare] | |
with: | |
os: ${{ github.event.inputs.os }} | |
build_os: "macos-13-xlarge" # Only macos-13-xlarge has arm64 support. | |
artifact_prefix: "arm64-" | |
git_ref: ${{ github.event.inputs.git_ref }} | |
git_sha: ${{ github.event.inputs.git_sha }} | |
build_args: ${{ github.event.inputs.builder_args }} | |
test_build_name: ${{ github.event.inputs.test_build_name }} | |
test_release_type: ${{ github.event.inputs.test_release_type }} | |
secrets: | |
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }} | |
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
AC_USERNAME: ${{ secrets.AC_USERNAME }} | |
AC_PASSWORD: ${{ secrets.AC_PASSWORD }} | |
AC_PROVIDER: ${{ secrets.AC_PROVIDER }} | |
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }} | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} | |
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: [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: | |
os: ${{ github.event.inputs.os }} | |
plan_artifact: arm64-build-plan | |
dmg_artifact: arm64-dmg | |
secrets: | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} | |
# ---------------------------------------------------------------------------- | |
# 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() && | |
github.event.inputs.test_build_name == '' && | |
contains(needs.*.result, 'success') && | |
!contains(needs.*.result, 'failure') | |
secrets: | |
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }} |