name: Build on: workflow_dispatch: inputs: build-image-sha: type: string description: 'SHA for electron/build image' default: 'cf814a4d2501e8e843caea071a6b70a48e78b855' 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-lint: type: boolean description: 'Skip lint check' default: false required: false # push: # pull_request: jobs: changes: runs-on: ubuntu-latest permissions: pull-requests: read outputs: docs: ${{ steps.filter.outputs.docs }} src: ${{ steps.filter.outputs.src }} steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 #v4.0.2 - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 id: filter with: filters: | docs: - 'docs/**' src: - '!docs/**' # Lint Jobs lint: if: ${{ !inputs.skip-lint }} uses: ./.github/workflows/pipeline-electron-lint.yml with: container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root"}' secrets: inherit # Docs Only Jobs docs-only: needs: changes if: ${{ needs.changes.outputs.docs == 'true' && needs.changes.outputs.src == 'false'}} uses: ./.github/workflows/pipeline-electron-docs-only.yml with: container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root"}' secrets: inherit # Checkout Jobs checkout-macos: needs: changes if: ${{ needs.changes.outputs.src == 'true' && !inputs.skip-macos}} runs-on: aks-linux-large container: image: ghcr.io/electron/build:${{ inputs.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' steps: - name: Checkout Electron uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 with: path: src/electron fetch-depth: 0 - name: Checkout & Sync & Save uses: ./src/electron/.github/actions/checkout with: generate-sas-token: 'true' checkout-linux: needs: changes if: ${{ needs.changes.outputs.src == 'true' && !inputs.skip-linux}} runs-on: aks-linux-large container: image: ghcr.io/electron/build:${{ inputs.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' steps: - name: Checkout Electron uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 with: path: src/electron fetch-depth: 0 - name: Checkout & Sync & Save uses: ./src/electron/.github/actions/checkout # Build Jobs - These cascade into testing jobs macos-x64: uses: ./.github/workflows/pipeline-electron-build-and-test.yml needs: checkout-macos with: build-runs-on: macos-14-xlarge test-runs-on: macos-14-xlarge target-platform: macos target-arch: x64 is-release: false gn-build-type: testing generate-symbols: false upload-to-storage: '0' secrets: inherit macos-arm64: uses: ./.github/workflows/pipeline-electron-build-and-test.yml needs: checkout-macos with: build-runs-on: macos-14-xlarge test-runs-on: macos-14-xlarge target-platform: macos target-arch: arm64 is-release: false gn-build-type: testing generate-symbols: false upload-to-storage: '0' secrets: inherit linux-x64: uses: ./.github/workflows/pipeline-electron-build-and-test-and-nan.yml needs: checkout-linux with: build-runs-on: aks-linux-large test-runs-on: aks-linux-medium build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}' test-container: '{"image":"ghcr.io/electron/build:${{ inputs.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-arm: uses: ./.github/workflows/pipeline-electron-build-and-test.yml needs: checkout-linux with: build-runs-on: aks-linux-large test-runs-on: aks-linux-arm-medium build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}' test-container: '{"image":"ghcr.io/electron/test:arm32v7-${{ inputs.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: uses: ./.github/workflows/pipeline-electron-build-and-test.yml needs: checkout-linux with: build-runs-on: aks-linux-large test-runs-on: aks-linux-arm-medium build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}' test-container: '{"image":"ghcr.io/electron/test:arm64v8-${{ inputs.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