Skip to content

Add marketing-first intro to README #33

Add marketing-first intro to README

Add marketing-first intro to README #33

Workflow file for this run

name: CI
on:
push:
branches: ['**']
tags: ['v*']
pull_request:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build-and-test:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Cache SPM dependencies
uses: actions/cache@v4
with:
path: .build
key: ${{ runner.os }}-spm-${{ hashFiles('Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
- name: Build
run: swift build
- name: Test
run: swift run HeardTests
release:
runs-on: macos-15
if: startsWith(github.ref, 'refs/tags/v')
needs: build-and-test
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Cache SPM dependencies
uses: actions/cache@v4
with:
path: .build
key: ${{ runner.os }}-spm-${{ hashFiles('Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
# Import the Developer ID Application certificate into a temporary keychain.
# security set-key-partition-list is required so codesign can access the key
# non-interactively (without it, codesign hangs waiting for a UI password prompt).
- name: Import Developer ID certificate
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
run: |
KEYCHAIN_PWD="$(openssl rand -hex 16)"
echo "KEYCHAIN_PWD=$KEYCHAIN_PWD" >> "$GITHUB_ENV"
security create-keychain -p "$KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PWD" build.keychain
echo "$APPLE_CERTIFICATE" | base64 --decode > cert.p12
security import cert.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PWD" build.keychain
rm -f cert.p12
- name: Build and notarize DMG
env:
APPLE_DEVELOPER_ID: ${{ secrets.APPLE_DEVELOPER_ID }}
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
APPLE_API_ISSUER_ID: ${{ secrets.APPLE_API_ISSUER_ID }}
run: |
mkdir -p ~/.apple
echo "$APPLE_API_KEY" | base64 --decode > ~/.apple/AuthKey.p8
./scripts/dmg.sh \
--sign "$APPLE_DEVELOPER_ID" \
--api-key-path ~/.apple/AuthKey.p8 \
--api-key-id "$APPLE_API_KEY_ID" \
--api-issuer-id "$APPLE_API_ISSUER_ID" \
--output dist
rm -f ~/.apple/AuthKey.p8
- name: Collect release metadata
id: meta
run: |
VERSION="${GITHUB_REF_NAME#v}"
DMG="dist/Heard-${VERSION}.dmg"
SHA256=$(shasum -a 256 "$DMG" | awk '{print $1}')
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "sha256=${SHA256}" >> "$GITHUB_OUTPUT"
echo "dmg=${DMG}" >> "$GITHUB_OUTPUT"
- name: Upload DMG to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.meta.outputs.dmg }}
generate_release_notes: true
token: ${{ secrets.GITHUB_TOKEN }}
- name: Update Homebrew cask
run: |
VERSION="${{ steps.meta.outputs.version }}"
SHA256="${{ steps.meta.outputs.sha256 }}"
sed -i '' \
-e "s/version \"[^\"]*\"/version \"${VERSION}\"/" \
-e "s/sha256 \"[^\"]*\"/sha256 \"${SHA256}\"/" \
Casks/heard.rb
# Push the cask update back to master. The release commit is already at master HEAD
# (release.sh pushed it before the tag), so this is always a fast-forward.
# [skip ci] prevents this commit from re-triggering the workflow.
- name: Commit and push cask update
env:
GH_PAT: ${{ secrets.GH_PAT }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Casks/heard.rb
git commit -m "Update Homebrew cask to v${{ steps.meta.outputs.version }} [skip ci]"
git remote set-url origin "https://execsumo:${GH_PAT}@github.com/execsumo/Heard.git"
git push origin HEAD:refs/heads/master