Something went wrong. Try again.
[mirror] A local-first desktop markdown writer with grammar checking, at proto integration, and more github.com/stormlightlabs/writer/releases
atproto codemirror markdown tauri rust react
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154name: Release
on: push: tags: - 'v*' workflow_dispatch:
jobs: create-release: permissions: contents: write runs-on: ubuntu-latest outputs: release-id: ${{ steps.create.outputs.id }} steps: - uses: actions/checkout@v4
- name: Create draft release id: create uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} name: 'Commonplace ${{ github.ref_name }}' body: | See the assets to download and install this version.
macOS artifacts are signed and notarized by the release workflow. draft: true prerelease: false
build: needs: create-release permissions: contents: write strategy: fail-fast: false matrix: include: - platform: macos-latest args: '--target aarch64-apple-darwin' - platform: macos-latest args: '--target x86_64-apple-darwin' - platform: ubuntu-22.04 args: '' - platform: windows-latest args: ''
runs-on: ${{ matrix.platform }}
steps: - uses: actions/checkout@v4
- name: Install pnpm uses: pnpm/action-setup@v4 with: run_install: false
- name: Setup Node uses: actions/setup-node@v4 with: node-version: lts/* cache: pnpm
- name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- name: Install system dependencies (Ubuntu) if: matrix.platform == 'ubuntu-22.04' run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install frontend dependencies run: pnpm install
- name: Validate Apple signing secrets if: matrix.platform == 'macos-latest' env: APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} run: | missing=0 for var in APPLE_CERTIFICATE APPLE_CERTIFICATE_PASSWORD APPLE_ID APPLE_PASSWORD APPLE_TEAM_ID; do if [ -z "${!var}" ]; then echo "::error::Missing required macOS signing secret: $var" missing=1 fi done
if [ "$missing" -ne 0 ]; then exit 1 fi
- name: Import Apple Developer Certificate if: matrix.platform == 'macos-latest' env: APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} run: | CERT_PATH="$RUNNER_TEMP/apple-certificate.p12" KEYCHAIN_PATH="$RUNNER_TEMP/app-signing.keychain-db" KEYCHAIN_PASSWORD="$(uuidgen)"
printf '%s' "$APPLE_CERTIFICATE" | base64 --decode > "$CERT_PATH"
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" security default-keychain -s "$KEYCHAIN_PATH" security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" security set-keychain-settings -lut 3600 "$KEYCHAIN_PATH" security import "$CERT_PATH" -k "$KEYCHAIN_PATH" -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
echo "APPLE_KEYCHAIN_PATH=$KEYCHAIN_PATH" >> "$GITHUB_ENV" security find-identity -v -p codesigning "$KEYCHAIN_PATH"
- name: Resolve Apple signing identity if: matrix.platform == 'macos-latest' run: | CERT_INFO="$(security find-identity -v -p codesigning "$APPLE_KEYCHAIN_PATH" | grep 'Developer ID Application' | head -n 1 || true)"
if [ -z "$CERT_INFO" ]; then echo "::error::No Developer ID Application signing identity found in the imported certificate." security find-identity -v -p codesigning "$APPLE_KEYCHAIN_PATH" exit 1 fi
CERT_ID="$(printf '%s\n' "$CERT_INFO" | awk -F'"' '{print $2}')" echo "APPLE_SIGNING_IDENTITY=$CERT_ID" >> "$GITHUB_ENV" echo "Using signing identity: $CERT_ID"
- name: Build and release uses: tauri-apps/tauri-action@44a5bf1eaeeebdabfd8951645f567c83b0ae02a3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPLE_SIGNING_IDENTITY: ${{ env.APPLE_SIGNING_IDENTITY }} with: releaseId: ${{ needs.create-release.outputs.release-id }} args: ${{ matrix.args }}
- name: Cleanup Apple keychain if: always() && matrix.platform == 'macos-latest' && env.APPLE_KEYCHAIN_PATH != '' run: security delete-keychain "$APPLE_KEYCHAIN_PATH"