ddnet/.github/workflows/build.yaml

134 lines
4.6 KiB
YAML
Raw Normal View History

2020-01-23 15:01:52 +00:00
name: Build
2020-06-30 23:50:40 +00:00
on:
push:
branches-ignore:
- staging.tmp
- trying.tmp
- staging-squash-merge.tmp
pull_request:
2020-01-23 15:01:52 +00:00
jobs:
build-cmake:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
2020-01-23 15:01:52 +00:00
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest, ubuntu-16.04]
include:
- os: ubuntu-latest
cmake-args: -G "Unix Makefiles"
build-args: --parallel
2020-01-23 15:13:54 +00:00
package-file: DDNet-*-linux_x86_64.tar.xz
fancy: true
2020-01-23 15:01:52 +00:00
env:
CFLAGS: -Wdeclaration-after-statement -Werror
CXXFLAGS: -Werror
- os: ubuntu-16.04
cmake-path: /usr/bin/
cmake-args: -G "Unix Makefiles"
2020-01-23 15:13:54 +00:00
package-file: DDNet-*-linux_x86_64.tar.xz
fancy: false
2020-01-23 15:01:52 +00:00
env:
CFLAGS: -Wdeclaration-after-statement -Werror
CXXFLAGS: -Werror
- os: macOS-latest
cmake-args: -G "Unix Makefiles"
build-args: --parallel
2020-01-23 15:13:54 +00:00
package-file: DDNet-*-osx.dmg
fancy: false
2020-01-23 15:01:52 +00:00
env:
CFLAGS: -Wdeclaration-after-statement -Werror
CXXFLAGS: -Werror
- os: windows-latest
cmake-args: -G "Visual Studio 16 2019" -A x64
2020-01-23 15:13:54 +00:00
package-file: DDNet-*-win64.zip
fancy: false
2020-01-23 15:01:52 +00:00
env:
CFLAGS: /WX
CXXFLAGS: /WX
LDFLAGS: /WX
steps:
- uses: actions/checkout@v2
- name: Checkout 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: Prepare Linux
if: contains(matrix.os, 'ubuntu')
run: |
sudo apt-get update -y
2020-07-08 19:09:52 +00:00
sudo apt-get install pkg-config cmake libfreetype6-dev libnotify-dev libsdl2-dev libsqlite3-dev -y
2020-01-23 15:01:52 +00:00
- name: Prepare Linux (fancy)
if: contains(matrix.os, 'ubuntu') && matrix.fancy
run: |
sudo apt-get install libboost-dev libmariadbclient-dev libmysqlcppconn-dev libwebsockets-dev -y
2020-01-23 15:01:52 +00:00
- name: Prepare MacOS
if: contains(matrix.os, 'macOS')
run: |
brew update
2020-06-24 09:51:32 +00:00
brew install pkg-config sdl2
brew upgrade freetype
2020-05-01 08:31:30 +00:00
sudo rm -rf /Library/Developer/CommandLineTools
2020-01-23 15:01:52 +00:00
- name: Build in debug mode
env: ${{ matrix.env }}
run: |
mkdir debug
cd debug
${{ matrix.cmake-path }}cmake --version
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. ..
${{ matrix.cmake-path }}cmake --build . --config Debug ${{ matrix.build-args }} --target everything
- name: Test debug
run: |
cd debug
${{ matrix.cmake-path }}cmake --build . --config Debug ${{ matrix.build-args }} --target run_tests
./DDNet-Server shutdown
- name: Build in release mode
env: ${{ matrix.env }}
run: |
mkdir release
cd release
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Release -Werror=dev -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. ..
${{ matrix.cmake-path }}cmake --build . --config Release ${{ matrix.build-args }} --target everything
- name: Test release
run: |
cd release
${{ matrix.cmake-path }}cmake --build . --config Release ${{ matrix.build-args }} --target run_tests
./DDNet-Server shutdown
- name: Build in release mode with debug info and all features on
if: matrix.fancy
env: ${{ matrix.env }}
run: |
mkdir fancy
cd fancy
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DANTIBOT=ON -DMYSQL=ON -DWEBSOCKETS=ON ..
${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo ${{ matrix.build-args }} --target everything
- name: Test fancy
if: matrix.fancy
run: |
cd release
${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo ${{ matrix.build-args }} --target run_tests
./DDNet-Server shutdown
2020-01-23 15:01:52 +00:00
- name: Package
run: |
cd release
${{ matrix.cmake-path }}cmake --build . --config Release ${{ matrix.build-args }} --target package_default
mkdir artifacts
mv ${{ matrix.package-file }} artifacts
- name: Upload Artifacts
uses: actions/upload-artifact@v1
with:
name: ddnet-${{ matrix.os }}
path: release/artifacts