Bump version to v0.1.8 #26
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 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "v*" | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| macos: | |
| name: Test and Package | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Show Swift Version | |
| run: swift --version | |
| - name: Test | |
| run: swift test | |
| - name: Build Debug | |
| run: swift build | |
| - name: Verify Product Preview | |
| run: | | |
| ./scripts/capture-product-preview.swift | |
| bytes="$(stat -f%z docs/assets/product-preview.png)" | |
| if [[ "$bytes" -le 10000 ]]; then | |
| echo "Product preview PNG is unexpectedly small: ${bytes} bytes" >&2 | |
| exit 1 | |
| fi | |
| dimensions="$(sips -g pixelWidth -g pixelHeight docs/assets/product-preview.png)" | |
| echo "$dimensions" | |
| grep -q "pixelWidth: 1200" <<< "$dimensions" | |
| grep -q "pixelHeight: 820" <<< "$dimensions" | |
| - name: Resolve Release Signing | |
| id: signing | |
| env: | |
| APPLE_CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }} | |
| APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
| APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} | |
| DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| TEAM_ID: ${{ secrets.TEAM_ID }} | |
| APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| required=( | |
| APPLE_CERTIFICATE_BASE64 | |
| APPLE_CERTIFICATE_PASSWORD | |
| APPLE_KEYCHAIN_PASSWORD | |
| DEVELOPER_ID_APPLICATION | |
| APPLE_ID | |
| TEAM_ID | |
| APP_SPECIFIC_PASSWORD | |
| ) | |
| present=0 | |
| for name in "${required[@]}"; do | |
| if [[ -n "${!name:-}" ]]; then | |
| present=$((present + 1)) | |
| fi | |
| done | |
| if [[ "$present" -eq "${#required[@]}" ]]; then | |
| echo "signing_ready=true" >> "$GITHUB_OUTPUT" | |
| elif [[ "$present" -eq 0 ]]; then | |
| echo "signing_ready=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "Release signing is partially configured. Provide all Apple signing and notarization secrets, or remove them all for ad-hoc builds." >&2 | |
| exit 1 | |
| fi | |
| - name: Import Developer ID Certificate | |
| if: github.ref_type == 'tag' && steps.signing.outputs.signing_ready == 'true' | |
| env: | |
| APPLE_CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }} | |
| APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
| APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| CERTIFICATE_PATH="$RUNNER_TEMP/developer-id.p12" | |
| KEYCHAIN_PATH="$RUNNER_TEMP/app-signing.keychain-db" | |
| echo "$APPLE_CERTIFICATE_BASE64" | base64 --decode > "$CERTIFICATE_PATH" | |
| security create-keychain -p "$APPLE_KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" | |
| security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" | |
| security unlock-keychain -p "$APPLE_KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" | |
| security import "$CERTIFICATE_PATH" -P "$APPLE_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k "$KEYCHAIN_PATH" | |
| security list-keychain -d user -s "$KEYCHAIN_PATH" | |
| security default-keychain -s "$KEYCHAIN_PATH" | |
| security set-key-partition-list -S apple-tool:,apple: -s -k "$APPLE_KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" | |
| - name: Package App | |
| env: | |
| DEVELOPER_ID_APPLICATION: ${{ secrets.DEVELOPER_ID_APPLICATION }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| TEAM_ID: ${{ secrets.TEAM_ID }} | |
| APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| if [[ "${GITHUB_REF_TYPE:-}" == "tag" ]]; then | |
| VERSION="$GITHUB_REF_NAME" | |
| else | |
| VERSION="v0.1.8" | |
| fi | |
| if [[ "${GITHUB_REF_TYPE:-}" == "tag" && "${{ steps.signing.outputs.signing_ready }}" == "true" ]]; then | |
| VERSION="$VERSION" \ | |
| SIGN_IDENTITY="$DEVELOPER_ID_APPLICATION" \ | |
| APPLE_ID="$APPLE_ID" \ | |
| TEAM_ID="$TEAM_ID" \ | |
| APP_SPECIFIC_PASSWORD="$APP_SPECIFIC_PASSWORD" \ | |
| ./scripts/notarize-release.sh | |
| elif [[ "${GITHUB_REF_TYPE:-}" == "tag" ]]; then | |
| echo "Tagged releases require Apple signing and notarization secrets." >&2 | |
| exit 1 | |
| else | |
| VERSION="$VERSION" ./scripts/package-release.sh | |
| fi | |
| VERSION="$VERSION" ./scripts/verify-release.sh | |
| - name: Upload App Archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Sub2APIStatusBar-macOS | |
| path: | | |
| dist/*.zip | |
| dist/*.dmg | |
| dist/*.sha256 | |
| if-no-files-found: error |