Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 26 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,9 +181,33 @@ jobs:
- name: Build CLI
if: matrix.target != 'aarch64-unknown-linux-gnu'
run: cargo build --release --target ${{ matrix.target }} --bin openfang
- name: Ad-hoc codesign CLI binary (macOS)
- name: Import macOS signing certificate
if: runner.os == 'macOS'
env:
MAC_CERT_BASE64: ${{ secrets.MAC_CERT_BASE64 }}
MAC_CERT_PASSWORD: ${{ secrets.MAC_CERT_PASSWORD }}
run: |
echo "$MAC_CERT_BASE64" | base64 --decode > $RUNNER_TEMP/certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
KEYCHAIN_PASSWORD=$(openssl rand -base64 32)
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
security import $RUNNER_TEMP/certificate.p12 -P "$MAC_CERT_PASSWORD" \
-A -t cert -f pkcs12 -k "$KEYCHAIN_PATH"
security list-keychain -d user -s "$KEYCHAIN_PATH"
security set-key-partition-list -S apple-tool:,apple:,codesign: \
-s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
IDENTITY=$(security find-identity -v -p codesigning "$KEYCHAIN_PATH" \
| grep "Developer ID Application" | head -1 | awk -F'"' '{print $2}')
echo "APPLE_SIGNING_IDENTITY=$IDENTITY" >> $GITHUB_ENV
rm -f $RUNNER_TEMP/certificate.p12
- name: Codesign CLI binary (macOS)
if: runner.os == 'macOS'
run: codesign --force --sign - target/${{ matrix.target }}/release/openfang
run: |
codesign --force --sign "$APPLE_SIGNING_IDENTITY" \
--timestamp --options runtime \
target/${{ matrix.target }}/release/openfang
- name: Package (Unix)
if: matrix.archive == 'tar.gz'
run: |
Expand Down
12 changes: 9 additions & 3 deletions scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,15 @@ install() {
tar xzf "$ARCHIVE" -C "$INSTALL_DIR"
chmod +x "$INSTALL_DIR/openfang"

# Ad-hoc codesign on macOS (prevents SIGKILL on Apple Silicon)
if [ "$OS" = "darwin" ] && command -v codesign &>/dev/null; then
codesign --force --sign - "$INSTALL_DIR/openfang" 2>/dev/null || true
# macOS: strip quarantine/provenance attrs and re-sign for Apple Silicon
if [ "$OS" = "darwin" ]; then
xattr -cr "$INSTALL_DIR/openfang" 2>/dev/null || true
if command -v codesign &>/dev/null; then
if ! codesign --force --sign - "$INSTALL_DIR/openfang" 2>&1; then
echo " Warning: codesign failed. Run manually:"
echo " codesign --force --sign - \"$INSTALL_DIR/openfang\""
fi
fi
fi

# Add to PATH — detect the user's login shell
Expand Down