name: Windows on: [push, pull_request] jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Read variables from repo shell: bash run: cat .github/workflows/env >> $GITHUB_ENV - name: Check app versions run: | python set-version.py git diff --exit-code - name: Set up Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYVER }} - name: Update pip run: python -m pip install --upgrade pip - name: Cache helper id: cache-helper uses: actions/cache@v3 with: path: | build/windows/helper assets/licenses/helper.json key: ${{ runner.os }}-py${{ env.PYVER }}-${{ hashFiles('helper/**') }} - name: Build the Helper if: steps.cache-helper.outputs.cache-hit != 'true' run: | pip install poetry .\build-helper.bat - uses: subosito/flutter-action@v2 with: channel: 'stable' flutter-version: ${{ env.FLUTTER }} - run: flutter config --enable-windows-desktop - run: flutter --version - name: Run lints/tests env: SKIP: ${{ steps.cache-helper.outputs.cache-hit == 'true' && 'mypy,flake8,black,bandit' || ''}} run: | pip install pre-commit pre-commit run --all-files flutter test - name: Build the app run: | $version = python set-version.py | select-object -first 1 flutter build windows --build-name=$version - name: Check generated files run: git diff -I '.*android.*flutter_plugins.*qrscanner_zxing' --exit-code - name: Move .dll files run: | $dest = "build\windows\x64\runner\Release" cp $dest\helper\_internal/MSVCP140.dll $dest\ cp $dest\helper\_internal/VCRUNTIME140.dll $dest\ cp $dest\helper\_internal/VCRUNTIME140_1.dll $dest\ - name: Create an unsigned .msi installer package run: | $env:PATH += ";$env:WIX\bin" $env:SRCDIR = "build\windows\x64\runner\Release\" heat dir .\build\windows\x64\runner\Release\ -out fragment.wxs -gg -scom -srd -sfrag -dr INSTALLDIR -cg ApplicationFiles -var env.SRCDIR candle .\fragment.wxs .\resources\win\yubioath-desktop.wxs -ext WixUtilExtension -arch x64 light fragment.wixobj yubioath-desktop.wixobj -ext WixUIExtension -ext WixUtilExtension -o yubioath-desktop.msi - name: Rename and archive app bundle run: | $arr = $env:GITHUB_REF -split '/' $branch = $arr[2] $dest = "deploy\yubioath-desktop-$branch-windows" mkdir $dest mv build\windows\x64\runner\Release\* $dest\ mv yubioath-desktop.msi deploy mv resources\win\release-win.ps1 deploy mv resources deploy - name: Upload artifact uses: actions/upload-artifact@v4 with: name: yubioath-desktop-windows path: deploy