Skip to content

[Backport release-4_2] Reduce long-press start delay on numeric stepper +/- buttons #11731

[Backport release-4_2] Reduce long-press start delay on numeric stepper +/- buttons

[Backport release-4_2] Reduce long-press start delay on numeric stepper +/- buttons #11731

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
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
jobs:
build:
strategy:
matrix:
include:
- os: windows-2022
triplet: x64-windows-static
arch: amd64
platform_arch: x64
- os: windows-11-arm
triplet: arm64-windows-static
arch: arm64
platform_arch: arm64
name: build (windows)
runs-on: ${{ matrix.os }}
outputs:
artifact_name_arm64: ${{ steps.package.outputs.artifact_name_arm64 }}
artifact_name_x64: ${{ steps.package.outputs.artifact_name_x64 }}
steps:
- name: ๐Ÿฃ Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Install NSIS
uses: negrutiu/nsis-install@v3
with:
version: 'v3.10.7422.0'
- name: ๐Ÿงน Cleanup space
shell: bash
run: |
echo "Free space before cleanup:"
df -h /c
# Remove Android SDKs/NDKs
rm -rf /c/Android
echo "Free space after cleanup:"
df -h /c
- 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: ๐Ÿงฝ Developer Command Prompt for Microsoft Visual C++
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
# See https://github.com/actions/runner-images/issues/9398
# toolset: 14.39
- name: ๐Ÿ”จ Prepare build env
shell: bash
if: matrix.platform_arch == 'x64'
run: |
EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -D SENTRY_DSN=${{ secrets.SENTRY_DSN }}"
echo "EXTRA_CMAKE_ARGS=${EXTRA_CMAKE_ARGS}" >> $GITHUB_ENV
- name: ๐Ÿ”จ Uninstall system cmake
if: matrix.os == 'windows-2022'
shell: bash
run: |
choco uninstall cmake.install
- name: ๐Ÿฉ Install CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: 3.31.6
- 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/${{ matrix.platform_arch }}/bin/clang-cl.exe" \
-D CMAKE_CXX_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/${{ matrix.platform_arch }}/bin/clang-cl.exe" \
-D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-D VCPKG_TARGET_TRIPLET="${{ matrix.triplet }}" \
-D VCPKG_HOST_TRIPLET="${{ matrix.triplet }}" \
-D WITH_VCPKG=ON \
-D WITH_SPIX=ON \
-D WITH_UNITTESTS=OFF \
-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 CMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded\$<\$<CONFIG:Debug>:Debug>" \
-D PKG_CONFIG_EXECUTABLE=${CMAKE_BUILD_DIR}/vcpkg_installed/${{ matrix.triplet }}/tools/pkgconf/pkgconf.exe \
-D WITH_BLUETOOTH=ON \
-D VCPKG_INSTALL_OPTIONS="--x-buildtrees-root=C:/src;--x-abi-tools-use-exact-versions;--clean-after-build" \
-D CMAKE_COMPILE_WARNING_AS_ERROR=ON \
-D SENTRY_ENV="${APP_ENV}" \
-D CMAKE_WIN32_EXECUTABLE=ON \
-D PACKAGE_ZIP=ON \
${EXTRA_CMAKE_ARGS}
- name: ๐Ÿ“‘ Upload dep build logs
uses: actions/upload-artifact@v7
if: failure()
with:
name: build-logs-${{ matrix.triplet }}
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
if: matrix.platform_arch == 'x64'
env:
PROJ_LIB: ${{ env.CMAKE_BUILD_DIR }}/vcpkg_installed/${{ matrix.triplet }}/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
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
INSTALLER_SUFFIX="zip"
else
INSTALLER_SUFFIX="exe"
fi
ARTIFACT_PATHNAME=$(ls ${{ env.CMAKE_BUILD_DIR }}/QField-*-win64.${INSTALLER_SUFFIX} | head -n 1)
mv "$ARTIFACT_PATHNAME" "${{ env.CMAKE_BUILD_DIR }}/QField-${{ matrix.platform_arch }}.${INSTALLER_SUFFIX}"
ARTIFACT_PATHNAME="${{ env.CMAKE_BUILD_DIR }}/QField-${{ matrix.platform_arch }}.${INSTALLER_SUFFIX}"
ARTIFACT_NAME=$(basename $ARTIFACT_PATHNAME)
echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV
echo "ARTIFACT_NAME=qfield-${{ env.CI_PACKAGE_FILE_SUFFIX }}-windows-${{ matrix.platform_arch }}.${INSTALLER_SUFFIX}" >> $GITHUB_ENV
echo "artifact_name_${{ matrix.platform_arch }}=${ARTIFACT_NAME}" >> "$GITHUB_OUTPUT"
- name: ๐Ÿ“‘ Upload logs
uses: actions/upload-artifact@v7
if: failure()
with:
name: package-logs-${{ matrix.triplet }}
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@v2.0.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/
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
cache-dependencies: false
- name: ๐Ÿ“ฆ Upload artifacts
if: ${{ env.ARTIFACT_NAME != null }}
uses: actions/upload-artifact@v7
id: artifact-windows
with:
name: ${{ env.ARTIFACT_NAME }}
path: ${{ env.ARTIFACT_PATHNAME }}
- name: ๐Ÿ“Š Upload test report
if: always()
uses: actions/upload-artifact@v7
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.10.1
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.310.0
with:
ruby-version: '3.4' # 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: ${{ env.SENTRY_AUTH_TOKEN != '' }}
env:
SENTRY_ORG_SLUG: opengisch
SENTRY_PROJECT_SLUG: qfield
run: |
bundle exec fastlane run sentry_debug_files_upload path:${{ env.CMAKE_BUILD_DIR }}/output/bin/qfield.pdb
comment_pr:
name: comment (pr)
runs-on: ubuntu-24.04
needs: build
if: github.event_name == 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Vars
id: vars
run: |
./scripts/ci/env_gh.sh
- name: Schedule download comment
uses: ./.github/actions/post_sticky_comment
with:
marker: windows
body: |
### ๐ŸชŸ Windows builds
Download a [Windows build of this PR for testing](https://nightly.link/opengisch/QField/actions/runs/${{ github.run_id }}/qfield-${{ env.CI_PACKAGE_FILE_SUFFIX }}-windows-x64.zip) and for [arm64](https://nightly.link/opengisch/QField/actions/runs/${{ github.run_id }}/qfield-${{ env.CI_PACKAGE_FILE_SUFFIX }}-windows-arm64.zip).
*(Built from commit ${{ github.event.pull_request.head.sha }})*
pr: ${{ github.event.number }}
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_x64 }}","languages":["en"],"architectures":["X64"],"isSilentInstall":false,"installerParameters":"/S","packageType":"exe","genericDocUrl":"https://nsis.sourceforge.io/Docs/AppendixD.html#errorlevels"}, {"packageUrl":"https://sos-ch-dk-2.exo.io/qfieldapks/releases/files/${{ needs.build.outputs.artifact_name_arm64 }}","languages":["en"],"architectures":["Arm64"],"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