-
Notifications
You must be signed in to change notification settings - Fork 0
171 lines (166 loc) · 5.37 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
name: CI
on:
push:
branches:
- '*'
jobs:
docker:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
ubuntu: ["jammy", "noble"]
permissions:
contents: read
packages: write
steps:
- name: Free space
run: |
# Workaround to provide additional free space.
# https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/share/boost "$AGENT_TOOLSDIRECTORY"
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
flavor: prefix=${{ matrix.ubuntu }}-
- name: Setup buildx
uses: docker/setup-buildx-action@v3
- name: Log into registry ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Source versions
run: |
source builders/versions
echo "QT_VER=${QT_VER}" >> $GITHUB_ENV
echo "QT_INSTALLER_VER=${QT_INSTALLER_VER}" >> $GITHUB_ENV
- name: Build mediafx image
uses: docker/build-push-action@v5
with:
context: builders/
file: builders/Linux/Dockerfile
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
push: true
target: mediafx
secrets: |
"qtaccount=${{ secrets.QTACCOUNT }}"
build-args: |
"QT_VER=${{ env.QT_VER }}"
"QT_INSTALLER_VER=${{ env.QT_INSTALLER_VER }}"
"UBUNTU=${{ matrix.ubuntu }}"
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository }}:buildcache,mode=max
linux:
runs-on: ubuntu-22.04
needs: docker
strategy:
fail-fast: false
matrix:
ubuntu: ["jammy", "noble"]
include:
- ubuntu: "noble"
test: "builders/Linux/docker-run.sh /mediafx/builders/mediafx-test.sh --verbose"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Build/test mediaFX
run: |
export TARGET=opengl
export UBUNTU=${{ matrix.ubuntu }}
builders/Linux/docker-run.sh
${{ matrix.test }}
- name: Build/test mediaFX vulkan
if: matrix.ubuntu == 'noble'
run: |
export TARGET=vulkan
export UBUNTU=${{ matrix.ubuntu }}
builders/Linux/docker-run.sh
${{ matrix.test }}
- name: Upload Failed Artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: failed-output-linux-${{ matrix.ubuntu }}
path: build/Linux/output
macos:
runs-on: macos-14
strategy:
fail-fast: false
matrix:
ffmpeg: ["ffmpeg@4", "ffmpeg@6"]
include:
- ffmpeg: "ffmpeg@6"
test: "builders/mediafx-test.sh --verbose"
env:
XCODE_VER: "15.3"
steps:
- name: Brew ffmpeg
run: |
brew install bash ${{ matrix.ffmpeg }}
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Xcode
run: |
sudo xcode-select -s "/Applications/Xcode_${XCODE_VER}.app"
- name: Restore cached installation
uses: actions/cache/restore@v4
id: restore-cache
with:
path: build/Darwin/installed
key: ${{ runner.os }}-${{ hashFiles('builders/versions') }}-${{ hashFiles('builders/Darwin/install-qt6.sh') }}-${{ hashFiles('builders/aqtinstall-requirements.txt') }}-${{ env.XCODE_VER }}
- name: Build installation
if: steps.restore-cache.outputs.cache-hit != 'true'
run: |
mkdir -p ~/Library/Application\ Support/Qt
echo "${{ secrets.QTACCOUNT }}" > ~/Library/Application\ Support/Qt/qtaccount.ini
builders/Darwin/install-qt6.sh
- name: Save cached installation
uses: actions/cache/save@v4
if: steps.restore-cache.outputs.cache-hit != 'true'
with:
path: build/Darwin/installed
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
- name: Build/test mediaFX
run: |
export PATH="$(brew --prefix ${{ matrix.ffmpeg }})/bin:$PATH"
export PKG_CONFIG_PATH="$(brew --prefix ${{ matrix.ffmpeg }})/lib/pkgconfig"
builders/mediafx-build.sh
${{ matrix.test }}
- name: Upload Failed Artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: failed-output-darwin-${{ matrix.ffmpeg }}
path: build/Darwin/output
lint:
runs-on: ubuntu-22.04
needs: docker
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: clang-format
uses: jidicula/[email protected]
with:
clang-format-version: '15'
- name: clang-tidy/clazy
run: builders/Linux/docker-run.sh /mediafx/builders/Linux/lint.sh
- name: qmlformat
run: builders/Linux/docker-run.sh bash -c 'cd /mediafx && qmlformat -i $(git ls-files "**/*.qml") && git diff --exit-code'
- name: qmllint
if: ${{ false }}
run: builders/Linux/docker-run.sh bash -c 'cd /mediafx && qmllint --qmltypes build/Linux/Release/src/mediafx/qmldir $(git ls-files "**/*.qml")'