Skip to content

Use fastlane for more ci stability #3644

Use fastlane for more ci stability

Use fastlane for more ci stability #3644

Workflow file for this run

---
name: πŸͺŸ Windows
on:
push:
branches:
- master
- release-**
pull_request:
release:
types: ['published']
jobs:
build:
name: build (windows)
runs-on: windows-2022
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
- name: 🧽 Developer Command Prompt for Microsoft Visual C++
uses: ilammy/msvc-dev-cmd@v1
- name: ccache
uses: hendrikmuhs/[email protected]
with:
key: ccache-windows
variant: sccache
max-size: 50M
- 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
# TODO: Enable spix when it supports Qt 6.5
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 WITH_VCPKG=ON \
-D WITH_SPIX=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=OFF \
-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/tools/pkgconf/pkgconf.exe \
-D WITH_BLUETOOTH=OFF `# Not yet properly tested/supported and we have a conflict of double defined symbol in QtBluetooth/QtMultimedia` \
-D VCPKG_INSTALL_OPTIONS="--x-buildtrees-root=C:/src" \
-D WITH_CCACHE=ON \
-D CCACHE_PROGRAM="C:/Users/runneradmin/.cargo/bin/sccache.exe" \
${EXTRA_CMAKE_ARGS}
- name: πŸ“‘ Upload dep build logs
uses: actions/upload-artifact@v3
if: failure()
with:
name: build-logs-x64-windows-static
path: |
C:/src/**/*.log
- 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 "smoke_test"
- name: 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
- name: πŸ“‘ Upload package logs
uses: actions/upload-artifact@v3
if: failure()
with:
name: package-logs-x64-windows-static
path: ${{ env.CMAKE_BUILD_DIR }}/_CPack_Packages/**/*.log
- name: πŸ“¦ Upload package
if: ${{ env.ARTIFACT_NAME != null }}
uses: actions/upload-artifact@v3
with:
name: "QField-dev-x64-windows-static-${{ env.BUILD_TYPE }}"
path: ${{ env.ARTIFACT_PATHNAME }}
- name: πŸ“Š Upload test report
uses: actions/upload-artifact@v3
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: Upload debug symbols
shell: bash
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/v') && env.ARTIFACT_NAME != null
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
export INSTALL_DIR=$(pwd)
curl -sL https://sentry.io/get-cli/ | bash
./sentry-cli upload-dif -o opengisch -p qfield ${{ env.CMAKE_BUILD_DIR }}