88
99jobs :
1010 buildMac :
11- name : Build macOS
11+ name : Build ${{ matrix.macos }} (${{ matrix.abi }}) with Qt${{ matrix.qt }}
1212 runs-on : ${{ matrix.macos }}
1313 strategy :
1414 fail-fast : false
1717 abi : [ x86 ]
1818 xcode : [ Xcode_15.2 ]
1919 qt : [ 5 ]
20- include :
21- - macos : macos-14
22- abi : arm64
23- xcode : Xcode
24- qt : 5
25- - macos : macos-15
26- abi : arm64
27- xcode : Xcode
28- qt : 5
2920 steps :
3021 - name : Checkout
3122 uses : actions/checkout@v4
@@ -53,53 +44,16 @@ jobs:
5344 MACOS_CERTIFICATE_PWD : ${{ secrets.P12_PASSWORD }}
5445 MACOS_CERTIFICATE_NAME : ${{ secrets.APPLE_CERTIFICATE_NAME }}
5546 MACOS_CI_KEYCHAIN_PWD : ${{ secrets.KEYCHAIN_PASSWORD }}
56- run : |
57- # Turn our base64-encoded certificate back to a regular .p12 file
58-
59- echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
60- # We need to create a new keychain, otherwise using the certificate will prompt
61- # with a UI dialog asking for the certificate password, which we can't
62- # use in a headless CI environment
63-
64- security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
65- security default-keychain -s build.keychain
66- security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
67- security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
68- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
69-
70- # We finally codesign our app bundle, specifying the Hardened runtime option
71- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/Frameworks/*
72- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/Resources/*
73- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/bearer/*
74- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents//PlugIns/iconengines/*
75- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/imageformats/*
76- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/platforminputcontexts/*
77- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/platforms/*
78- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/printsupport/*
79- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/styles/*
80- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/PlugIns/virtualkeyboard/*
81- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/MacOS/plugins/*
82- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/MacOS/dlt-commander
83- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app/Contents/MacOS/dlt-viewer
84- /usr/bin/codesign --timestamp --options=runtime -s "$MACOS_CERTIFICATE_NAME" -f -v /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app
47+ run : scripts/darwin/codesign.sh
48+
8549 - name : Notarize app bundle
8650 if : " ! github.event.pull_request.head.repo.fork " # not running on a fork
8751 env :
8852 PROD_MACOS_NOTARIZATION_APPLE_ID : ${{ secrets.APPLE_ID }}
8953 PROD_MACOS_NOTARIZATION_TEAM_ID : ${{ secrets.TEAM_ID }}
9054 PROD_MACOS_NOTARIZATION_PWD : ${{ secrets.APP_PASSWORD }}
91- run : |
92- echo "Create keychain profile"
93- xcrun notarytool store-credentials "notarytool-profile" --apple-id "$PROD_MACOS_NOTARIZATION_APPLE_ID" --team-id "$PROD_MACOS_NOTARIZATION_TEAM_ID" --password "$PROD_MACOS_NOTARIZATION_PWD"
94- echo "Creating temp notarization archive"
95- ditto -c -k --keepParent "/Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app" "/Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.zip"
96-
97- echo "Notarize app"
98- xcrun notarytool submit "/Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.zip" --keychain-profile "notarytool-profile" --wait
99-
100- echo "Attach staple"
101- xcrun stapler staple "/Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.app"
102- rm -r /Users/runner/work/dlt-viewer/dlt-viewer/build/install/DLTViewer.zip
55+ run : scripts/darwin/notarize.sh
56+
10357 - name : Artifact Creation
10458 run : |
10559 cd /Users/runner/work/dlt-viewer/dlt-viewer/build
@@ -132,13 +86,23 @@ jobs:
13286 run : scripts/linux/buildUbuntu22and24.sh
13387 - name : Run tests
13488 run : ctest --test-dir build/qdlt
89+ - name : Create package
90+ if : ${{ matrix.ubuntu == 'ubuntu-24.04' }}
91+ run : ./build_viewer_debs_noble.sh
92+ - name : Archive artifact
93+ if : ${{ matrix.ubuntu == 'ubuntu-24.04' && success() }}
94+ uses : actions/upload-artifact@v4
95+ with :
96+ name : DLTViewer-Ubuntu-24.04
97+ path : debtmp/covesa-dlt-viewer_*.deb
98+
13599
136100 buildWindows :
137101 name : Build Windows
138102 strategy :
139103 matrix :
140104 task : [ sdk ]
141- qt : [ 5 ]
105+ qt : [ 6 ]
142106 runs-on : windows-2022
143107 steps :
144108 - name : Checkout
@@ -149,11 +113,10 @@ jobs:
149113 - name : Install qt
150114 uses : jurplel/install-qt-action@v4
151115 with :
152- version : 5.15.2
116+ modules : qtserialport
153117 - name : Build with CMake ${{ matrix.task }}
154118 run : >
155119 $env:WORKSPACE=$env:GITHUB_WORKSPACE;
156- $env:QTDIR=$env:Qt5_DIR.Replace('/','\');
157120 $env:CPACK_7Z="true";
158121 $env:CPACK_NSIS="true";
159122 ./build_sdk_windows_qt${{ matrix.qt }}_MSVC_cmake.bat
@@ -166,3 +129,89 @@ jobs:
166129 build/dist/DLTViewer*.7z
167130 build/dist/DLTViewer*.exe
168131 build/dist/*.md
132+
133+ buildMacOSQt6 :
134+ name : " Build MacOS ${{ matrix.osversion }} with Qt 6"
135+ runs-on : macos-${{ matrix.osversion }}
136+ strategy :
137+ fail-fast : false
138+ matrix :
139+ osversion : [ 14, 15 ]
140+
141+ steps :
142+ - name : Checkout source
143+ uses : actions/checkout@v4
144+
145+ - name : Install Qt 6 (Framework build)
146+ uses : jurplel/install-qt-action@v4
147+ with :
148+ host : ' mac'
149+ target : ' desktop'
150+ arch : ' clang_64'
151+ modules : ' qtserialport'
152+
153+ - name : Configure project with CMake
154+ run : |
155+ mkdir build
156+ cd build
157+ echo "QT_ROOT_DIR=$QT_ROOT_DIR"
158+ APP_DIR_NAME="DLTViewer.app"
159+ cmake -G Ninja -DCMAKE_PREFIX_PATH=$QT_ROOT_DIR/lib/cmake \
160+ -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
161+ -DCMAKE_BUILD_TYPE=Release \
162+ -DDLT_USE_QT_RPATH=OFF \
163+ -DDLT_PARSER=OFF \
164+ -DDLT_APP_DIR_NAME=${APP_DIR_NAME} \
165+ -DDLT_LIBRARY_INSTALLATION_PATH="${APP_DIR_NAME}/Contents/Frameworks" \
166+ -DDLT_EXECUTABLE_INSTALLATION_PATH="${APP_DIR_NAME}/Contents/MacOS" \
167+ -DDLT_RESOURCE_INSTALLATION_PATH="${APP_DIR_NAME}/Contents/Resources" \
168+ -DDLT_PLUGIN_INSTALLATION_PATH="${APP_DIR_NAME}/Contents/MacOS/plugins" \
169+ ..
170+
171+ - name : Build project
172+ run : |
173+ cmake --build build --parallel 4
174+
175+ - name : Install and deploy with macdeployqt
176+ run : |
177+ cmake --install build --prefix $(pwd)/build/install
178+ ls -l build/install/DLTViewer.app
179+ otool -L build/install/DLTViewer.app/Contents/MacOS/dlt-viewer
180+ otool -l build/install/DLTViewer.app/Contents/MacOS/dlt-viewer | grep -A2 LC_RPATH
181+ echo "Deploying DLTViewer.app with macdeployqt"
182+ $QT_ROOT_DIR/bin/macdeployqt build/install/DLTViewer.app -verbose=2 -dmg \
183+ -libpath=$(pwd)/build/install/DLTViewer.app/Contents/Frameworks \
184+ -executable=$(pwd)/build/install/DLTViewer.app/Contents/MacOS/dlt-viewer
185+
186+ - name : Codesign app bundle
187+ if : " ! github.event.pull_request.head.repo.fork " # not running on a fork
188+ # Extract the secrets we defined earlier as environment variables
189+ env :
190+ MACOS_CERTIFICATE : ${{ secrets.APPLE_CERTIFICATE }}
191+ MACOS_CERTIFICATE_PWD : ${{ secrets.P12_PASSWORD }}
192+ MACOS_CERTIFICATE_NAME : ${{ secrets.APPLE_CERTIFICATE_NAME }}
193+ MACOS_CI_KEYCHAIN_PWD : ${{ secrets.KEYCHAIN_PASSWORD }}
194+ run : scripts/darwin/codesign.sh
195+
196+ - name : Notarize app bundle
197+ if : " ! github.event.pull_request.head.repo.fork " # not running on a fork
198+ env :
199+ PROD_MACOS_NOTARIZATION_APPLE_ID : ${{ secrets.APPLE_ID }}
200+ PROD_MACOS_NOTARIZATION_TEAM_ID : ${{ secrets.TEAM_ID }}
201+ PROD_MACOS_NOTARIZATION_PWD : ${{ secrets.APP_PASSWORD }}
202+ run : scripts/darwin/notarize.sh
203+
204+ - name : Compress artifacts
205+ run : |
206+ cd $(pwd)/build
207+ mkdir -p dist
208+ tar -czvf "dist/DLTViewer-qt6-macos${{ matrix.osversion }}.tgz" -C $(pwd)/install .
209+
210+ - name : Upload artifacts
211+ uses : actions/upload-artifact@v4
212+ if : ${{ success() }}
213+ with :
214+ name : DLTViewer-macos${{ matrix.osversion }}-qt6
215+ path : build/dist/DLTViewer*.tgz
216+
217+
0 commit comments