Settings: Remote ID page cleanup and dynamic section visibility #7088
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: MacOS | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - 'Stable*' | |
| tags: | |
| - 'v*' | |
| paths-ignore: | |
| - 'docs/**' | |
| pull_request: | |
| merge_group: | |
| workflow_dispatch: | |
| inputs: | |
| build_type: | |
| description: 'Build type' | |
| required: false | |
| default: 'Release' | |
| type: choice | |
| options: | |
| - Release | |
| - Debug | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | |
| permissions: | |
| contents: read | |
| id-token: write | |
| attestations: write | |
| actions: read | |
| security-events: write | |
| jobs: | |
| changes: | |
| uses: ./.github/workflows/_detect-changes.yml | |
| with: | |
| platform: macos | |
| build: | |
| needs: changes | |
| if: always() && !cancelled() && (needs.changes.outputs.should_build == 'true' || needs.changes.result == 'skipped') | |
| runs-on: macos-15 | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build_type: ${{ inputs.build_type && fromJSON(format('["{0}"]', inputs.build_type)) || fromJSON('["Release"]') }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: ${{ github.event_name == 'pull_request' && 1 || 0 }} | |
| fetch-tags: ${{ github.event_name != 'pull_request' }} | |
| - name: Build Setup | |
| id: setup | |
| uses: ./.github/actions/build-setup | |
| with: | |
| restore-timestamps: ${{ github.event_name != 'pull_request' && 'true' || 'false' }} | |
| qt-host: mac | |
| qt-arch: clang_64 | |
| build-type: ${{ matrix.build_type }} | |
| - name: Setup Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ steps.setup.outputs.xcode_version }} | |
| - name: Install Dependencies | |
| uses: ./.github/actions/install-dependencies | |
| - name: CMake configure | |
| uses: ./.github/actions/cmake-configure | |
| with: | |
| build-dir: ${{ runner.temp }}/build | |
| build-type: ${{ matrix.build_type }} | |
| stable: ${{ (github.ref_type == 'tag' || contains(github.ref, 'Stable')) && 'true' || 'false' }} | |
| extra-args: -DQGC_MACOS_SIGN_WITH_IDENTITY=${{ github.event_name != 'pull_request' && 'ON' || 'OFF' }} | |
| - name: Build | |
| uses: ./.github/actions/cmake-build | |
| with: | |
| build-dir: ${{ runner.temp }}/build | |
| build-type: ${{ matrix.build_type }} | |
| # TODO: Enable GStreamer integration tests once a Debug build is added to the matrix. | |
| # Release builds strip test infrastructure; these tests require a Debug or RelWithDebInfo build. | |
| # - name: Run GStreamer Integration Tests | |
| # uses: ./.github/actions/run-unit-tests | |
| # with: | |
| # build-dir: ${{ runner.temp }}/build | |
| # include-labels: 'Integration' | |
| - name: Verify dev build executable | |
| uses: ./.github/actions/verify-executable | |
| with: | |
| binary-path: ${{ runner.temp }}/build/${{ matrix.build_type }}/QGroundControl.app/Contents/MacOS/QGroundControl | |
| build-dir: ${{ runner.temp }}/build | |
| - name: Import Code Signing Certificate | |
| if: github.event_name != 'pull_request' | |
| uses: apple-actions/import-codesign-certs@v6 | |
| with: | |
| p12-file-base64: ${{ secrets.MACOS_CERT_P12_BASE64 }} | |
| p12-password: ${{ secrets.MACOS_CERT_P12_PASSWORD }} | |
| - name: Create signed/notarized/stapled app bundle | |
| if: github.event_name != 'pull_request' | |
| working-directory: ${{ runner.temp }}/build | |
| run: cmake --install . --config ${{ matrix.build_type }} | |
| env: | |
| QGC_MACOS_SIGNING_IDENTITY: ${{ secrets.MACOS_SIGNING_IDENTITY }} | |
| QGC_MACOS_NOTARIZATION_USERNAME: ${{ secrets.MACOS_NOTARIZATION_USERNAME }} | |
| QGC_MACOS_NOTARIZATION_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }} | |
| QGC_MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.MACOS_NOTARIZATION_TEAM_ID }} | |
| - name: Create unsigned app bundle | |
| if: github.event_name == 'pull_request' | |
| working-directory: ${{ runner.temp }}/build | |
| run: cmake --install . --config ${{ matrix.build_type }} | |
| - name: Mount DMG | |
| working-directory: ${{ runner.temp }}/build | |
| run: | | |
| if ! hdiutil attach QGroundControl.dmg; then | |
| echo "::error::Failed to mount DMG" | |
| ls -la QGroundControl.dmg 2>/dev/null || echo "DMG file not found" | |
| exit 1 | |
| fi | |
| - name: Verify DMG executable | |
| uses: ./.github/actions/verify-executable | |
| with: | |
| binary-path: /Volumes/QGroundControl/QGroundControl.app/Contents/MacOS/QGroundControl | |
| - name: Attest and Upload | |
| if: matrix.build_type == 'Release' | |
| uses: ./.github/actions/attest-and-upload | |
| with: | |
| artifact-name: QGroundControl.dmg | |
| package-name: QGroundControl | |
| aws-role-arn: ${{ secrets.AWS_ROLE_ARN }} | |
| aws-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| aws-distribution-id: ${{ secrets.AWS_DISTRIBUTION_ID }} |