Update build.yml #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: [push, pull_request] | |
jobs: | |
macos: | |
name: MacOS | |
runs-on: macos-14 | |
steps: | |
- name: Check for Secret availability | |
id: secret-check | |
run: | | |
if [ "${{ secrets.BUILD_CERTIFICATE_BASE64 }}" != '' ]; then | |
echo "available=true" >> $GITHUB_OUTPUT; | |
else | |
echo "available=false" >> $GITHUB_OUTPUT; | |
fi | |
- name: Install conda dependencies | |
id: setup-micromamba | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: gqrx | |
create-args: >- | |
c-compiler | |
cxx-compiler | |
cmake | |
make | |
pkg-config | |
gnuradio-core | |
gnuradio-osmosdr | |
libboost-headers | |
mesa-libgl-devel-cos6-x86_64 | |
pybind11 | |
qt6-main | |
soapysdr-module-lms7 | |
soapysdr-module-plutosdr | |
soapysdr-module-remote | |
volk | |
- name: Install dependencies | |
run: | | |
uname -a | |
which cmake | |
- name: Install Apple certificate | |
if: ${{ steps.secret-check.outputs.available == 'true' }} | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
run: | | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 -d -o $CERTIFICATE_PATH | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Configure | |
shell: micromamba-shell {0} | |
run: mkdir build && cd build && cmake -DCMAKE_PREFIX_PATH=${{ steps.setup-micromamba.outputs.environment-path }} .. | |
- name: Compile | |
shell: micromamba-shell {0} | |
working-directory: build | |
run: make -j4 && otool -l ./src/gqrx | |
- name: Build app bundle | |
shell: micromamba-shell {0} | |
run: ./macos_bundle.sh ${{ steps.secret-check.outputs.available }} | |
- name: Notarize app bundle | |
if: ${{ steps.secret-check.outputs.available == 'true' }} | |
env: | |
NOTARIZE_USERNAME: ${{ secrets.NOTARIZE_USERNAME }} | |
NOTARIZE_TEAM_ID: ${{ secrets.NOTARIZE_TEAM_ID }} | |
NOTARIZE_PASSWORD: ${{ secrets.NOTARIZE_PASSWORD }} | |
run: | | |
ditto -c -k --keepParent Gqrx.app Gqrx.zip | |
xcrun notarytool submit Gqrx.zip --apple-id "$NOTARIZE_USERNAME" --team-id "$NOTARIZE_TEAM_ID" --password "$NOTARIZE_PASSWORD" --wait | |
- name: Staple app bundle | |
if: ${{ steps.secret-check.outputs.available == 'true' }} | |
run: xcrun stapler staple --verbose Gqrx.app | |
- name: Create DMG | |
run: | | |
GQRX_VERSION=$(<build/version.txt) | |
hdiutil create Gqrx.dmg -srcfolder Gqrx.app -format UDZO -fs HFS+ -volname "Gqrx $GQRX_VERSION" | |
- name: Notarize DMG | |
if: ${{ steps.secret-check.outputs.available == 'true' }} | |
env: | |
NOTARIZE_USERNAME: ${{ secrets.NOTARIZE_USERNAME }} | |
NOTARIZE_TEAM_ID: ${{ secrets.NOTARIZE_TEAM_ID }} | |
NOTARIZE_PASSWORD: ${{ secrets.NOTARIZE_PASSWORD }} | |
run: | | |
xcrun notarytool submit Gqrx.dmg --apple-id "$NOTARIZE_USERNAME" --team-id "$NOTARIZE_TEAM_ID" --password "$NOTARIZE_PASSWORD" --wait | |
- name: Staple DMG | |
if: ${{ steps.secret-check.outputs.available == 'true' }} | |
run: xcrun stapler staple --verbose Gqrx.dmg | |
- name: Rename DMG | |
run: | | |
GQRX_VERSION=$(<build/version.txt) | |
mv Gqrx.dmg Gqrx-$GQRX_VERSION.dmg | |
- name: Save artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: gqrx-macos-${{ github.run_id }} | |
path: Gqrx-*.dmg |