Skip to content

Settings: Remote ID page cleanup and dynamic section visibility #7088

Settings: Remote ID page cleanup and dynamic section visibility

Settings: Remote ID page cleanup and dynamic section visibility #7088

Workflow file for this run

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 }}