123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- name: Build
- on:
- workflow_dispatch:
- inputs:
- build-image-sha:
- type: string
- description: 'SHA for electron/build image'
- default: 'bc2f48b2415a670de18d13605b1cf0eb5fdbaae1'
- required: true
- skip-macos:
- type: boolean
- description: 'Skip macOS builds'
- default: false
- required: false
- skip-linux:
- type: boolean
- description: 'Skip Linux builds'
- default: false
- required: false
- skip-windows:
- type: boolean
- description: 'Skip Windows builds'
- default: false
- required: false
- skip-lint:
- type: boolean
- description: 'Skip lint check'
- default: false
- required: false
- push:
- branches:
- - main
- - '[1-9][0-9]-x-y'
- pull_request:
- defaults:
- run:
- shell: bash
- jobs:
- setup:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: read
- outputs:
- docs: ${{ steps.filter.outputs.docs }}
- src: ${{ steps.filter.outputs.src }}
- build-image-sha: ${{ steps.set-output.outputs.build-image-sha }}
- docs-only: ${{ steps.set-output.outputs.docs-only }}
- steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.0.2
- with:
- ref: ${{ github.event.pull_request.head.sha }}
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- id: filter
- with:
- filters: |
- docs:
- - 'docs/**'
- src:
- - '!docs/**'
- - name: Set Outputs for Build Image SHA & Docs Only
- id: set-output
- run: |
- if [ -z "${{ inputs.build-image-sha }}" ]; then
- echo "build-image-sha=bc2f48b2415a670de18d13605b1cf0eb5fdbaae1" >> "$GITHUB_OUTPUT"
- else
- echo "build-image-sha=${{ inputs.build-image-sha }}" >> "$GITHUB_OUTPUT"
- fi
- echo "docs-only=${{ steps.filter.outputs.docs == 'true' && steps.filter.outputs.src == 'false' }}" >> "$GITHUB_OUTPUT"
- # Lint Jobs
- lint:
- needs: setup
- if: ${{ !inputs.skip-lint }}
- uses: ./.github/workflows/pipeline-electron-lint.yml
- with:
- container: '{"image":"ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}","options":"--user root"}'
- secrets: inherit
- # Docs Only Jobs
- docs-only:
- needs: setup
- if: ${{ needs.setup.outputs.docs-only == 'true' }}
- uses: ./.github/workflows/pipeline-electron-docs-only.yml
- with:
- container: '{"image":"ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}","options":"--user root"}'
- secrets: inherit
- # Checkout Jobs
- checkout-macos:
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-macos}}
- runs-on: electron-arc-linux-amd64-32core
- container:
- image: ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}
- options: --user root
- volumes:
- - /mnt/cross-instance-cache:/mnt/cross-instance-cache
- - /var/run/sas:/var/run/sas
- env:
- GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
- outputs:
- build-image-sha: ${{ needs.setup.outputs.build-image-sha }}
- steps:
- - name: Checkout Electron
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- with:
- path: src/electron
- fetch-depth: 0
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Checkout & Sync & Save
- uses: ./src/electron/.github/actions/checkout
- with:
- generate-sas-token: 'true'
- checkout-linux:
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-linux}}
- runs-on: electron-arc-linux-amd64-32core
- container:
- image: ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}
- options: --user root
- volumes:
- - /mnt/cross-instance-cache:/mnt/cross-instance-cache
- - /var/run/sas:/var/run/sas
- env:
- GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
- PATCH_UP_APP_CREDS: ${{ secrets.PATCH_UP_APP_CREDS }}
- outputs:
- build-image-sha: ${{ needs.setup.outputs.build-image-sha}}
- steps:
- - name: Checkout Electron
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- with:
- path: src/electron
- fetch-depth: 0
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Checkout & Sync & Save
- uses: ./src/electron/.github/actions/checkout
- checkout-windows:
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-windows }}
- runs-on: electron-arc-linux-amd64-32core
- container:
- image: ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}
- options: --user root --device /dev/fuse --cap-add SYS_ADMIN
- volumes:
- - /mnt/cross-instance-cache:/mnt/cross-instance-cache
- env:
- GCLIENT_EXTRA_ARGS: '--custom-var=checkout_win=True'
- TARGET_OS: 'win'
- ELECTRON_DEPOT_TOOLS_WIN_TOOLCHAIN: '1'
- outputs:
- build-image-sha: ${{ needs.setup.outputs.build-image-sha}}
- steps:
- - name: Checkout Electron
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- with:
- path: src/electron
- fetch-depth: 0
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Checkout & Sync & Save
- uses: ./src/electron/.github/actions/checkout
- # GN Check Jobs
- macos-gn-check:
- uses: ./.github/workflows/pipeline-segment-electron-gn-check.yml
- needs: checkout-macos
- with:
- target-platform: macos
- target-archs: x64 arm64
- check-runs-on: macos-14
- gn-build-type: testing
- secrets: inherit
- linux-gn-check:
- uses: ./.github/workflows/pipeline-segment-electron-gn-check.yml
- needs: checkout-linux
- with:
- target-platform: linux
- target-archs: x64 arm arm64
- check-runs-on: electron-arc-linux-amd64-8core
- check-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- gn-build-type: testing
- secrets: inherit
- windows-gn-check:
- uses: ./.github/workflows/pipeline-segment-electron-gn-check.yml
- needs: checkout-windows
- with:
- target-platform: win
- target-archs: x64 x86 arm64
- check-runs-on: electron-arc-linux-amd64-8core
- check-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-windows.outputs.build-image-sha }}","options":"--user root --device /dev/fuse --cap-add SYS_ADMIN","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- gn-build-type: testing
- secrets: inherit
- # Build Jobs - These cascade into testing jobs
- macos-x64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: checkout-macos
- with:
- build-runs-on: macos-14-xlarge
- test-runs-on: macos-13
- target-platform: macos
- target-arch: x64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
-
- macos-arm64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: checkout-macos
- with:
- build-runs-on: macos-14-xlarge
- test-runs-on: macos-14
- target-platform: macos
- target-arch: arm64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- linux-x64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test-and-nan.yml
- needs: checkout-linux
- with:
- build-runs-on: electron-arc-linux-amd64-32core
- test-runs-on: electron-arc-linux-amd64-4core
- build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- test-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
- target-platform: linux
- target-arch: x64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- linux-x64-asan:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: checkout-linux
- with:
- build-runs-on: electron-arc-linux-amd64-32core
- test-runs-on: electron-arc-linux-amd64-4core
- build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- test-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
- target-platform: linux
- target-arch: x64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- is-asan: true
- secrets: inherit
-
- linux-arm:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: checkout-linux
- with:
- build-runs-on: electron-arc-linux-amd64-32core
- test-runs-on: electron-arc-linux-arm64-4core
- build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- test-container: '{"image":"ghcr.io/electron/test:arm32v7-${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init","volumes":["/home/runner/externals:/mnt/runner-externals"]}'
- target-platform: linux
- target-arch: arm
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
-
- linux-arm64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: checkout-linux
- with:
- build-runs-on: electron-arc-linux-amd64-32core
- test-runs-on: electron-arc-linux-arm64-4core
- build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
- test-container: '{"image":"ghcr.io/electron/test:arm64v8-${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
- target-platform: linux
- target-arch: arm64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- windows-x64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-windows }}
- with:
- build-runs-on: electron-arc-windows-amd64-16core
- test-runs-on: windows-latest
- target-platform: win
- target-arch: x64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- windows-x86:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-windows }}
- with:
- build-runs-on: electron-arc-windows-amd64-16core
- test-runs-on: windows-latest
- target-platform: win
- target-arch: x86
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- windows-arm64:
- permissions:
- contents: read
- issues: read
- pull-requests: read
- uses: ./.github/workflows/pipeline-electron-build-and-test.yml
- needs: setup
- if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-windows }}
- with:
- build-runs-on: electron-arc-windows-amd64-16core
- test-runs-on: electron-hosted-windows-arm64-4core
- target-platform: win
- target-arch: arm64
- is-release: false
- gn-build-type: testing
- generate-symbols: false
- upload-to-storage: '0'
- secrets: inherit
- gha-done:
- name: GitHub Actions Completed
- runs-on: ubuntu-latest
- needs: [docs-only, macos-x64, macos-arm64, linux-x64, linux-x64-asan, linux-arm, linux-arm64, windows-x64, windows-x86, windows-arm64]
- if: always() && !contains(needs.*.result, 'failure')
- steps:
- - name: GitHub Actions Jobs Done
- run: |
- echo "All GitHub Actions Jobs are done"
|