name: Main on: push: # Run the entire pipeline for 'main' even though the merge queue already runs checks # for every change. This just offers an extra layer of testing and covers the case of # random force pushes. branches: ["main"] pull_request: types: ['opened', 'synchronize'] branches: ["**"] merge_group: types: [checks_requested] workflow_dispatch: jobs: build-win: name: Windows if: ${{ github.event_name != 'pull_request' }} uses: ./.github/workflows/windows.yml with: unit-tests: true secrets: inherit build-mac: name: Mac if: ${{ github.event_name != 'pull_request' }} uses: ./.github/workflows/mac.yml with: unit-tests: true secrets: inherit build-linux: name: Linux uses: ./.github/workflows/linux.yml with: unit-tests: true wpt-layout: ${{ github.event_name == 'pull_request' && 'none' || '2020' }} secrets: inherit lint: name: Lint uses: ./.github/workflows/lint.yml secrets: inherit build-android: name: Android if: ${{ github.event_name != 'pull_request' }} uses: ./.github/workflows/android.yml with: profile: "release" secrets: inherit build-ohos: name: OpenHarmony if: ${{ github.event_name != 'pull_request' }} uses: ./.github/workflows/ohos.yml with: profile: "release" secrets: inherit build-result: name: Result runs-on: ubuntu-latest if: always() # needs all build to detect cancellation needs: - "build-win" - "build-mac" - "build-linux" - "build-android" - "build-ohos" - "lint" steps: - name: Merge build timings uses: actions/upload-artifact/merge@v4 with: name: cargo-timings pattern: cargo-timings-* delete-merged: true - name: Success if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} run: exit 0 - name: Failure if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') run: exit 1