Manual Release #105
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: 'Manual Release' | |
| on: | |
| workflow_dispatch: | |
| jobs: | |
| publish-studio: | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # There is a bug on Ubuntu 22.04 (ubuntu-latest) regarding stripping a binary for a different | |
| # architecture. Since we include both x86_64 and arm64 in linux a solution is to use ubuntu 20.04 | |
| # https://github.com/electron/forge/issues/3102 | |
| # https://github.com/electron/forge/issues/3701 | |
| platform: [macos-latest, windows-latest, ubuntu-20.04] | |
| runs-on: ${{ matrix.platform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| # try earlier python version for appdmg | |
| # https://github.com/electron/forge/issues/3371#issuecomment-2105195302 | |
| - name: Install Python 3.11.4 | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.11.4' | |
| - name: install dependencies | |
| run: npm ci | |
| - name: setup macos keychain | |
| if: startsWith(matrix.platform, 'macos-') | |
| run: | | |
| echo "$APPLE_API_KEY" > ./apple_api_key.p8 | |
| echo $APPLE_CERTIFICATE_P12 | base64 --decode > certificate.p12 | |
| security create-keychain -p "$CERTIFICATE_PASSWORD" build.keychain | |
| security default-keychain -s build.keychain | |
| security unlock-keychain -p "$CERTIFICATE_PASSWORD" build.keychain | |
| security import certificate.p12 -k build.keychain -P "$CERTIFICATE_PASSWORD" -T /usr/bin/codesign | |
| security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$CERTIFICATE_PASSWORD" build.keychain | |
| env: | |
| APPLE_CERTIFICATE_P12: ${{ secrets.APPLE_CERTIFICATE_P12 }} | |
| CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }} | |
| APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} | |
| - name: setup windows certificate | |
| if: startsWith(matrix.platform, 'windows-') | |
| run: | | |
| $bytes = [Convert]::FromBase64String("${{ secrets.WINDOWS_CERTIFICATE }}") | |
| [IO.File]::WriteAllBytes("certificate.pfx", $bytes) | |
| env: | |
| WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }} | |
| - name: publish macOS | |
| if: startsWith(matrix.platform, 'macos-') | |
| env: | |
| NODE_OPTIONS: '--max_old_space_size=8192' | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # notarization | |
| APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} | |
| APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} | |
| APPLE_API_KEY: ./apple_api_key.p8 | |
| # sentry integration | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| # sentry vite plugin integration during build | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ vars.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }} | |
| run: | | |
| # on macos we also build the x64 app separately | |
| npm run publish -- --arch=x64 | |
| npm run publish | |
| - name: publish Windows | |
| if: startsWith(matrix.platform, 'windows-') | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # windows cert | |
| WINDOWS_CERTIFICATE_PATH: ./certificate.pfx | |
| WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }} | |
| # sentry integration | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| # sentry vite plugin integration during build | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ vars.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }} | |
| run: npm run publish | |
| - name: publish Linux | |
| if: startsWith(matrix.platform, 'ubuntu-') | |
| env: | |
| NODE_OPTIONS: '--max_old_space_size=8192' | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # sentry integration | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| # sentry vite plugin integration during build | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ vars.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }} | |
| run: | | |
| sudo apt install -y rpm | |
| npm run publish | |
| npm run publish -- --arch=arm64 | |
| - name: cleanup macos certificates | |
| if: startsWith(matrix.platform, 'macos-') | |
| run: | | |
| rm apple_api_key.p8 | |
| rm certificate.p12 | |
| - name: cleanup windows certificates | |
| if: startsWith(matrix.platform, 'windows-') | |
| run: | | |
| del certificate.pfx |