1
0

329 lines
8.5 KiB
YAML
Raw Normal View History

name: build
# build on c/cpp changes or workflow changes
on:
push:
paths:
- 'lib/**.[ch]'
- 'lib/**.cpp'
- 'src/**.[ch]'
- 'src/**.cpp'
- '**/CMakeLists.txt'
- 'cmake/Modules/**'
- 'util/buildbot/**'
- 'util/ci/**'
- '.github/workflows/**.yml'
pull_request:
paths:
- 'lib/**.[ch]'
- 'lib/**.cpp'
- 'src/**.[ch]'
- 'src/**.cpp'
- '**/CMakeLists.txt'
- 'cmake/Modules/**'
- 'util/buildbot/**'
- 'util/ci/**'
- '.github/workflows/**.yml'
jobs:
# This is our minor gcc compiler
2020-09-04 20:07:19 +02:00
# gcc_6:
# runs-on: ubuntu-18.04
# steps:
# - uses: actions/checkout@v2
# - name: Install deps
# run: |
# sudo apt-get install g++-6 gcc-6 -qyy
# source ./util/ci/common.sh
# install_linux_deps
#
# - name: Build
# run: |
# ./util/ci/build.sh
# env:
# CC: gcc-6
# CXX: g++-6
#
# - name: Test
# run: |
# ./bin/multicraft --run-unittests
2022-12-05 16:58:02 +02:00
# This is the current gcc compiler (available in jammy)
gcc_10:
runs-on: ubuntu-22.04
steps:
2022-12-05 16:58:02 +02:00
- uses: actions/checkout@v3
- name: Install deps
run: |
source ./util/ci/common.sh
2022-12-05 16:58:02 +02:00
install_linux_deps g++-10
- name: Build
run: |
./util/ci/build.sh
env:
2022-12-05 16:58:02 +02:00
CC: gcc-10
CXX: g++-10
- name: Test
run: |
2020-08-25 09:59:52 +02:00
./bin/multicraft --run-unittests
# This is our minor clang compiler
2020-09-04 20:07:19 +02:00
# clang_3_9:
# runs-on: ubuntu-18.04
# steps:
# - uses: actions/checkout@v2
# - name: Install deps
# run: |
# sudo apt-get install clang-3.9 -qyy
# source ./util/ci/common.sh
# install_linux_deps
#
# - name: Build
# run: |
# ./util/ci/build.sh
# env:
# CC: clang-3.9
# CXX: clang++-3.9
#
# - name: Test
# run: |
# ./bin/multicraft --run-unittests
# This is the current clang version
2022-12-05 16:58:02 +02:00
clang_11:
runs-on: ubuntu-22.04
steps:
2022-12-05 16:58:02 +02:00
- uses: actions/checkout@v3
- name: Install deps
run: |
source ./util/ci/common.sh
2022-12-05 16:58:02 +02:00
install_linux_deps clang-11 valgrind libluajit-5.1-dev
- name: Build
run: |
./util/ci/build.sh
env:
2022-12-05 16:58:02 +02:00
CC: clang-11
CXX: clang++-11
2020-12-23 21:24:27 +01:00
CMAKE_FLAGS: "-DREQUIRE_LUAJIT=1"
- name: Test
run: |
2020-08-25 09:59:52 +02:00
./bin/multicraft --run-unittests
2022-12-05 16:58:02 +02:00
# - name: Valgrind
# run: |
# valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/multicraft --run-unittests
# Build with prometheus-cpp (server-only)
2020-09-04 20:07:19 +02:00
# clang_9_prometheus:
# name: "clang_9 (PROMETHEUS=1)"
# runs-on: ubuntu-18.04
# steps:
# - uses: actions/checkout@v2
# - name: Install deps
# run: |
# sudo apt-get install clang-9 -qyy
# source ./util/ci/common.sh
# install_linux_deps
#
# - name: Build prometheus-cpp
# run: |
# ./util/ci/build_prometheus_cpp.sh
#
# - name: Build
# run: |
# ./util/ci/build.sh
# env:
# CC: clang-9
# CXX: clang++-9
# CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0"
#
# - name: Test
# run: |
# ./bin/multicraftserver --run-unittests
# Build without freetype (client-only)
2020-09-04 20:07:19 +02:00
# clang_9_no_freetype:
# name: "clang_9 (FREETYPE=0)"
# runs-on: ubuntu-18.04
# steps:
# - uses: actions/checkout@v2
# - name: Install deps
# run: |
# sudo apt-get install clang-9 -qyy
# source ./util/ci/common.sh
# install_linux_deps
#
# - name: Build
# run: |
# ./util/ci/build.sh
# env:
# CC: clang-9
# CXX: clang++-9
# CMAKE_FLAGS: "-DENABLE_FREETYPE=0 -DBUILD_SERVER=0"
#
# - name: Test
# run: |
# ./bin/multicraft --run-unittests
docker:
name: "Docker image"
2022-12-05 16:58:02 +02:00
runs-on: ubuntu-22.04
steps:
2022-12-05 16:58:02 +02:00
- uses: actions/checkout@v3
- name: Build docker image
run: |
docker build .
win32:
name: "MinGW cross-compiler (32-bit)"
2022-12-05 16:58:02 +02:00
runs-on: ubuntu-22.04
steps:
2022-12-05 16:58:02 +02:00
- uses: actions/checkout@v3
- name: Install compiler
run: |
2020-12-23 21:24:27 +01:00
sudo apt-get update -q && sudo apt-get install gettext -qyy
wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz
sudo tar -xaf mingw.tar.xz -C /usr
- name: Build
run: |
EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh winbuild
env:
NO_MINETEST_GAME: 1
NO_PACKAGE: 1
win64:
name: "MinGW cross-compiler (64-bit)"
2022-12-05 16:58:02 +02:00
runs-on: ubuntu-22.04
steps:
2022-12-05 16:58:02 +02:00
- uses: actions/checkout@v3
- name: Install compiler
run: |
2020-12-23 21:24:27 +01:00
sudo apt-get update -q && sudo apt-get install gettext -qyy
wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz
sudo tar -xaf mingw.tar.xz -C /usr
- name: Build
run: |
EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild
env:
NO_MINETEST_GAME: 1
NO_PACKAGE: 1
msys2-mingw64:
name: "MSYS2-MinGW (64-bit)"
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-autotools mingw-w64-x86_64-tcl git zip
- name: Build
run: |
cd ./Windows
./Start.sh
cmake --build . -j
cd -
strip -s ./bin/multicraft.exe
- name: Create ZIP
run: |
mkdir MultiCraft
cp -r ./bin MultiCraft/
cp -r ./builtin MultiCraft/
cp -r ./client MultiCraft/
cp -r ./fonts MultiCraft/
cp -r ./locale MultiCraft/
cp -r ./textures MultiCraft/
zip -r MultiCraft.zip MultiCraft
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: MultiCraft-msys2-mingw64
path: ./MultiCraft.zip
msvc:
2023-01-24 23:32:53 +02:00
name: VS 2022 ${{ matrix.config.arch }}-${{ matrix.type }}
runs-on: windows-2022
env:
2023-01-24 23:32:53 +02:00
VCPKG_VERSION: af2287382b1991dbdcb7e5112d236f3323b9dd7a
# 2022.03.10
vcpkg_packages: irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit gmp jsoncpp
strategy:
fail-fast: false
matrix:
config:
- {
arch: x86,
2023-01-24 23:32:53 +02:00
generator: "-G'Visual Studio 17 2022' -A Win32",
vcpkg_triplet: x86-windows
}
- {
arch: x64,
2023-01-24 23:32:53 +02:00
generator: "-G'Visual Studio 17 2022' -A x64",
vcpkg_triplet: x64-windows
}
type: [portable]
# type: [portable, installer]
# The installer type is working, but disabled, to save runner jobs.
# Enable it, when working on the installer.
steps:
- name: Checkout
2022-12-05 16:58:02 +02:00
uses: actions/checkout@v3
- name: Restore from cache and run vcpkg
2021-06-11 18:14:03 +12:00
uses: lukka/run-vcpkg@v7
with:
vcpkgArguments: ${{env.vcpkg_packages}}
vcpkgDirectory: '${{ github.workspace }}\vcpkg'
appendedCacheKey: ${{ matrix.config.vcpkg_triplet }}
vcpkgGitCommitId: ${{ env.VCPKG_VERSION }}
vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }}
- name: CMake
run: |
cmake ${{matrix.config.generator}} `
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" `
-DCMAKE_BUILD_TYPE=Release `
2020-06-22 17:17:36 +02:00
-DENABLE_POSTGRESQL=OFF `
-DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} .
- name: Build
run: cmake --build . --config Release
- name: CPack
run: |
If ($env:TYPE -eq "installer")
{
cpack -G WIX -B "$env:GITHUB_WORKSPACE\Package"
}
ElseIf($env:TYPE -eq "portable")
{
cpack -G ZIP -B "$env:GITHUB_WORKSPACE\Package"
}
env:
TYPE: ${{matrix.type}}
- name: Package Clean
run: rm -r $env:GITHUB_WORKSPACE\Package\_CPack_Packages
2022-04-09 13:05:37 +02:00
- uses: actions/upload-artifact@v3
with:
name: MultiCraft-msvc-${{ matrix.config.arch }}-${{ matrix.type }}
path: .\Package\