Files
vedran 1195507448 ci: add macOS signing, notarization and release pipeline
Add ci/macos.Jenkinsfile and supporting scripts for producing
signed and notarized macOS builds of the CLI:

- scripts/sign-and-notarize.sh: signs all Mach-O files in the
  cli-bundle-dir output (dylibs, Qt framework binaries, bin/
  executables) with Developer ID + hardened runtime + timestamp,
  then submits to Apple notary service.
- No stapling since tickets can't be stapled to flat dirs/tarballs,
  Gatekeeper verifies online.

Ref.: https://github.com/logos-co/logos-logoscore-cli/issues/53
2026-08-19 17:02:14 +02:00

31 lines
864 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Usage: ./scripts/create-tarball.sh --dir PATH --output PATH
DIR_PATH=""
OUTPUT_PATH=""
while [[ $# -gt 0 ]]; do
case "$1" in
--dir) DIR_PATH="$2"; shift 2 ;;
--output) OUTPUT_PATH="$2"; shift 2 ;;
*) echo "Unknown option: $1" >&2; exit 1 ;;
esac
done
[[ -n "$DIR_PATH" ]] || { echo "Error: --dir is required" >&2; exit 1; }
[[ -n "$OUTPUT_PATH" ]] || { echo "Error: --output is required" >&2; exit 1; }
[[ -d "$DIR_PATH" ]] || { echo "Error: Directory not found: $DIR_PATH" >&2; exit 1; }
mkdir -p "$(dirname "$OUTPUT_PATH")"
TOP_DIR=$(basename "$OUTPUT_PATH" .tar.gz)
STAGING=$(mktemp -d)
trap "chmod -R u+w '${STAGING}' 2>/dev/null; rm -rf '${STAGING}'" EXIT
cp -a "$DIR_PATH" "${STAGING}/${TOP_DIR}"
tar -czf "$OUTPUT_PATH" -C "$STAGING" "$TOP_DIR"
echo "Tarball created: ${OUTPUT_PATH}"