Build (macOS) #9
Workflow file for this run
This file contains hidden or 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 (macOS) | |
| on: | |
| workflow_call: | |
| inputs: | |
| NIGHTLY: | |
| default: false | |
| type: boolean | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| name: ${{ matrix.os }} (${{ matrix.bundle }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| bundle: [SQLCipher, SQLite] | |
| os: [macos-14] | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: 10.13 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| # Uninstall Mono, which is included by default in GitHub-hosted macOS runners, | |
| # as it interferes with referencing our own compiled SQLite libraries. | |
| - name: Uninstall Mono | |
| run: | | |
| sudo rm -rfv /Library/Frameworks/Mono.framework | |
| sudo pkgutil --forget com.xamarin.mono-MDK.pkg | |
| sudo rm -v /etc/paths.d/mono-commands | |
| - name: Install dependencies | |
| run: | | |
| brew tap sqlitebrowser/tap | |
| brew install sqlb-qt@5 sqlb-sqlcipher sqlb-sqlite ninja | |
| npm install -g appdmg | |
| - name: Configure build | |
| run: | | |
| if [ "${{ inputs.NIGHTLY }}" = "true" ]; then | |
| if [ "${{ matrix.bundle }}" = "SQLCipher" ]; then | |
| sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher Nightly"/' config/platform_apple.cmake | |
| else | |
| sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite Nightly"/' config/platform_apple.cmake | |
| fi | |
| else | |
| if [ "${{ matrix.bundle }}" = "SQLCipher" ]; then | |
| sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLCipher-dev-'$(git rev-parse --short --verify HEAD)'"/' config/platform_apple.cmake | |
| else | |
| sed -i "" 's/"DB Browser for SQLite"/"DB Browser for SQLite-dev-'$(git rev-parse --short --verify HEAD)'"/' config/platform_apple.cmake | |
| fi | |
| fi | |
| mkdir -v build && cd build | |
| cmake -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_CXX_STANDARD=14 \ | |
| -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ | |
| -DcustomTap=1 \ | |
| -DENABLE_TESTING=ON \ | |
| -Dsqlcipher=${{ matrix.bundle == 'SQLCipher' }} .. | |
| - name: Build | |
| working-directory: ./build | |
| run: ninja | |
| - name: Tests | |
| working-directory: ./build | |
| run: ninja test | |
| - name: Build Extension | |
| run: clang -I /opt/homebrew/opt/sqlb-sqlite/include -L /opt/homebrew/opt/sqlb-sqlite/lib -fno-common -dynamiclib src/extensions/extension-formats.c | |
| - if: github.event_name != 'pull_request' | |
| name: Notarization | |
| id: notarization | |
| run: chmod +x ./installer/macos/notarize.sh && ./installer/macos/notarize.sh | |
| env: | |
| APPLE_ID: ${{ secrets.MACOS_CODESIGN_APPLE_ID }} | |
| APPLE_PW: ${{ secrets.MACOS_CODESIGN_APPLE_PW }} | |
| DEV_ID: ${{ secrets.MACOS_CODESIGN_DEV_ID }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| KEYCHAIN_PW: ${{ secrets.MACOS_CODESIGN_KEYCHAIN_PW }} | |
| P12: ${{ secrets.MACOS_CODESIGN_P12 }} | |
| P12_PW: ${{ secrets.MACOS_CODESIGN_P12_PW }} | |
| NIGHTLY: ${{ inputs.NIGHTLY || false }} | |
| SQLCIPHER: ${{ matrix.bundle == 'SQLCipher'}} | |
| TEAM_ID: ${{ secrets.MACOS_CODESIGN_TEAM_ID }} | |
| - if: steps.notarization.conclusion != 'skipped' | |
| name: Clear Keychain | |
| run: security delete-keychain $RUNNER_TEMP/app-signing.keychain-db | |
| continue-on-error: true | |
| - if: github.event_name != 'pull_request' && github.workflow != 'Build (macOS)' | |
| name: Upload artifacts | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: build-artifacts-${{ matrix.os }}-${{ matrix.bundle }} | |
| path: DB.Browser.for.*.dmg | |
| retention-days: 1 | |
| - if: github.event_name == 'workflow_dispatch' && github.workflow == 'Build (macOS)' | |
| name: Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: DB.Browser.for.*.dmg | |
| prerelease: true | |
| tag_name: ${{ github.sha }}-macos | |
| - name: Summary | |
| run: | | |
| QT_VERSION=$($(brew --prefix sqlb-qt@5)/bin/qmake --version | awk '/Using Qt version/ {print $4}') | |
| if [ "${{ matrix.bundle }}" = "SQLCipher" ]; then | |
| OPENSSL_VERSION=$($(brew --prefix sqlb-openssl@3)/bin/openssl version | awk '{print $2}') | |
| SQLCIPHER_VERSION=$($(brew --prefix sqlb-sqlcipher)/bin/sqlcipher ":memory:" "PRAGMA cipher_version;" | awk '{print $1}') | |
| SQLITE_VERSION="Not applicable" | |
| else | |
| OPENSSL_VERSION="Not applicable" | |
| SQLCIPHER_VERSION="Not applicable" | |
| SQLITE_VERSION=$($(brew --prefix sqlb-sqlite)/bin/sqlite3 --version | awk '{print $1}') | |
| fi | |
| echo "## Libaries used" >> $GITHUB_STEP_SUMMARY | |
| echo "OpenSSL: $OPENSSL_VERSION, Qt: $QT_VERSION, SQLCipher: $SQLCIPHER_VERSION, SQLite: $SQLITE_VERSION" >> $GITHUB_STEP_SUMMARY |