build(tiledit): use a docker image to build #84
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: SIRC Tiledit | |
# TODO: Only run when sirc-tiledit directory has changes | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
defaults: | |
run: | |
working-directory: ./sirc-tiledit | |
# Source: https://github.com/mesonbuild/meson/blob/master/docs/markdown/Continuous-Integration.md | |
jobs: | |
build: | |
name: Build and Test on ${{ matrix.os }} with Meson v${{ matrix.meson_version }} | |
runs-on: ${{ matrix.os }} | |
container: | |
image: ghcr.io/noxharmonium/sirc-tiledit-build:main | |
strategy: | |
matrix: | |
os: [ubuntu-24.04] | |
# TODO: Get version from .tool-versions? | |
meson_version: ["1.4.1"] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set ownership | |
run: | | |
# Workaround for https://github.com/actions/runner/issues/2033 | |
chown -R $(id -u):$(id -g) $PWD | |
- name: Configure Project | |
run: | | |
meson setup -Db_coverage=true --buildtype debug build-debug/ | |
meson setup --buildtype release build-release/ | |
- name: Compile Project (Debug) | |
run: | | |
cd build-debug | |
meson compile -v | |
- name: Test Project | |
run: | | |
cd build-debug | |
meson test --print-errorlogs | |
ninja coverage-xml | |
- name: Archive test coverage | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: codecov-tiledit | |
path: | | |
./sirc-tiledit/build-debug/meson-logs/coverage.xml | |
./sirc-tiledit/libs/shared/tests/resources/*actual*.png | |
if-no-files-found: error | |
- name: Lint Project | |
run: | | |
cd build-debug | |
clang-tidy --version | |
ninja clang-tidy | |
clang-format --version | |
ninja clang-format-check | |
- name: Compile Project (Release) | |
run: | | |
cd build-release | |
meson compile -v | |
- name: Create release | |
run: | | |
cd build-release | |
meson dist | |
- name: Archive release | |
if: github.ref == 'refs/heads/main' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build artifacts | |
path: ./sirc-tiledit/build-release/meson-dist/* | |
if-no-files-found: error | |
upload-to-codecov: | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: codecov-tiledit | |
- name: List artifacts | |
run: ls -la | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos | |
files: coverage.xml | |
fail_ci_if_error: true |