name: Packaging(Windows) on: push: branches: - master - fix* paths-ignore: - 'README.md' - 'LICENSE' pull_request: paths-ignore: - 'README.md' - 'LICENSE' workflow_dispatch: env: PRODUCT: flameshot jobs: windows-pack: name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} runs-on: windows-2019 env: VCINSTALLDIR: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/ Qt5_DIR: ${{ github.workspace }}\build\Qt\${{ matrix.qt_ver }}\${{ matrix.config.qt_arch_install }}\lib\cmake\Qt5\ QTDIR: ${{ github.workspace }}\build\Qt\${{ matrix.qt_ver }}\${{ matrix.config.qt_arch_install }}\ # 2022.06.15.1 VCPKG_VERSION: cef0b3ec767df6e83806899fe9525f6cf8d7bc91 VCPKG_PACKAGES: openssl-windows OPENSSL_ROOT_DIR: ${{ github.workspace }}\vcpkg\installed\${{ matrix.config.vcpkg_triplet }}\ strategy: fail-fast: false matrix: qt_ver: [5.15.2] qt_target: [desktop] config: - { arch: x86, generator: "-G'Visual Studio 16 2019' -A Win32", vcpkg_triplet: x86-windows, qt_arch: win32_msvc2019, qt_arch_install: msvc2019, pak_arch: win32 } - { arch: x64, generator: "-G'Visual Studio 16 2019' -A x64", vcpkg_triplet: x64-windows, qt_arch: win64_msvc2019_64, qt_arch_install: msvc2019_64, pak_arch: win64 } type: [portable, installer] steps: - name: Checkout Source code if: github.event_name == 'push' uses: actions/checkout@v4 with: fetch-depth: 0 # ref: master - name: Checkout Source code if: github.event_name == 'pull_request' uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - name: Set env & Print flameshot version shell: bash run: | last_committed_tag=$(git tag -l --sort=-v:refname | head -1) git_revno=$(git rev-list $(git describe --tags --abbrev=0)..HEAD --count) git_hash=$(git rev-parse --short HEAD) echo "=======FLAMESHOT VERSION========" echo ${last_committed_tag:1} echo "Details: ${last_committed_tag}+git${git_revno}.${git_hash}" echo "================================" # This will allow to build pre-preleases without git tag # echo "VERSION=${last_committed_tag:1}" >> $GITHUB_ENV echo "VERSION=$(cat CMakeLists.txt |grep 'set.*(.*FLAMESHOT_VERSION' | sed 's/[^0-9.]*//' |sed 's/)//g')" >> $GITHUB_ENV - name: Restore from cache and run vcpkg uses: lukka/run-vcpkg@v11 with: vcpkgArguments: ${{env.VCPKG_PACKAGES}} vcpkgDirectory: '${{ github.workspace }}\vcpkg' appendedCacheKey: ${{ matrix.config.vcpkg_triplet }} vcpkgGitCommitId: ${{ env.VCPKG_VERSION }} vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }} - name: Cache Qt id: cache-qt uses: actions/cache@v4 with: path: ./build/Qt/${{ matrix.qt_ver }}/${{ matrix.config.qt_arch_install }} key: ${{ runner.os }}-QtCache/${{ matrix.qt_ver }}/${{ matrix.config.qt_arch }} - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_ver }} target: ${{ matrix.qt_target }} arch: ${{ matrix.config.qt_arch }} dir: '${{ github.workspace }}/build/' modules: 'qtscript' cached: ${{ steps.cache-qt.outputs.cache-hit }} - name: Configure working-directory: build shell: pwsh run: | cmake .. ${{matrix.config.generator}} ` -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" ` -DENABLE_OPENSSL=ON ` -DCMAKE_BUILD_TYPE=Release ` -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} - name: Compile working-directory: build shell: pwsh run: cmake --build . --config Release - name: CPack working-directory: build shell: pwsh run: | # Chocolately made their own package called cpack and its first in the path. This is a hack since we are only using cmake's cpack, doesn't seem to be required after a CI update #Remove-Item C:\ProgramData\Chocolatey\bin\cpack.exe If ($env:TYPE -eq "installer") { cpack -G WIX -B "$env:GITHUB_WORKSPACE\build\Package" } ElseIf($env:TYPE -eq "portable") { cpack -G ZIP -B "$env:GITHUB_WORKSPACE\build\Package" } env: TYPE: ${{matrix.type}} - name: Package Clean shell: pwsh run: | # Remove-Item $env:GITHUB_WORKSPACE\build\Package\_CPack_Packages -Recurse New-Item -Path $env:GITHUB_WORKSPACE\build\Package\installer -ItemType Directory New-Item -Path $env:GITHUB_WORKSPACE\build\Package\portable -ItemType Directory - name: Package Prepare (installer) if: matrix.type == 'installer' shell: pwsh run: | Move-Item -Path $env:GITHUB_WORKSPACE/build/Package/Flameshot-*-${{ matrix.config.pak_arch }}.msi -Destination $env:GITHUB_WORKSPACE/build/Package/installer/Flameshot-$env:VERSION-${{ matrix.config.pak_arch }}.msi - name: Package Prepare (portable) if: matrix.type == 'portable' shell: pwsh run: | Move-Item -Path $env:GITHUB_WORKSPACE/build/Package/flameshot-*-${{ matrix.config.pak_arch }}.zip -Destination $env:GITHUB_WORKSPACE/build/Package/portable/flameshot-$env:VERSION-${{ matrix.config.pak_arch }}.zip - name: SHA256Sum of Windows installer(daily build) if: matrix.type == 'installer' shell: bash run: | sha256sum $GITHUB_WORKSPACE/build/Package/installer/Flameshot-${VERSION}-${{ matrix.config.pak_arch }}.msi sha256sum $GITHUB_WORKSPACE/build/Package/installer/Flameshot-${VERSION}-${{ matrix.config.pak_arch }}.msi > $GITHUB_WORKSPACE/build/Package/installer/Flameshot-${VERSION}-${{ matrix.config.pak_arch }}.msi.sha256sum python -m pip install -U -q requests echo "============Windows installer sha256sum download link============" echo $(python $GITHUB_WORKSPACE/scripts/upload_services/transferwee.py upload $GITHUB_WORKSPACE/build/Package/installer/Flameshot-${VERSION}-${{ matrix.config.pak_arch }}.msi.sha256sum) echo "=======no operation for you can see link in the log console=====" - name: SHA256Sum of Windows portable(daily build) if: matrix.type == 'portable' shell: bash run: | sha256sum $GITHUB_WORKSPACE/build/Package/portable/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip sha256sum $GITHUB_WORKSPACE/build/Package/portable/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip > $GITHUB_WORKSPACE/build/Package/portable/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip.sha256sum python -m pip install -U -q requests echo "===========Windows portable sha256sum download link============" echo $(python $GITHUB_WORKSPACE/scripts/upload_services/transferwee.py upload $GITHUB_WORKSPACE/build/Package/portable/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip.sha256sum) echo "=====no operation for you can see link in the log console=====" - name: Upload Windows installer(daily build) if: matrix.type == 'installer' shell: bash run: | python -m pip install -U -q requests echo "================Windows installer download link================" echo $(python $GITHUB_WORKSPACE/scripts/upload_services/transferwee.py upload $GITHUB_WORKSPACE/build/Package/installer/Flameshot-${VERSION}-${{ matrix.config.pak_arch }}.msi) echo "=====no operation for you can see link in the log console=====" - name: Upload Windows portable(daily build) if: matrix.type == 'portable' shell: bash run: | python -m pip install -U -q requests echo "=================Windows portable download link================" echo $(python $GITHUB_WORKSPACE/scripts/upload_services/transferwee.py upload $GITHUB_WORKSPACE/build/Package/portable/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip) echo "=====no operation for you can see link in the log console=====" - name: Artifact Upload uses: actions/upload-artifact@v4 with: name: Windows-${{ matrix.config.arch }}-${{ matrix.type }}-artifact path: ${{ github.workspace }}/build/Package/*