forked from influxdata/telegraf
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Mac Packaging / Notarization (influxdata#8878)
* initial commit * Updated config.yml * Update mac-signing.sh * Updated config.yml * Updated config.yml * Keep the .tar.gz artifact along with the signed and notarized DMG * change to test temporarily * for testing * Updated config.yml * Update config.yml * Update config.yml
- Loading branch information
1 parent
74d4836
commit b6f043c
Showing
5 changed files
with
133 additions
and
1 deletion.
There are no files selected for viewing
This file contains 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
Binary file not shown.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>CFBundleExecutable</key> | ||
<string>telegraf_entry_mac</string> | ||
<key>CFBundleIconFile</key> | ||
<string>icon.icns</string> | ||
<key>CFBundleIdentifier</key> | ||
<string>com.influxdata.telegraf</string> | ||
<key>NSHighResolutionCapable</key> | ||
<true/> | ||
<key>LSUIElement</key> | ||
<true/> | ||
</dict> | ||
</plist> |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Acquire the necessary certificates. | ||
base64 -D -o MacCertificate.p12 <<< $MacCertificate | ||
sudo security import MacCertificate.p12 -k /Library/Keychains/System.keychain -P $MacCertificatePassword -A | ||
base64 -D -o AppleSigningAuthorityCertificate.cer <<< $AppleSigningAuthorityCertificate | ||
sudo security import AppleSigningAuthorityCertificate.cer -k '/Library/Keychains/System.keychain' -A | ||
|
||
# Extract the built mac binary and sign it. | ||
cd dist | ||
tarFile=$(find . -name "*darwin_amd64.tar*") | ||
tar -xzvf $tarFile | ||
baseName=$(basename $tarFile .tar.gz) | ||
cd $(find . -name "*telegraf-*" -type d) | ||
cd usr/bin | ||
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime telegraf | ||
codesign -v telegraf | ||
|
||
# Reset back out to the main directory. | ||
cd | ||
cd project/dist | ||
extractedFolder=$(find . -name "*telegraf-*" -type d) | ||
|
||
# Sign the 'telegraf entry' script, which is required to open Telegraf upon opening the .app bundle. | ||
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime ../scripts/telegraf_entry_mac | ||
codesign -v ../scripts/telegraf_entry_mac | ||
|
||
# Create the .app bundle. | ||
mkdir Telegraf | ||
cd Telegraf | ||
mkdir Contents | ||
cd Contents | ||
mkdir MacOS | ||
mkdir Resources | ||
cd ../.. | ||
cp ../info.plist Telegraf/Contents | ||
cp -R "$extractedFolder"/ Telegraf/Contents/Resources | ||
cp ../scripts/telegraf_entry_mac Telegraf/Contents/MacOS | ||
cp ../assets/icon.icns Telegraf/Contents/Resources | ||
chmod +x Telegraf/Contents/MacOS/telegraf_entry_mac | ||
mv Telegraf Telegraf.app | ||
|
||
# Sign the entire .app bundle, and wrap it in a DMG. | ||
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime --deep --force Telegraf.app | ||
hdiutil create -size 500m -volname Telegraf -srcfolder Telegraf.app "$baseName".dmg | ||
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime "$baseName".dmg | ||
|
||
# Send the DMG to be notarized. | ||
uuid=$(xcrun altool --notarize-app --primary-bundle-id "com.influxdata.telegraf" --username "$AppleUsername" --password "$ApplePassword" --file "$baseName".dmg | awk '/RequestUUID/ { print $NF; }') | ||
echo $uuid | ||
if [[ $uuid == "" ]]; then | ||
echo "Could not upload for notarization." | ||
exit 1 | ||
fi | ||
|
||
# Wait until the status returns something other than 'in progress'. | ||
request_status="in progress" | ||
while [[ "$request_status" == "in progress" ]]; do | ||
sleep 10 | ||
request_status=$(xcrun altool --notarization-info $uuid --username "$AppleUsername" --password "$ApplePassword" 2>&1 | awk -F ': ' '/Status:/ { print $2; }' ) | ||
done | ||
|
||
if [[ $request_status != "success" ]]; then | ||
echo "Failed to notarize." | ||
exit 1 | ||
fi | ||
|
||
# Attach the notarization to the DMG. | ||
xcrun stapler staple "$baseName".dmg | ||
rm -rf Telegraf.app | ||
rm -rf $extractedFolder | ||
ls | ||
|
||
echo "Signed and notarized!" |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
currentDir="$( cd "$(dirname "$0")" ; pwd -P )" | ||
|
||
if [[ $currentDir == *"AppTranslocation"* || $currentDir == *"Volumes"* ]]; then | ||
osascript -e "display alert \"Please copy Telegraf to somewhere on your machine. It can't be run from the image.\" as critical" | ||
else | ||
cd $currentDir | ||
osascript<<EOF | ||
tell application "Terminal" | ||
do script "$currentDir/../Resources/usr/bin/telegraf $@" | ||
end tell | ||
EOF | ||
fi |