1010 MYCI_GIT_USERNAME : igagis
1111 MYCI_GIT_PASSWORD : ${{ secrets.MYCI_GIT_ACCESS_TOKEN }}
1212jobs :
13+ # #### coverage #####
14+ coverage :
15+ runs-on : ubuntu-latest
16+ container : debian:bookworm
17+ name : coverage - measure
18+ env :
19+ linux_distro : debian
20+ linux_release : bookworm
21+ steps :
22+ - name : add cppfw deb repo
23+ uses : myci-actions/add-deb-repo@main
24+ with :
25+ repo : deb https://gagis.hopto.org/repo/cppfw/${{ env.linux_distro }} ${{ env.linux_release }} main
26+ repo-name : cppfw
27+ keys-asc : https://gagis.hopto.org/repo/cppfw/pubkey.gpg
28+ install : myci locales git pipx
29+ - name : add llvm repo (for clang-format)
30+ uses : myci-actions/add-deb-repo@main
31+ with :
32+ repo : deb http://apt.llvm.org/${{ env.linux_release }} llvm-toolchain-${{ env.linux_release }} main
33+ repo-name : llvm
34+ keys-asc : https://apt.llvm.org/llvm-snapshot.gpg.key
35+ - name : git clone
36+ uses : myci-actions/checkout@main
37+ - name : prepare debian package
38+ run : myci-deb-prepare.sh
39+ - name : install deps
40+ run : myci-deb-install-build-deps.sh
41+ - name : add DE locale
42+ # needed for testing that locale with "," as decimal delimiter does not break the parsing with string_parser
43+ run : |
44+ echo "de_DE.UTF-8 UTF-8" >> /etc/locale.gen
45+ locale-gen
46+ - name : build
47+ run : make config=gcov
48+ - name : test
49+ run : make config=gcov test
50+ - name : generate coverage report
51+ # due to some bug in gcov, we need to use --gcov-ignore-parse-errors=negative_hits.warn
52+ run : pipx run gcovr --gcov-ignore-parse-errors=negative_hits.warn --exclude-throw-branches --filter src/ --cobertura > cobertura.xml
53+ - name : upload coverage report to artifacts
54+ uses : actions/upload-artifact@v4
55+ with :
56+ name : cobertura.xml
57+ path : cobertura.xml
58+ - name : upload coverage data to codecov.io
59+ uses : codecov/codecov-action@v5
60+ if : always() # even if previous steps fail, this one needs to be run
61+ with :
62+ token : ${{ secrets.CODECOV_TOKEN }}
63+ # do not search for coverage files automatically, upload only specified files
64+ disable_search : true
65+ files : cobertura.xml
66+ # flags: unittests # optional
67+ name : codecov-umbrella # optional
68+ fail_ci_if_error : true # optional (default = false)
69+ verbose : true # optional (default = false)
70+ - name : upload test report to codecov.io
71+ if : always() # even if previous steps fail, this one needs to be run
72+ uses : codecov/test-results-action@v1
73+ with :
74+ token : ${{ secrets.CODECOV_TOKEN }}
75+ # do not search for coverage files automatically, upload only specified files
76+ disable_search : true
77+ files : tests/unit/out/gcov/junit.xml
78+ name : codecov-umbrella # optional
79+ fail_ci_if_error : true # optional (default = false)
80+ verbose : true # optional (default = false)
81+ # #### sanitizer #####
82+ sanitizer :
83+ strategy :
84+ fail-fast : false
85+ matrix :
86+ include :
87+ - {os: debian, codename: bookworm, image_owner: }
88+ - {os: debian, codename: bookworm, image_owner: arm32v7/, labels: [ubuntu-24.04-arm]}
89+ - {os: debian, codename: bookworm, image_owner: arm64v8/, labels: [ubuntu-24.04-arm]}
90+ runs-on : ${{ (matrix.labels == '' && 'ubuntu-latest') || matrix.labels }}
91+ container : ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }}
92+ name : sanitizer - ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }}
93+ steps :
94+ - name : add cppfw deb repo
95+ uses : myci-actions/add-deb-repo@main
96+ with :
97+ repo : deb https://gagis.hopto.org/repo/cppfw/${{ matrix.os }} ${{ matrix.codename }} main
98+ repo-name : cppfw
99+ keys-asc : https://gagis.hopto.org/repo/cppfw/pubkey.gpg
100+ install : myci git
101+ - name : add llvm repo (for clang-format)
102+ uses : myci-actions/add-deb-repo@main
103+ with :
104+ repo : deb http://apt.llvm.org/${{ matrix.codename }} llvm-toolchain-${{ matrix.codename }} main
105+ repo-name : llvm
106+ keys-asc : https://apt.llvm.org/llvm-snapshot.gpg.key
107+ - name : install ci tools
108+ run : |
109+ apt install --assume-yes devscripts equivs
110+ - name : git clone
111+ uses : myci-actions/checkout@main
112+ - name : prepare debian package
113+ run : myci-deb-prepare.sh
114+ - name : install deps
115+ run : myci-deb-install-build-deps.sh
116+ - name : build
117+ run : make config=asan
118+ - name : test
119+ run : make config=asan test
13120# #### deb linux #####
14121 deb_linux :
15122 strategy :
@@ -18,21 +125,21 @@ jobs:
18125 include :
19126 # - {os: debian, codename: buster, image_owner: , package_type: deb}
20127 # - {os: debian, codename: buster, image_owner: i386/, package_type: deb, labels: [i386,docker]}
21- # - {os: debian, codename: buster, image_owner: arm32v7/, package_type: deb, labels: [arm,docker ]}
128+ # - {os: debian, codename: buster, image_owner: arm32v7/, package_type: deb, labels: [ubuntu-24.04- arm]}
22129 # - {os: debian, codename: bullseye, image_owner: , package_type: deb}
23130 # - {os: debian, codename: bullseye, image_owner: i386/, package_type: deb, labels: [i386,docker]}
24- # - {os: debian, codename: bullseye, image_owner: arm32v7/, package_type: deb, labels: [arm,docker ]}
25- # - {os: debian, codename: bullseye, image_owner: arm64v8/, package_type: deb, labels: [arm64,docker ]}
131+ # - {os: debian, codename: bullseye, image_owner: arm32v7/, package_type: deb, labels: [ubuntu-24.04- arm]}
132+ # - {os: debian, codename: bullseye, image_owner: arm64v8/, package_type: deb, labels: [ubuntu-24.04-arm ]}
26133 - {os: debian, codename: bookworm, image_owner: , package_type: deb}
27134 # - {os: debian, codename: bookworm, image_owner: i386/, package_type: deb, labels: [i386,docker]}
28- - {os: debian, codename: bookworm, image_owner: arm32v7/, package_type: deb, labels: [arm32,docker ]}
29- - {os: debian, codename: bookworm, image_owner: arm64v8/, package_type: deb, labels: [arm64,docker ]}
135+ - {os: debian, codename: bookworm, image_owner: arm32v7/, package_type: deb, labels: [ubuntu-24.04-arm ]}
136+ - {os: debian, codename: bookworm, image_owner: arm64v8/, package_type: deb, labels: [ubuntu-24.04-arm ]}
30137 # - {os: ubuntu, codename: focal, image_owner: , package_type: deb}
31138 # - {os: ubuntu, codename: jammy, image_owner: , package_type: deb}
32139 - {os: ubuntu, codename: noble, image_owner: , package_type: deb}
33- # - {os: raspbian, codename: buster, image_owner: igagis/, package_type: deb, labels: [arm,docker ]}
34- # - {os: raspbian, codename: bullseye, image_owner: igagis/, package_type: deb, labels: [arm,docker ]}
35- - {os: raspbian, codename: bookworm, image_owner: igagis/, package_type: deb, labels: [arm32,docker ]}
140+ # - {os: raspbian, codename: buster, image_owner: igagis/, package_type: deb, labels: [ubuntu-24.04- arm]}
141+ # - {os: raspbian, codename: bullseye, image_owner: igagis/, package_type: deb, labels: [ubuntu-24.04- arm]}
142+ # - {os: raspbian, codename: bookworm, image_owner: igagis/, package_type: deb, labels: [ubuntu-24.04-arm ]}
36143 runs-on : ${{ (matrix.labels == '' && 'ubuntu-latest') || matrix.labels }}
37144 container : ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }}
38145 name : linux - ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }}
@@ -58,17 +165,19 @@ jobs:
58165 uses : myci-actions/checkout@main
59166 - name : set PACKAGE_VERSION
60167 uses : myci-actions/export-env-var@main
61- with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh debian/changelog )}
168+ with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh)}
62169 - name : prepare debian package
63170 run : myci-deb-prepare.sh
64171 - name : install deps
65172 run : myci-deb-install-build-deps.sh
66173 - name : build
67- run : dpkg-buildpackage --unsigned-source --unsigned-changes
174+ run : |
175+ cd build
176+ dpkg-buildpackage --unsigned-source --unsigned-changes
68177 - name : deploy deb packages
69178 run : |
70179 echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa
71- myci-deploy-apt-ssh.sh --key repo_key_rsa --server gagis.hopto.org --repo cppfw/${{ matrix.os }} --distro ${{ matrix.codename }} --component main ../ lib${PACKAGE_NAME}*_${PACKAGE_VERSION}_*.*deb
180+ myci-deploy-apt-ssh.sh --key repo_key_rsa --server gagis.hopto.org --repo cppfw/${{ matrix.os }} --distro ${{ matrix.codename }} --component main lib${PACKAGE_NAME}*_${PACKAGE_VERSION}_*.*deb
72181 if : matrix.package_type == 'deb' && startsWith(github.ref, 'refs/tags/')
73182# #### macosx #####
74183 macosx :
@@ -135,7 +244,7 @@ jobs:
135244 uses : myci-actions/checkout@main
136245 - name : set PACKAGE_VERSION
137246 uses : myci-actions/export-env-var@main
138- with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh debian/changelog )}
247+ with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh)}
139248 - name : add cocoapods repo
140249 run : pod repo add --silent cppfw https://$MYCI_GIT_USERNAME@github.com/cppfw/cocoapods-repo.git
141250 - name : install deps
@@ -156,7 +265,7 @@ jobs:
156265 - name : deploy
157266 run : |
158267 echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa
159- myci-deploy-cocoapods-ssh.sh --repo cppfw --version $PACKAGE_VERSION --server gagis.hopto.org --key repo_key_rsa --generic-repo cppfw/cocoapods --package $PACKAGE_NAME-$PACKAGE_VERSION.zip cocoapods/$PACKAGE_NAME.podspec.in
268+ myci-deploy-cocoapods-ssh.sh --repo cppfw --version $PACKAGE_VERSION --server gagis.hopto.org --key repo_key_rsa --generic-repo cppfw/cocoapods --package $PACKAGE_NAME-$PACKAGE_VERSION.zip build/ cocoapods/$PACKAGE_NAME.podspec.in
160269 if : startsWith(github.ref, 'refs/tags/')
161270# #### android #####
162271 android :
@@ -174,15 +283,15 @@ jobs:
174283 install : myci
175284 - name : set PACKAGE_VERSION
176285 uses : myci-actions/export-env-var@main
177- with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh debian/changelog )}
286+ with : {name: PACKAGE_VERSION, value: $(myci-deb-version.sh)}
178287 - name : build
179288 run : |
180- cd android
289+ cd build/ android
181290 ./gradlew copy_aar --warning-mode all
182291 myci-apply-version.sh -v $PACKAGE_VERSION *.pom.in
183292 myci-apply-version.sh -v $PACKAGE_VERSION *.aar.in --filename-only
184293 - name : deploy
185- run : myci-deploy-maven-nexus.sh --base-url https://gagis.hopto.org/nexus --repo android android/$PACKAGE_NAME-$PACKAGE_VERSION.aar
294+ run : myci-deploy-maven-nexus.sh --base-url https://gagis.hopto.org/nexus --repo android build/ android/$PACKAGE_NAME-$PACKAGE_VERSION.aar
186295 if : startsWith(github.ref, 'refs/tags/')
187296# #### msys2 #####
188297 msys2 :
@@ -224,17 +333,17 @@ jobs:
224333 - name : git clone
225334 uses : myci-actions/checkout@main
226335 - name : prepare pacman package
227- run : myci-apply-version.sh -v $(myci-deb-version.sh debian/changelog) msys2/PKGBUILD.in
336+ run : myci-apply-version.sh build/ msys2/PKGBUILD.in
228337 - name : build
229338 # to make makepkg-mingw build only one architecture we need to set the MINGW_INSTALLS
230339 env : {MINGW_INSTALLS: '${{ matrix.repo }}'}
231340 run : |
232- cd msys2
341+ cd build/ msys2
233342 PKGEXT='.pkg.tar.xz' makepkg-mingw --syncdeps --noconfirm --skipinteg
234343 - name : deploy
235344 run : |
236345 echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa
237- for f in $(find msys2 -name "mingw-w64-${{ matrix.arch }}-$PACKAGE_NAME-*-any.pkg.*"); do
346+ for f in $(find build/ msys2 -name "mingw-w64-${{ matrix.arch }}-$PACKAGE_NAME-*-any.pkg.*"); do
238347 myci-deploy-pacman-ssh.sh --server gagis.hopto.org --key repo_key_rsa --repo cppfw/msys2/${{ matrix.repo }} --database cppfw_${{ matrix.repo }} $f
239348 done
240349 if : startsWith(github.ref, 'refs/tags/')
0 commit comments