mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-07 08:36:02 -10:00
Every push ran every workflow. tools/ci_paths.py now writes each workflow's push and pull_request paths filter: everything, less the samples trees and the other workflow files, plus the sample directories its jobs build or run (through the scripts they call and the paths those directories name in turn) and the workflow itself. A push to one sample runs the full-tree builds no longer, only the workflows that run that sample; a push to one workflow runs it alone; any other change runs everything as before. Jobs that call a tool or CI script, walk the samples trees or read the workflow files keep those whole, and workflows with a filter of their own keep it. The CI local runner workflow runs tools/ci_paths.py --check, which fails when a filter no longer matches what its workflow names, and tools/ci_local.py which reads past a generated filter to the coverage.
95 lines
2.9 KiB
YAML
95 lines
2.9 KiB
YAML
name: CI Linux netplay end to end
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
# ci_paths: generated by tools/ci_paths.py, do not edit
|
|
paths:
|
|
- '**'
|
|
- '!samples/**'
|
|
- '!libretro-common/samples/**'
|
|
- '!.github/workflows/*.yml'
|
|
- 'samples/network/netplay_e2e/**'
|
|
- '.github/workflows/Linux-netplay-e2e.yml'
|
|
# ci_paths: end
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
# ci_paths: generated by tools/ci_paths.py, do not edit
|
|
paths:
|
|
- '**'
|
|
- '!samples/**'
|
|
- '!libretro-common/samples/**'
|
|
- '!.github/workflows/*.yml'
|
|
- 'samples/network/netplay_e2e/**'
|
|
- '.github/workflows/Linux-netplay-e2e.yml'
|
|
# ci_paths: end
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
|
|
|
|
jobs:
|
|
netplay-e2e:
|
|
name: Two retroarch processes in netplay
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
APT_PKGS: build-essential pkg-config zlib1g-dev python3 ccache
|
|
timeout-minutes: 40
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Apt cache key
|
|
id: apt
|
|
run: sh .github/workflows/scripts/apt-cache-key.sh "$APT_PKGS"
|
|
|
|
- name: Restore apt cache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ~/.apt-cache
|
|
key: ${{ steps.apt.outputs.key }}
|
|
restore-keys: ${{ steps.apt.outputs.prefix }}
|
|
|
|
- name: Install dependencies
|
|
timeout-minutes: 10
|
|
run: sh .github/workflows/scripts/apt-install.sh $APT_PKGS
|
|
|
|
- name: Save apt cache
|
|
if: env.APT_CACHE_SAVE == '1'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: ~/.apt-cache
|
|
key: ${{ steps.apt.outputs.key }}
|
|
|
|
- name: Link with lld
|
|
run: sh .github/workflows/scripts/use-lld.sh
|
|
|
|
- name: Build RetroArch with no menu, video or sound
|
|
shell: bash
|
|
run: |
|
|
set -eu
|
|
./configure --disable-qt --disable-ffmpeg --disable-vulkan \
|
|
--disable-wayland --disable-x11 --disable-opengl --disable-egl \
|
|
--disable-kms --disable-sdl2 --disable-pulse --disable-alsa \
|
|
--disable-jack --disable-oss --disable-freetype --disable-menu
|
|
grep -q '^HAVE_NETWORKGAMEPAD = 1' config.mk
|
|
make -j"$(nproc)" CC="ccache gcc" CXX="ccache g++"
|
|
|
|
- name: Host and client over the loopback
|
|
shell: bash
|
|
run: |
|
|
set -eu
|
|
# analog sticks synced and not, lockstep asked for, a lockstep
|
|
# host with a rollback client, and a state too large to roll
|
|
# back; the peers' RAM agrees on every frame
|
|
make -C samples/network/netplay_e2e
|
|
timeout 600 make -C samples/network/netplay_e2e check RETROARCH=$PWD/retroarch
|
|
make -C samples/network/netplay_e2e clean
|