v / .github / workflows / gg_regressions_ci.yml
74 lines · 66 sloc · 2.53 KB · 93162641ddda0809e8e8c2da69af8b13982567ee
Raw
1name: Graphics CI
2
3on:
4 push:
5 branches:
6 - master
7 paths:
8 - 'vlib/**'
9 - 'thirdparty/**'
10 - 'cmd/tools/builders/**.v'
11 - '**/gg_regressions_ci.yml'
12 - '!**.md'
13 pull_request:
14 paths:
15 - 'vlib/**'
16 - 'thirdparty/**'
17 - 'cmd/tools/builders/**.v'
18 - '**/gg_regressions_ci.yml'
19 - '!**.md'
20
21concurrency:
22 group: gg-regressions-${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }}
23 cancel-in-progress: true
24
25jobs:
26 gg-regressions:
27 runs-on: ubuntu-24.04
28 timeout-minutes: 20
29 env:
30 VFLAGS: -cc tcc
31 DISPLAY: :99
32 LIBGL_ALWAYS_SOFTWARE: true
33 VTMP: /tmp
34 steps:
35 - name: Checkout V
36 uses: actions/checkout@v6
37 - uses: ./.github/actions/cache-apt-packages-action
38
39 - name: Build local v
40 run: make -j4 && ./v symlink
41
42 - name: Clear module cache
43 run: ./v wipe-cache
44
45 - name: Setup dependencies
46 run: |
47 # imagemagick : convert, mogrify
48 # xvfb : xvfb
49 # openimageio-tools : idiff
50 # libxcursor-dev libxi-dev : V gfx deps
51 # libgl1-mesa-dri : For headless rendering / software DRI driver (LIBGL_ALWAYS_SOFTWARE=true)
52 # freeglut3-dev : Fixes graphic apps compilation with tcc
53 # libx11-dev : X11 headers for clipboard and sokol (default backend on Linux)
54 .github/workflows/disable_azure_mirror.sh
55 ./v retry -- sudo apt update
56 ./v retry -- sudo apt install imagemagick openimageio-tools libgl1-mesa-dri xvfb libxcursor-dev libxi-dev libxrandr-dev freeglut3-dev xsel xclip libx11-dev libegl-dev
57 ./v retry -- ./v download https://raw.githubusercontent.com/tremby/imgur.sh/c98345d/imgur.sh
58 ./v retry -- git clone https://github.com/Larpon/gg-regression-images gg-regression-images
59 chmod +x ./imgur.sh
60
61 - name: Sample and compare
62 id: compare
63 continue-on-error: true
64 run: |
65 Xvfb "$DISPLAY" -screen 0 1280x1024x24 -fbdir /var/tmp/ &
66 sleep 2; while [ ! -f /var/tmp/Xvfb_screen0 ]; do sleep 0.5; done # give xvfb time to start, even on slow CI runs
67 sleep 5; ./v gret -t ./gg-regression-images/vgret.v_examples.toml -v ./gg-sample_images ./gg-regression-images
68
69 - name: Upload regression to imgur
70 if: steps.compare.outcome != 'success'
71 run: |
72 ./imgur.sh /tmp/fail.png
73 ./imgur.sh /tmp/diff.png
74 exit 1
75