Skip to content

When setting up our tracking feature, we avoid saving at all times, make relations accept that reality #5350

When setting up our tracking feature, we avoid saving at all times, make relations accept that reality

When setting up our tracking feature, we avoid saving at all times, make relations accept that reality #5350

Workflow file for this run

---
name: ๐ŸŽ MacOS
on:
push:
branches:
- master
- release-**
pull_request:
release:
types: ['published']
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
jobs:
build:
strategy:
matrix:
include:
- os: macos-13
triplet: x64-osx
deployment-target: "10.15"
- os: macos-14
triplet: arm64-osx
deployment-target: "11.0"
name: build (macos)
runs-on: ${{ matrix.os }}
steps:
- name: ๐Ÿฃ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: ๐ŸŒพ Prepare variables
id: vars
run: |
./scripts/ci/env_gh.sh
BUILD_ROOT="/Users/runner"
echo "BUILD_ROOT=${BUILD_ROOT}" >> $GITHUB_ENV
echo "BUILD_TYPE=Release" >> $GITHUB_ENV
echo "CMAKE_BUILD_DIR=${BUILD_ROOT}/builddir" >> $GITHUB_ENV
- name: โ›“๏ธ Setup SSH
uses: webfactory/[email protected]
if: ${{ env.SENTRY_AUTH_TOKEN != '' }}
with:
ssh-private-key: ${{ secrets.SSH_KEY_DEPLOYMENT_CERTIFICATES }}
- name: ๐Ÿ’Ž Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: ๐Ÿ” Setup code signing
if: ${{ env.SENTRY_AUTH_TOKEN != '' }}
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
run: |
bundle install
bundle exec fastlane ios setup_signing type:development app_identifier:ch.opengis.qfield # --verbose
- name: ๐Ÿฉ Install CMake and Ninja
uses: lukka/get-cmake@latest
- name: ๐Ÿ”จ Prepare build env
run: |
brew install automake bison flex gnu-sed create-dmg autoconf-archive nasm libtool
echo $(brew --prefix bison)/bin >> $GITHUB_PATH
echo $(brew --prefix flex)/bin >> $GITHUB_PATH
echo $(brew --prefix libtool)/bin >> $GITHUB_PATH
- name: ๐Ÿฉ Install CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: 3.29.0
- name: ๐Ÿญ Setup XCode
uses: maxim-lobanov/[email protected]
with:
xcode-version: latest-stable
- name: ๐Ÿฎ ccache
uses: hendrikmuhs/[email protected]
with:
key: ccache-${{ matrix.triplet }}-qt6
max-size: 200M
- name: ๐Ÿ Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: ๐ŸŒฑ Install dependencies and generate project files
run: |
source ./scripts/version_number.sh
source ./scripts/ci/generate-version-details.sh
cmake -S "${{ github.workspace }}" \
-B "${CMAKE_BUILD_DIR}" \
-G Xcode \
-D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-D WITH_VCPKG=ON \
-D WITH_NFC=OFF \
-D WITH_SPIX=ON \
-D APP_VERSION="${APP_VERSION}" \
-D APP_VERSION_STR="${APP_VERSION_STR}" \
-D APP_PACKAGE_NAME="${APP_PACKAGE_NAME}" \
-D ENABLE_TESTS=ON \
-D NUGET_USERNAME=opengisch \
-D NUGET_TOKEN=${{ secrets.GITHUB_TOKEN }} \
-D MACOS_CODE_SIGN_IDENTITY="Apple Development" \
-D CMAKE_CXX_VISIBILITY_PRESET=hidden \
-D CMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.deployment-target }} \
-D WITH_CCACHE=ON
- name: ๐ŸŒ‹ Build
run: |
# https://www.reddit.com/r/MacOS/comments/f37ybt/osascript_cant_open_default_scripting_component/?utm_medium=android_app&utm_source=share
sudo rm -rf /Library/Audio/Plug-Ins/Components
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --config ${{ env.BUILD_TYPE }}
- name: ๐Ÿงซ Test
env:
PROJ_LIB: ${{ env.CMAKE_BUILD_DIR }}/vcpkg_installed/${{ matrix.triplet }}/share/proj
QFIELD_SYSTEM_SHARED_DATA_PATH: ${{ env.CMAKE_BUILD_DIR }}/vcpkg_installed/${{ matrix.triplet }}/share
run: |
pip install -r "${{ github.workspace }}/test/spix/requirements.txt"
cd "${{ env.CMAKE_BUILD_DIR }}"
ctest --output-on-failure -R smoke -C ${{ env.BUILD_TYPE }}
- name: ๐Ÿ“ฆ Package
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
run: |
echo "Killing XProtect..."; sudo pkill -9 XProtect >/dev/null || true; # see https://github.com/actions/runner-images/issues/7522
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target bundle --config ${{ env.BUILD_TYPE }}
echo "ARTIFACT_PATHNAME=${{ env.CMAKE_BUILD_DIR }}/QField-Installer.dmg" >> $GITHUB_ENV
echo "ARTIFACT_NAME=qfield-${{ env.CI_PACKAGE_FILE_SUFFIX }}-${{ matrix.triplet }}.dmg" >> $GITHUB_ENV
- name: ๐Ÿ“ฆ Upload package
uses: actions/upload-artifact@v4
with:
name: "QField-dev-${{ matrix.triplet }}-experimental-qt6"
path: ${{ env.CMAKE_BUILD_DIR }}/QField-Installer.dmg
- name: ๐Ÿ“Š Upload test report
if: always()
uses: actions/upload-artifact@v4
with:
name: "test-report-${{ matrix.triplet }}-${{ env.BUILD_TYPE }}"
path: "${{ env.CMAKE_BUILD_DIR }}/report"
- name: ๐Ÿš€ Upload release asset
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') && env.ARTIFACT_NAME != null
uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ env.ARTIFACT_PATHNAME }}
asset_name: ${{ env.ARTIFACT_NAME }}
overwrite: true
- name: ๐Ÿ“‘ Upload logs
uses: actions/upload-artifact@v4
if: failure()
with:
name: logs-${{ matrix.triplet }}
path: |
${{ env.CMAKE_BUILD_DIR }}/**/*.log
- name: ๐Ÿ“ฎ Upload debug symbols
if: ${{ env.SENTRY_AUTH_TOKEN != '' }}
# if: release or labeled PR
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG_SLUG: opengisch
SENTRY_PROJECT_SLUG: qfield
run: |
bundle exec fastlane run sentry_debug_files_upload path:${{ env.CMAKE_BUILD_DIR }}