Skip to content

Update to latest QGIS release (3.40.2) and up vcpkg revision to prepare for Qt 6.8.2 #6581

Update to latest QGIS release (3.40.2) and up vcpkg revision to prepare for Qt 6.8.2

Update to latest QGIS release (3.40.2) and up vcpkg revision to prepare for Qt 6.8.2 #6581

Workflow file for this run

---
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.1
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
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v')
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