Skip to content

[pre-release] 预发布 v2024.10.1 #117

[pre-release] 预发布 v2024.10.1

[pre-release] 预发布 v2024.10.1 #117

name: Kerbal Build Test
on:
push:
branches:
- main
- main.fwd
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
compiler: g++
cxx_standard: 98
- os: ubuntu-latest
compiler: g++
cxx_standard: 11
- os: ubuntu-latest
compiler: g++
cxx_standard: 14
- os: ubuntu-latest
compiler: g++
cxx_standard: 17
- os: ubuntu-latest
compiler: g++
cxx_standard: 20
- os: ubuntu-latest
compiler: clang++
cxx_standard: 98
- os: ubuntu-latest
compiler: clang++
cxx_standard: 11
- os: ubuntu-latest
compiler: clang++
cxx_standard: 14
- os: ubuntu-latest
compiler: clang++
cxx_standard: 17
- os: ubuntu-latest
compiler: clang++
cxx_standard: 20
- os: windows-latest
compiler: msvc
generator: "Visual Studio 17 2022"
cxx_standard: 14
- os: windows-latest
compiler: msvc
generator: "Visual Studio 17 2022"
cxx_standard: 17
- os: windows-latest
compiler: msvc
generator: "Visual Studio 17 2022"
cxx_standard: 20
- os: windows-2019
compiler: msvc
generator: "Visual Studio 16 2019"
cxx_standard: 14
- os: windows-2019
compiler: msvc
generator: "Visual Studio 16 2019"
cxx_standard: 17
- os: windows-2019
compiler: msvc
generator: "Visual Studio 16 2019"
cxx_standard: 20
- os: macos-latest
compiler: clang++
cxx_standard: 98
- os: macos-latest
compiler: clang++
cxx_standard: 11
- os: macos-latest
compiler: clang++
cxx_standard: 14
- os: macos-latest
compiler: clang++
cxx_standard: 17
- os: macos-latest
compiler: clang++
cxx_standard: 20
runs-on: ${{matrix.os}}
continue-on-error: false
env:
BUILD_TYPE: Release
steps:
- name: Show CMake Version
run: cmake --version
- name: Show Generators Support
run: cmake --help
- name: Restore Source Directory From Cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/Kerbal
key: KerbalBuildTest_source_cache-${{github.run_id}}
restore-keys: KerbalBuildTest_source_cache
- name: Restore Build Directory From Cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/KerbalTest-build
key: KerbalBuildTest_build_cache-${{matrix.os}}-${{matrix.compiler}}-${{matrix.cxx_standard}}-${{github.run_id}}
restore-keys: KerbalBuildTest_build_cache-${{matrix.os}}-${{matrix.compiler}}-${{matrix.cxx_standard}}
- name: Clone Kerbal
uses: actions/checkout@v4
with:
repository: WentsingNee/Kerbal
path: Kerbal
submodules: 'true'
- name: Install Kerbal
run: >
cmake
-S ${{github.workspace}}/Kerbal
-B ${{github.workspace}}/Kerbal-build
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/Kerbal-install
cmake --build ${{github.workspace}}/Kerbal-build --target install
- name: Configure KerbalTest
if: matrix.compiler != 'msvc'
run: >
cmake
-S ${{github.workspace}}/Kerbal/test
-B ${{github.workspace}}/KerbalTest-build
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
-DCMAKE_CXX_COMPILER=${{matrix.compiler}}
-DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}}
-DCMAKE_PREFIX_PATH=${{github.workspace}}/Kerbal-install
-DKTEST_USE_LIBCXX=${{matrix.stdlib}}
-DKTEST_ENABLE_PRECOMPILE_HEADER=OFF
-DKTEST_CI="github"
- name: Configure KerbalTest (MSVC)
if: matrix.compiler == 'msvc'
run: >
cmake
-S ${{github.workspace}}/Kerbal/test
-B ${{github.workspace}}/KerbalTest-build
-G "${{matrix.generator}}"
-DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}}
-DCMAKE_PREFIX_PATH=${{github.workspace}}/Kerbal-install
-DKTEST_ENABLE_PRECOMPILE_HEADER=OFF
-DKTEST_CI="github"
- name: Show Environment Kerbal Detected
run: >
cmake --build ${{github.workspace}}/KerbalTest-build --config ${{env.BUILD_TYPE}} --target
utest.config.architecture
utest.config.compiler_id
utest.config.compiler_version
utest.config.cxx_stdlib
utest.config.language_standard
utest.config.sizeof_types
utest.config.system
cmake --build ${{github.workspace}}/KerbalTest-build --config ${{env.BUILD_TYPE}} --target
run_utest.config.architecture
run_utest.config.compiler_id
run_utest.config.compiler_version
run_utest.config.cxx_stdlib
run_utest.config.language_standard
run_utest.config.sizeof_types
run_utest.config.system
- name: Build
run: cmake --build ${{github.workspace}}/KerbalTest-build --config ${{env.BUILD_TYPE}}
- name: Run Unit Test
run: cmake --build ${{github.workspace}}/KerbalTest-build --config ${{env.BUILD_TYPE}} --target runm_utest
pack:
continue-on-error: false
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
cpack_generators: "DEB;STGZ;TGZ;ZIP;"
platform: "ubuntu"
- os: windows-latest
cpack_generators: "NSIS;WIX;ZIP;"
platform: "windows"
- os: macos-latest
cpack_generators: "DragNDrop;ZIP;"
platform: "macos"
runs-on: ${{matrix.os}}
needs: build
steps:
- name: Show CPack Generators Support
run: cpack --help
- name: Clone Kerbal
uses: actions/checkout@v4
with:
repository: WentsingNee/Kerbal
path: Kerbal
submodules: 'true'
- name: CPack Kerbal
run: >
cmake
-S ${{github.workspace}}/Kerbal/
-B ${{github.workspace}}/Kerbal-pack/
-DCMAKE_BUILD_TYPE=Release
-DCPACK_BUNDLE_NAME="Kerbal"
-DKERBAL_ENABLE_MYPACK_NUGET=ON
cd ${{github.workspace}}/Kerbal-pack/
cpack -G "${{matrix.cpack_generators}}"
- name: CPack Kerbal (MyNuGet)
if: matrix.os == 'windows-latest'
run: >
cmake --build ${{github.workspace}}/Kerbal-pack/ --target mypack_nuget
- name: Upload Package
uses: actions/upload-artifact@v4
with:
name: Kerbal-${{github.sha}}-${{matrix.platform}}
path: ${{github.workspace}}/Kerbal-pack/packages
update-doc:
if: github.ref_name == 'main'
continue-on-error: false
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
runs-on: ${{matrix.os}}
needs: build
steps:
- name: Clone Kerbal
uses: actions/checkout@v4
with:
repository: WentsingNee/Kerbal
path: Kerbal
- name: Create Working Directory
run: >
mkdir -p ${{github.workspace}}/KerbalDoxygenDoc/
- name: Run Doxygen
uses: mattnotmitt/[email protected]
with:
working-directory: Kerbal/doxygen/
doxyfile-path: Doxyfile
- name: Commit Doxygen Outcomes
run: >
cd ${{github.workspace}}/KerbalDoxygenDoc/
ln -s ./html ./docs
git config --global init.defaultBranch main
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git init
git add docs html
git commit -m "Kerbal Doc Generated by Doxygen"
- name: Push Doxygen Outcomes
uses: ad-m/[email protected]
with:
directory: ${{github.workspace}}/KerbalDoxygenDoc/
repository: WentsingNee/KerbalDoxygenDoc
branch: main
force: true
github_token: ${{secrets.KERBAL_UPLOAD_DOXYGEN_DOC_TOKEN}}