mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-04 21:39:52 +08:00
WIP: Introduce GitHub actions test with CMake (#1167)
* CPack: Improve packaging script - Packaging uses linuxdeploy. - Drop template files and include it inside CMake script. - Support better packaging on Windows and MSVC2017. - Add comments about supported CMake minimum versions. - Improve Mac OSX packaging script. Signed-off-by: Hiroshi Miura <miurahr@linux.com> * Introduce Github Actions workflow to test cmake buid - Multi-platform build test - Split jobs against each platforms - Add build type for windows - Fix macdeployfixqt path
This commit is contained in:
parent
cb41c64aeb
commit
a7450bc32d
236
.github/workflows/test-cmake-build.yml
vendored
Normal file
236
.github/workflows/test-cmake-build.yml
vendored
Normal file
@ -0,0 +1,236 @@
|
||||
name: Build and Run tests
|
||||
|
||||
on: [push]
|
||||
|
||||
env:
|
||||
BUILD_TYPE: Release
|
||||
CMAKE_VER: 3.16.2
|
||||
|
||||
jobs:
|
||||
build_linux:
|
||||
name: Build and package on Ubuntu
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 3600
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Init submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Install a fresh CMake
|
||||
run: |
|
||||
wget --no-verbose https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-Linux-x86_64.sh
|
||||
chmod +x cmake-${CMAKE_VER}-Linux-x86_64.sh
|
||||
mkdir ${{runner.workspace}}/cmake
|
||||
sudo ./cmake-${CMAKE_VER}-Linux-x86_64.sh --skip-license --prefix=${{runner.workspace}}/cmake
|
||||
sudo rm -f /usr/local/bin/cmake /usr/local/bin/cpack
|
||||
sudo ln -s ${{runner.workspace}}/cmake/bin/cmake /usr/local/bin/cmake
|
||||
sudo ln -s ${{runner.workspace}}/cmake/bin/cpack /usr/local/bin/cpack
|
||||
|
||||
- name: Install linuxdeploy
|
||||
uses: miurahr/install-linuxdeploy-action@v1.2.0
|
||||
with:
|
||||
plugins: qt appimage
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get update
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libfcitx-qt5-dev
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.9.9
|
||||
target: desktop
|
||||
modules: qtwebchannel qtwebengine qtsvg qtlocation qttools qttranslations
|
||||
|
||||
- name: Create Build Directory
|
||||
shell: bash
|
||||
run: mkdir build
|
||||
working-directory: ${{runner.workspace}}
|
||||
|
||||
# install-qt-action exports Qt5_Dir environment variable
|
||||
- name: Configure the Project
|
||||
shell: bash
|
||||
run: cmake -DQt5_DIR=${Qt5_Dir}/lib/cmake/Qt5/ ${GITHUB_WORKSPACE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Build the Project
|
||||
run: cmake --build . --target bundle
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Collect artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts
|
||||
mv *.bz2 *.xz *.deb *.rpm *.AppImage artifacts || /bin/true
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: linux packages
|
||||
path: ${{runner.workspace}}/build/artifacts
|
||||
|
||||
build_macos:
|
||||
name: Build and package on MacOS X
|
||||
runs-on: macos-latest
|
||||
timeout-minutes: 3600
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Init submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Install a fresh CMake
|
||||
run: |
|
||||
wget --no-verbose https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-Darwin-x86_64.tar.gz
|
||||
tar xzf cmake-${CMAKE_VER}-Darwin-x86_64.tar.gz
|
||||
sudo rm -f /usr/local/bin/cmake /usr/local/bin/cpack
|
||||
sudo ln -s ${{runner.workspace}}/cmake-${CMAKE_VER}-Darwin-x86_64/CMake.app/Contents/bin/cmake /usr/local/bin/cmake
|
||||
sudo ln -s ${{runner.workspace}}/cmake-${CMAKE_VER}-Darwin-x86_64/CMake.app/Contents/bin/cpack /usr/local/bin/cpack
|
||||
working-directory: ${{runner.workspace}}
|
||||
|
||||
- name: Install macdeployqtFix
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: aurelien-rainone/macdeployqtfix
|
||||
path: macdeployqtfix
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.9.9
|
||||
target: desktop
|
||||
modules: qtwebchannel qtwebengine qtsvg qtlocation qttools qttranslations
|
||||
|
||||
- name: Create Build Directory
|
||||
run: mkdir build
|
||||
working-directory: ${{runner.workspace}}
|
||||
|
||||
# install-qt-action exports Qt5_Dir environment variable
|
||||
- name: Configure the Project
|
||||
run: cmake -DQt5_DIR=${Qt5_Dir}/lib/cmake/Qt5/ -DMACDEPLOYQTFIX_EXECUTABLE=${GITHUB_WORKSPACE}/macdeployqtfix/macdeployqtfix.py ${GITHUB_WORKSPACE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Build the Project
|
||||
run: cmake --build . --target bundle
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Collect artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts
|
||||
mv ./_CPack_Packages/Darwin/External/vnote-2.8.2-Darwin/Applications/VNote.dmg artifacts || (exit 0)
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: mac osx packages
|
||||
path: ${{runner.workspace}}/build/artifacts
|
||||
|
||||
build_win64:
|
||||
name: Build and package on Windows(64bit)
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 3600
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Init submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.9.9
|
||||
target: desktop
|
||||
arch: win64_msvc2017_64
|
||||
modules: qtwebchannel qtwebengine qtsvg qtlocation qttools qttranslations
|
||||
|
||||
- name: Create Build Directory
|
||||
shell: bash
|
||||
run: mkdir build
|
||||
working-directory: ${{runner.workspace}}
|
||||
|
||||
# install-qt-action exports Qt5_Dir environment variable
|
||||
- name: Configure the Project
|
||||
shell: bash
|
||||
run: cmake -G "Visual Studio 16 2019" -A x64 -DQt5_DIR=${Qt5_Dir}/lib/cmake/Qt5/ ${GITHUB_WORKSPACE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Build the Project(Windows)
|
||||
if: runner.os == 'Windows'
|
||||
run: cmake --build . --target bundle --config ${env:BUILD_TYPE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Collect artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts
|
||||
mv *.zip *.exe *.nupkg artifacts || (exit 0)
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: windows packages
|
||||
path: "${{runner.workspace}}\\build\\artifacts"
|
||||
|
||||
build_win32:
|
||||
name: Build and package on Windows(32bit)
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 3600
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Init submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
# Qt 5.9 only support msvc 2015 for win32 but gh-a run on msvc2019
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.9.9
|
||||
target: desktop
|
||||
arch: win32_msvc2015
|
||||
modules: qtwebchannel qtwebengine qtsvg qtlocation qttools qttranslations
|
||||
|
||||
- name: Create Build Directory
|
||||
shell: bash
|
||||
run: mkdir build
|
||||
working-directory: ${{runner.workspace}}
|
||||
|
||||
# install-qt-action exports Qt5_Dir environment variable
|
||||
- name: Configure the Project
|
||||
shell: bash
|
||||
run: cmake -G "Visual Studio 16 2019" -A Win32 -DQt5_DIR=${Qt5_Dir}/lib/cmake/Qt5/ ${GITHUB_WORKSPACE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Build the Project(Windows)
|
||||
if: runner.os == 'Windows'
|
||||
run: cmake --build . --target bundle --config ${env:BUILD_TYPE}
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- name: Collect artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p artifacts
|
||||
mv *.zip *.exe *.nupkg artifacts || (exit 0)
|
||||
working-directory: ${{runner.workspace}}/build
|
||||
|
||||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: win32 packages
|
||||
path: "${{runner.workspace}}\\build\\artifacts"
|
Loading…
x
Reference in New Issue
Block a user