--- 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: "master" builder_args: description: Custom arguments passed to build script required: false default: "" os: description: 'Runner OS ("macos-11", "macos-12", or "macos-latest")' required: true default: "macos-11" 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 workflow_call: inputs: git_ref: description: Emacs git ref to build required: false default: "master" type: string git_sha: description: Override Emacs git commit SHA to build required: false default: "" type: string builder_ref: description: "Git ref to checkout of build-emacs-for-macos" required: false default: "master" type: string builder_args: description: Custom arguments passed to build script required: false default: "" type: string os: description: 'Runner OS ("macos-11", "macos-12", or "macos-latest")' required: false default: "macos-11" 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: false type: boolean secrets: APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: description: Base64 encoded Apple Developer Certificate required: true APPLE_DEVELOPER_CERTIFICATE_PASSWORD: description: Password for Apple Developer Certificate required: true KEYCHAIN_PASSWORD: description: Password to use for temporary local keychain on runner required: true AC_USERNAME: description: Apple Connect Username required: true AC_PASSWORD: description: Apple Connect Password required: true AC_PROVIDER: description: Apple Connect Provider required: true AC_SIGN_IDENTITY: description: Apple Connect Signing Identify required: true TAP_REPO_TOKEN: description: Homebrew Tap Token required: true 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-11" 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 needs: [build_x86_64] if: ${{ needs.build_x86_64.outputs.package_created }} with: os: ${{ github.event.inputs.os }} plan_artifact: x86_64-build-plan dmg_artifact: x86_64-dmg test_build_name: ${{ github.event.inputs.test_build_name }} 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 needs: [build_arm64] if: ${{ needs.build_arm64.outputs.package_created }} with: os: ${{ github.event.inputs.os }} plan_artifact: arm64-build-plan dmg_artifact: arm64-dmg test_build_name: ${{ github.event.inputs.test_build_name }} secrets: TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}