name: Publish Linux

on:
  workflow_dispatch:
    inputs:
      build-image-sha:
        type: string
        description: 'SHA for electron/build image'
        default: 'a82b87d7a4f5ff0cab61405f8151ac4cf4942aeb'
      upload-to-storage:
        description: 'Uploads to Azure storage'
        required: false
        default: '1'
        type: string
      run-linux-publish:
        description: 'Run the publish jobs vs just the build jobs'
        type: boolean
        default: false

permissions: {}

jobs:
  checkout-linux:
    runs-on: electron-arc-centralus-linux-amd64-32core
    permissions:
      contents: read
    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:
      CHROMIUM_GIT_COOKIE: ${{ secrets.CHROMIUM_GIT_COOKIE }}
      GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
    steps:
    - name: Checkout Electron
      uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
      with:
        path: src/electron
        fetch-depth: 0
    - name: Checkout & Sync & Save
      uses: ./src/electron/.github/actions/checkout

  publish-x64:
    uses: ./.github/workflows/pipeline-segment-electron-publish.yml
    permissions:
      artifact-metadata: write
      attestations: write
      contents: read
      id-token: write
    needs: checkout-linux
    with:
      environment: production-release
      build-runs-on: electron-arc-centralus-linux-amd64-32core
      build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
      target-platform: linux
      target-arch: x64
      is-release: true
      gn-build-type: release
      generate-symbols: true
      upload-to-storage: ${{ inputs.upload-to-storage }}
    secrets: inherit

  publish-arm:
    uses: ./.github/workflows/pipeline-segment-electron-publish.yml
    permissions:
      artifact-metadata: write
      attestations: write
      contents: read
      id-token: write
    needs: checkout-linux
    with:
      environment: production-release
      build-runs-on: electron-arc-centralus-linux-amd64-32core
      build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
      target-platform: linux
      target-arch: arm
      is-release: true
      gn-build-type: release
      generate-symbols: true
      upload-to-storage: ${{ inputs.upload-to-storage }}
    secrets: inherit

  publish-arm64:
    uses: ./.github/workflows/pipeline-segment-electron-publish.yml
    permissions:
      artifact-metadata: write
      attestations: write
      contents: read
      id-token: write
    needs: checkout-linux
    with:
      environment: production-release
      build-runs-on: electron-arc-centralus-linux-amd64-32core
      build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
      target-platform: linux
      target-arch: arm64
      is-release: true
      gn-build-type: release
      generate-symbols: true
      upload-to-storage: ${{ inputs.upload-to-storage }}
    secrets: inherit
