Skip to content

modernize

modernize #101

Workflow file for this run

name: test
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Windows Latest - MSVC",
os: windows-latest,
}
- {
name: "Ubuntu Latest - GCC",
os: ubuntu-latest,
}
- {
name: "Mac Latest",
os: macos-latest,
}
steps:
- uses: actions/checkout@v4
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config $BUILD_TYPE
- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C $BUILD_TYPE
coverage:
name: coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install lcov
run: git clone https://github.com/linux-test-project/lcov.git && cd lcov && sudo make install
- name: Create Build Environment
run: cmake -E make_directory coverage
- name: Configure CMake
shell: bash
working-directory: coverage
run: cmake -DCOVERAGE=1 $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: coverage
shell: bash
run: cmake --build . --config $BUILD_TYPE
- name: Test
working-directory: coverage
shell: bash
run: ctest -C $BUILD_TYPE
- name: Coverage
working-directory: coverage
shell: bash
run: lcov -c -d . --include **/include/lrdb/** -o ./lcov.info
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
emscripten:
name: build for node.js
runs-on: ubuntu-latest
steps:
- uses: mymindstorm/setup-emsdk@v11
- uses: actions/checkout@v4
- run: cmake -E make_directory build
- run: emcmake cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Release
working-directory: build
- run: cmake --build . && cmake --build . --target install
working-directory: build
- name: Archive build result for js
uses: actions/upload-artifact@v4
with:
name: node_lua_with_lrdb
path: node/bin/node_lua_with_lrdb.*
test_on_node:
needs: emscripten
name: test on node.js
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Download a node_lua_with_lrdb
uses: actions/download-artifact@v4
with:
name: node_lua_with_lrdb
path: node/bin/
- run: npm ci
working-directory: node
- run: npm run build
working-directory: node
- run: npm run lint
working-directory: node
- run: npm run test
working-directory: node
env:
CI: true