1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-11-16 16:09:42 +01:00
VVVVVV/.github/workflows/ci.yml
Misa 47eb7acb44 Only trigger CI workflows for code or CI changes
This makes it so that the main CI workflow will only trigger if a change
is made to a code file in desktop_version/ (as the CI is only for
desktop_version/), or if the CI file itself is changed.

The CI workflow for Android will only trigger if Android-specific code
_could have_ changed. This includes all code that is definitely
Android-specific (e.g. Java files), but also C/C++ files that have
__ANDROID__ ifdefs.

Unfortunately, it's not possible to reuse the same list of paths across
two different event trigger types[1]. So we have to copy-paste here.

[1]: https://github.com/orgs/community/discussions/37645
2024-01-07 17:27:37 -08:00

175 lines
4.7 KiB
YAML

name: CI
# Only trigger workflow when code changes, or this file is changed.
# Android has a different workflow and different rules.
on:
push:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- ".github/workflows/ci.yml"
pull_request:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- ".github/workflows/ci.yml"
env:
SRC_DIR_PATH: desktop_version
jobs:
build-mac:
name: Build (macos-latest)
runs-on: macos-latest
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Install dependencies
run: brew install ninja sdl2
- name: CMake configure (default version)
run: |
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake -GNinja ..
- name: Build (default version)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: ninja -C ${SRC_DIR_PATH}/build
build-lin:
name: Build (CentOS 7)
runs-on: ubuntu-latest
container: ghcr.io/infoteddy/vvvvvv-build@sha256:50a2f769db3ca180286e9a76c1bf06b7016544a78e1fc7a9a0cc1144c675ced1
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: CMake configure (default version)
run: |
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake ..
- name: Build (default version)
run: make -j $(nproc) -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
make -j $(nproc) -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: make -j $(nproc) -C ${SRC_DIR_PATH}/build
build-win:
name: Build (windows-latest)
runs-on: windows-latest
env:
SDL_VERSION: 2.24.0
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Cache SDL
id: cache-windows-sdl
uses: actions/cache@v3
env:
cache-name: cache-sdl
with:
path: C:\SDL2-*
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.SDL_VERSION }}
- if: ${{ steps.cache-windows-sdl.outputs.cache-hit != 'true' }}
name: Download SDL if not cached
run: |
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -o C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
- name: Cache build folder for this CMakeLists.txt
id: cache-windows-build-folder
uses: actions/cache@v3
env:
cache-name: cache-windows-build-folder-VS2022
with:
path: |
desktop_version/build
desktop_version/CMakeLists.txt
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('desktop_version/CMakeLists.txt') }}-SDL${{ env.SDL_VERSION }}
- if: ${{ steps.cache-windows-build-folder.outputs.cache-hit != 'true' }}
name: CMake initial configure/generate
run: |
mkdir $env:SRC_DIR_PATH/build
cd $env:SRC_DIR_PATH/build
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
cmake -G "Visual Studio 17 2022" -A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main" ..
- name: CMake configure (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake ..
- name: Build (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .