QML locator filter framework for QField plugin #6219
This file contains 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: ๐ช Windows | |
on: | |
push: | |
branches: | |
- master | |
- release-** | |
pull_request: | |
release: | |
types: ['published'] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: build (windows) | |
runs-on: windows-2022 | |
outputs: | |
artifact_name: ${{ steps.package.outputs.artifact_name }} | |
steps: | |
- name: ๐ฃ Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: ๐พ Prepare vars | |
id: vars | |
shell: bash | |
run: | | |
./scripts/ci/env_gh.sh | |
echo "BUILD_TYPE=Release" >> $GITHUB_ENV | |
echo "CMAKE_BUILD_DIR=C:/builddir" >> $GITHUB_ENV | |
- name: ๐ฉ Install CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: 3.29.0 | |
- name: ๐งฝ Developer Command Prompt for Microsoft Visual C++ | |
uses: ilammy/msvc-dev-cmd@v1 | |
# with: | |
# See https://github.com/actions/runner-images/issues/9398 | |
# toolset: 14.39 | |
- name: ๐จ Prepare build env | |
shell: bash | |
run: | | |
# Hide terminal for release builds | |
if [[ -n "${{ env.CI_TAG }}" ]]; then | |
EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DCMAKE_WIN32_EXECUTABLE=ON" | |
fi | |
echo "EXTRA_CMAKE_ARGS=${EXTRA_CMAKE_ARGS}" >> $GITHUB_ENV | |
- name: ๐ฑ Install dependencies and generate project files | |
shell: bash | |
env: | |
WORKSPACE: ${{ github.workspace }} | |
run: | | |
# Convert paths to bash compatible ones. Thanks to whoever decided to use drive letters and backslashes. | |
CMAKE_BUILD_DIR=$( cygpath "${CMAKE_BUILD_DIR}" ) | |
SOURCE_DIR=$( cygpath "${WORKSPACE}" ) | |
source ./scripts/version_number.sh | |
source ./scripts/ci/generate-version-details.sh | |
cmake -S "${SOURCE_DIR}" \ | |
-G Ninja \ | |
-B "${CMAKE_BUILD_DIR}" \ | |
-D CMAKE_C_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe" \ | |
-D CMAKE_CXX_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe" \ | |
-D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-D VCPKG_TARGET_TRIPLET="x64-windows-static" \ | |
-D VCPKG_HOST_TRIPLET="x64-windows-static" \ | |
-D WITH_VCPKG=ON \ | |
-D WITH_SPIX=ON \ | |
-D WITH_NFC=OFF \ | |
-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 SENTRY_DSN=${{ secrets.SENTRY_DSN }} \ | |
-D SENTRY_ENV="${APP_ENV}" \ | |
-D CMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded\$<\$<CONFIG:Debug>:Debug>" \ | |
-D PKG_CONFIG_EXECUTABLE=${CMAKE_BUILD_DIR}/vcpkg_installed/x64-windows-static/tools/pkgconf/pkgconf.exe \ | |
-D WITH_BLUETOOTH=ON \ | |
-D VCPKG_INSTALL_OPTIONS="--x-buildtrees-root=C:/src" \ | |
-D CMAKE_COMPILE_WARNING_AS_ERROR=ON \ | |
${EXTRA_CMAKE_ARGS} | |
- name: ๐ Upload dep build logs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: build-logs-x64-windows-static | |
path: | | |
C:/src/**/*.log | |
- name: Fix openh264 linking | |
run: | | |
sed -i 's/ openh264\.lib //g' /c/builddir/build.ninja | |
- name: ๐ Build | |
run: | | |
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --config ${{ env.BUILD_TYPE }} | |
- name: ๐งซ Test | |
shell: bash | |
env: | |
PROJ_LIB: ${{ env.CMAKE_BUILD_DIR }}/vcpkg_installed/x64-windows-static/share/proj | |
run: | | |
SOURCE_DIR=$( cygpath "${{ github.workspace }}" ) | |
pip install -r "${SOURCE_DIR}/test/spix/requirements.txt" | |
cd "${{ env.CMAKE_BUILD_DIR }}" | |
ctest --output-on-failure -C ${{ env.BUILD_TYPE }} -E qmltest | |
- name: Package | |
id: package | |
shell: bash | |
run: | | |
cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target bundle --config ${{ env.BUILD_TYPE }} -j1 | |
ARTIFACT_PATHNAME=$(ls ${{ env.CMAKE_BUILD_DIR }}/QField-*-win64.* | head -n 1) | |
ARTIFACT_NAME=$(basename $ARTIFACT_PATHNAME) | |
echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV | |
echo "ARTIFACT_NAME=qfield-${{ env.CI_PACKAGE_FILE_SUFFIX }}-windows-x64.exe" >> $GITHUB_ENV | |
echo "artifact_name=${ARTIFACT_NAME}" >> "$GITHUB_OUTPUT" | |
- name: ๐ Upload logs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: package-logs-x64-windows-static | |
path: | | |
${{ env.CMAKE_BUILD_DIR }}/_CPack_Packages/**/*.log | |
${{ env.CMAKE_BUILD_DIR }}/CMakeCache.txt | |
- name: ๐ญ Sign | |
if: ( github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') ) || github.event_name == 'workflow_dispatch' && env.ARTIFACT_NAME != null | |
uses: azure/trusted-signing-action@v0.5.0 | |
with: | |
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} | |
endpoint: https://weu.codesigning.azure.net/ | |
code-signing-account-name: OPENGISch | |
certificate-profile-name: OPENGISch | |
files-folder: ${{ env.CMAKE_BUILD_DIR }} | |
files-folder-filter: exe,msi | |
file-digest: SHA256 | |
timestamp-rfc3161: http://timestamp.acs.microsoft.com | |
timestamp-digest: SHA256 | |
- name: ๐ฆ Upload package | |
if: ${{ env.ARTIFACT_NAME != null }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "QField-dev-x64-windows-static-${{ env.BUILD_TYPE }}" | |
path: ${{ env.ARTIFACT_PATHNAME }} | |
- name: ๐ Upload test report | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "test-report-x64-windows-static-${{ 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: ๐ 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: ๐บ Upload to S3 | |
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') | |
env: | |
S3_BUCKET: qfieldapks | |
S3_REGION: ch-dk-2 | |
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY}} | |
S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY}} | |
run: | | |
bundle exec fastlane windows upload_s3 exe:${{ env.ARTIFACT_PATHNAME }} | |
- name: ๐ฎ Upload debug symbols | |
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') && env.ARTIFACT_NAME != null | |
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 }} | |
deploy: | |
name: deploy (ms store) | |
runs-on: windows-2022 | |
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') | |
needs: build | |
steps: | |
- name: Configure Store Credentials | |
uses: microsoft/store-submission@v1 | |
with: | |
command: configure | |
type: win32 | |
seller-id: ${{ secrets.MICROSOFT_STORE_SELLER_ID }} | |
product-id: ${{ secrets.MICROSOFT_STORE_PRODUCT_ID }} | |
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} | |
- name: Update Draft Submission | |
uses: microsoft/store-submission@v1 | |
with: | |
command: update | |
# See documentation here https://learn.microsoft.com/en-us/windows/apps/publish/store-submission-api#update-current-draft-submission-metadata-api | |
product-update: '{"packages":[{"packageUrl":"https://sos-ch-dk-2.exo.io/qfieldapks/releases/files/${{ needs.build.outputs.artifact_name }}","languages":["en"],"architectures":["X64"],"isSilentInstall":false,"installerParameters":"/S","packageType":"exe","genericDocUrl":"https://nsis.sourceforge.io/Docs/AppendixD.html#errorlevels"}]}' | |
- name: Publish Submission | |
uses: microsoft/store-submission@v1 | |
with: | |
command: publish |