Skip to content

Update tec.yml

Update tec.yml #319

Workflow file for this run

name: Trillek Engine CI
on:
pull_request:
push:
tags: [v*]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
windows-latest,
windows-2019,
ubuntu-latest,
ubuntu-18.04,
macOS-latest,
]
arch: [x86, x64]
include:
- os: windows-latest
vcpkgTripletOs: windows
- os: windows-2019
vcpkgTripletOs: windows
- os: ubuntu-latest
vcpkgTripletOs: linux
- os: ubuntu-18.04
vcpkgTripletOs: linux
- os: macOS-latest
vcpkgTripletOs: osx
exclude:
- os: ubuntu-latest
arch: x86
- os: ubuntu-18.04
arch: x86
- os: macOS-latest
arch: x86
env:
buildDir: "${{ github.workspace }}/build"
BUILD_PRESET: release
CONFIG_PRESET: ninja-multi-vcpkg-ci
VCPKG_COMMIT_ID: acc3bcf76b84ae5041c86ab55fe138ae7b8255c7
VCPKG_DEFAULT_TRIPLET: ${{ matrix.arch }}-${{ matrix.vcpkgTripletOs }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: lukka/get-cmake@latest
- name: Install os deps (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install libgl1-mesa-dev xorg-dev libglu1-mesa-dev libxinerama-dev libxcursor-dev p7zip-full -y
- name: Set gcc-9 on Ubuntu16.04
uses: lukka/set-shell-env@v1
if: contains( matrix.os, 'ubuntu-16.04')
with:
CC: gcc-9
CXX: g++-9
- name: Restore artifacts, or run vcpkg, build and cache artifacts
uses: lukka/run-vcpkg@v10
with:
appendedCacheKey: ${{ env.VCPKG_DEFAULT_TRIPLET }}
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
- name: Configure cmake and build
uses: lukka/run-cmake@v10
with:
configurePreset: ${{ env.CONFIG_PRESET }}
buildPreset: ${{ env.CONFIG_PRESET }}-${{ env.BUILD_PRESET }}
testPreset: ${{ env.CONFIG_PRESET }}-${{ env.BUILD_PRESET }}
- name: Upload the build artifact
uses: actions/upload-artifact@v3
with:
name: "trillek-${{ matrix.os }}"
path: |
assets/
${{ env.CLIENT_BUILD_DIR }}/trillek-client
${{ env.CLIENT_BUILD_DIR }}/trillek-client.exe
${{ env.CLIENT_BUILD_DIR }}/*.dll
${{ env.SERVER_BUILD_DIR }}/trillek-serverd
${{ env.SERVER_BUILD_DIR }}/trillek-server.exe
if-no-files-found: ignore
env:
CLIENT_BUILD_DIR: ${{ github.workspace }}/builds/${{ env.CONFIG_PRESET }}/client/Release
SERVER_BUILD_DIR: ${{ github.workspace }}/builds/${{ env.CONFIG_PRESET }}/server/Release
coverage:
runs-on: windows-latest
env:
buildDir: "${{ github.workspace }}/build"
BUILD_PRESET: debug
CONFIG_PRESET: ninja-multi-vcpkg-ci
VCPKG_COMMIT_ID: acc3bcf76b84ae5041c86ab55fe138ae7b8255c7
VCPKG_DEFAULT_TRIPLET: x64-windows
steps:
- uses: actions/checkout@v2
with:
submodules: true
- uses: lukka/get-cmake@latest
- name: Restore artifacts, or run vcpkg, build and cache artifacts
uses: lukka/run-vcpkg@v10
with:
appendedCacheKey: ${{ env.VCPKG_DEFAULT_TRIPLET }}
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
- name: Configure cmake and build
uses: lukka/run-cmake@v10
with:
configurePreset: ${{ env.CONFIG_PRESET }}
buildPreset: ${{ env.CONFIG_PRESET }}-${{ env.BUILD_PRESET }}
testPreset: ${{ env.CONFIG_PRESET }}-${{ env.BUILD_PRESET }}
- name: Setup OpenCppCoverage and add to PATH
id: setup_opencppcoverage
run: |
choco install OpenCppCoverage -y
echo "C:\Program Files\OpenCppCoverage" >> $env:GITHUB_PATH
- name: Generate Report
id: generate_test_report
shell: cmd
run: OpenCppCoverage.exe --quiet --config_file opencppcovconfig.txt --export_type cobertura:coverage.xml -- ctest.exe --preset ${{ env.CONFIG_PRESET }}-${{ env.BUILD_PRESET }}
- name: Upload Report to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage.xml
fail_ci_if_error: true
functionalities: fix
prepublish:
runs-on: ubuntu-latest
needs: build
if: startsWith(github.ref, 'refs/tags/v')
name: Create Release
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "${{ github.ref }}"
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
publish:
runs-on: ubuntu-latest
needs: prepublish
strategy:
fail-fast: false
matrix:
os:
[
windows-latest,
windows-2016,
ubuntu-18.04,
ubuntu-16.04,
macOS-latest,
]
arch: [x64]
if: startsWith(github.ref, 'refs/tags/v')
name: Upload Release Asset(s)
steps:
- name: Download a single artifact
uses: actions/download-artifact@v2
with:
name: "trillek-${{ matrix.os }}"
- name: Package release
run: |
zip --junk-paths -r -u trillek-${{ matrix.os }}.zip build/client
zip --junk-paths -r -u trillek-${{ matrix.os }}.zip build/server
zip -r -u trillek-${{ matrix.os }}.zip assets/
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepublish.outputs.upload_url }}
asset_path: "./trillek-${{ matrix.os }}.zip"
asset_name: "trillek-${{ matrix.os }}.zip"
asset_content_type: application/zip