FreeKill/.github/workflows/build-windows.yml
2023-05-20 18:15:18 +08:00

119 lines
3.1 KiB
YAML

name: Build For Windows 10+
on:
workflow_dispatch:
push:
tags:
- '*'
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout Git Repo
uses: actions/checkout@v3
with:
submodules: true
- name: Install swig, winflexbison3
uses: crazy-max/ghaction-chocolatey@v1
with:
args: install winflexbison3 swig -y
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
aqtversion: '==3.1.*'
py7zrversion: '>=0.20.2'
version: '6.4.2'
host: 'windows'
target: 'desktop'
arch: 'win64_mingw'
modules: 'qtmultimedia qt5compat qtshadertools'
tools: 'tools_openssl_x64'
- name: Disable PCH
shell: bash
run: |
cd src
find -name "*.cpp" -exec sed -i '1i #include "pch.h"' "{}" \;
find -name "*.h" -exec sed -i '1i #include "pch.h"' "{}" \;
sed -i '1d' pch.h
sed -i '/pch.h/d' CMakeLists.txt
- name: Configure CMake Project
working-directory: ${{github.workspace}}
env:
CMAKE_PREFIX_PATH: ${{env.Qt6_Dir}}
OPENSSL_ROOT_DIR: ${{github.workspace}}/../Qt/tools/OpenSSL/Win_x64
run: |
cmake -DCMAKE_BUILD_TYPE=MinSizeRel -G "MinGW Makefiles" -B ${{github.workspace}}/build
- name: Build project
working-directory: ${{github.workspace}}/build
run: mingw32-make -j2
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
# timeout-minutes: 15
- name: Compress portable program
working-directory: ${{github.workspace}}
shell: bash
run: |
mkdir FreeKill-release
cp build/FreeKill.exe FreeKill-release
cp -r Fk FreeKill-release
cd FreeKill-release
windeployqt FreeKill.exe
cp -r ../.git .
git restore .
rm -rf .git* android doc lib lang translations src
cd ..
cp lib/win/* FreeKill-release
cp build/zh_CN.qm FreeKill-release
cp ../Qt/6.4.2/mingw_64/bin/li*.dll FreeKill-release
cp '/c/Program Files/OpenSSL/bin/libcrypto-1_1-x64.dll' FreeKill-release
7z a -t7z FreeKill-release.7z FreeKill-release -r -mx=9 -m0=LZMA2 -ms=10m -mf=on -mhc=on -mmt=on
- name: Upload Release
uses: actions/upload-artifact@v3
with:
name: zip
path: FreeKill-release.7z
release:
name: Release
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Git Repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get Previous tag
id: previoustag
uses: WyriHaximus/github-action-get-previous-tag@v1
with:
fallback: 0.0.1
- name: Download APK from build
uses: actions/download-artifact@v3
with:
name: zip
path: zip
- name: Rename 7z
run: |
mv zip/FreeKill-release.7z zip/FreeKill-${{ steps.previoustag.outputs.tag }}.7z
- name: Upload Release APK
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.MY_TOKEN }}
tag_name: ${{ steps.previoustag.outputs.tag }}
files: zip/FreeKill-${{ steps.previoustag.outputs.tag }}.7z