diff --git a/.env b/.env
index 9eb149b..6ee8f2b 100644
--- a/.env
+++ b/.env
@@ -10,3 +10,5 @@ APPLE_ID_PASSWORD="op://Apple/3apcadvvcojjbpxnd7m5fgh5wm/password"
APP_PROF="op://Apple/Provisioning Profiles/profiles/application_base64"
EXT_PROF="op://Apple/Provisioning Profiles/profiles/extension_base64"
+
+SPARKLE_PRIVATE_KEY="op://Apple/Private key for signing Sparkle updates/notesPlain"
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c512991..adbc130 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -56,6 +56,7 @@ jobs:
APPLE_ID_PASSWORD: ${{ secrets.APPLE_NOTARYTOOL_PASSWORD }}
APP_PROF: ${{ secrets.CODER_DESKTOP_APP_PROVISIONPROFILE_B64 }}
EXT_PROF: ${{ secrets.CODER_DESKTOP_EXTENSION_PROVISIONPROFILE_B64 }}
+ SPARKLE_PRIVATE_KEY: ${{ secrets.SPARKLE_PRIVATE_KEY }}
run: make release
# Upload as artifact in dry-run mode
diff --git a/Coder-Desktop/Coder-Desktop/Info.plist b/Coder-Desktop/Coder-Desktop/Info.plist
index 4712604..c1bf929 100644
--- a/Coder-Desktop/Coder-Desktop/Info.plist
+++ b/Coder-Desktop/Coder-Desktop/Info.plist
@@ -31,5 +31,7 @@
NEMachServiceName
$(TeamIdentifierPrefix)com.coder.Coder-Desktop.VPN
+ SUPublicEDKey
+ Ae2oQLTcx89/a73XrpOt+IVvqdo+fMTjo3UKEm77VdA=
diff --git a/Coder-Desktop/project.yml b/Coder-Desktop/project.yml
index 9455a44..224add8 100644
--- a/Coder-Desktop/project.yml
+++ b/Coder-Desktop/project.yml
@@ -129,6 +129,9 @@ packages:
URLRouting:
url: https://github.com/pointfreeco/swift-url-routing
revision: 09b155d
+ Sparkle:
+ url: https://github.com/sparkle-project/Sparkle
+ exactVersion: 2.7.0
targets:
@@ -202,6 +205,7 @@ targets:
- package: LaunchAtLogin
- package: SDWebImageSwiftUI
- package: SDWebImageSVGCoder
+ - package: Sparkle
scheme:
testPlans:
- path: Coder-Desktop.xctestplan
diff --git a/Makefile b/Makefile
index a21b756..e50b060 100644
--- a/Makefile
+++ b/Makefile
@@ -106,7 +106,8 @@ release: $(KEYCHAIN_FILE) ## Create a release build of Coder Desktop
--app-prof-path "$$APP_PROF_PATH" \
--ext-prof-path "$$EXT_PROF_PATH" \
--version $(MARKETING_VERSION) \
- --keychain "$(APP_SIGNING_KEYCHAIN)"; \
+ --keychain "$(APP_SIGNING_KEYCHAIN)" \
+ --sparkle-private-key "$$SPARKLE_PRIVATE_KEY"; \
rm "$$APP_PROF_PATH" "$$EXT_PROF_PATH"
.PHONY: fmt
diff --git a/scripts/build.sh b/scripts/build.sh
index de6f34a..f6e537a 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -16,15 +16,17 @@ APP_PROF_PATH=${APP_PROF_PATH:-""}
EXT_PROF_PATH=${EXT_PROF_PATH:-""}
KEYCHAIN=${KEYCHAIN:-""}
VERSION=${VERSION:-""}
+SPARKLE_PRIVATE_KEY=${SPARKLE_PRIVATE_KEY:-""}
# Function to display usage
usage() {
echo "Usage: $0 [--app-prof-path ] [--ext-prof-path ] [--keychain ]"
- echo " --app-prof-path Set the APP_PROF_PATH variable"
- echo " --ext-prof-path Set the EXT_PROF_PATH variable"
- echo " --keychain Set the KEYCHAIN variable"
- echo " --version Set the VERSION variable to fetch and generate the cask file for"
- echo " -h, --help Display this help message"
+ echo " --app-prof-path Set the APP_PROF_PATH variable"
+ echo " --ext-prof-path Set the EXT_PROF_PATH variable"
+ echo " --keychain Set the KEYCHAIN variable"
+ echo " --sparkle-private-key Set the SPARKLE_PRIVATE_KEY variable"
+ echo " --version Set the VERSION variable to fetch and generate the cask file for"
+ echo " -h, --help Display this help message"
}
# Parse command line arguments
@@ -42,6 +44,10 @@ while [[ "$#" -gt 0 ]]; do
KEYCHAIN="$2"
shift 2
;;
+ --sparkle-private-key)
+ SPARKLE_PRIVATE_KEY="$2"
+ shift 2
+ ;;
--version)
VERSION="$2"
shift 2
@@ -59,7 +65,7 @@ while [[ "$#" -gt 0 ]]; do
done
# Check if required variables are set
-if [[ -z "$APP_PROF_PATH" || -z "$EXT_PROF_PATH" || -z "$KEYCHAIN" ]]; then
+if [[ -z "$APP_PROF_PATH" || -z "$EXT_PROF_PATH" || -z "$KEYCHAIN" || -z "$SPARKLE_PRIVATE_KEY" ]]; then
echo "Missing required values"
echo "APP_PROF_PATH: $APP_PROF_PATH"
echo "EXT_PROF_PATH: $EXT_PROF_PATH"
@@ -195,6 +201,9 @@ xcrun notarytool submit "$PKG_PATH" \
xcrun stapler staple "$PKG_PATH"
xcrun stapler staple "$BUILT_APP_PATH"
+signature=$(echo "$SPARKLE_PRIVATE_KEY" | ~/Library/Developer/Xcode/DerivedData/Coder-Desktop-*/SourcePackages/artifacts/sparkle/Sparkle/bin/sign_update "$PKG_PATH" --ed-key-file -)
+echo "$signature" >"$PKG_PATH.sig"
+
# Add dsym to build artifacts
(cd "$ARCHIVE_PATH/dSYMs" && zip -9 -r --symlinks "$DSYM_ZIPPED_PATH" ./*)