2020-01-23 15:01:52 +00:00
|
|
|
name: Build
|
|
|
|
|
|
|
|
on: [push, pull_request]
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build-cmake:
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
strategy:
|
2020-04-10 19:01:39 +00:00
|
|
|
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
|
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
|
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
|
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
|
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-04-14 15:53:53 +00:00
|
|
|
sudo apt-get install pkg-config cmake libfreetype6-dev libnotify-dev libsdl2-dev -y
|
2020-01-23 15:01:52 +00:00
|
|
|
|
|
|
|
- name: Prepare MacOS
|
|
|
|
if: contains(matrix.os, 'macOS')
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
brew install pkg-config freetype sdl2
|
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: 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
|