Skip to content

Kerbal Build Test

Kerbal Build Test #110

name: Kerbal Build Test
on:
push:
branches:
- main
- main.fwd
- exp/ci-release
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: "NuGet;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"
cd ${{github.workspace}}/Kerbal-pack/
cpack -G "${{matrix.cpack_generators}}"
- name: Upload Package
uses: actions/upload-artifact@v4
with:
name: Kerbal-${{github.sha}}-${{matrix.platform}}
path: ${{github.workspace}}/Kerbal-pack/packages
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{secrets.KERBAL_UPLOAD_DOXYGEN_DOC_TOKEN}} # This token is provided by Actions, you do not need to create your own token
with:
repo: Kerbal
tag_name: v2024.4.1
commitish: ${{env.ref_name}}
release_name: Release ${{github.ref}}
body: |
This is a release committed by GitHub Action
Kerbal branch: env.refname: ${{env.ref_name}}
github.ref: ${{github.ref}}
draft: true
prerelease: true
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.KERBAL_UPLOAD_DOXYGEN_DOC_TOKEN}}
with:
upload_url: ${{steps.create_release.outputs.upload_url}} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: ${{github.workspace}}/Kerbal-pack/packages/2024.4.1/Kerbal-2024.4.1-Linux.deb
asset_name: Kerbal-2024.4.1-Linux.deb
asset_content_type: application/vnd.debian.binary-package
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}}