feat: support darwin arm64 (#10239)

This commit is contained in:
Mya 2021-12-15 16:26:59 -07:00 committed by GitHub
parent c5315a31ec
commit 082c7a552b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 113 additions and 77 deletions

View File

@ -206,7 +206,7 @@ jobs:
- package-build:
type: windows
nightly: << parameters.nightly >>
darwin-package:
darwin-amd64-package:
parameters:
nightly:
type: boolean
@ -214,7 +214,17 @@ jobs:
executor: go-1_17
steps:
- package-build:
type: darwin
type: darwin-amd64
nightly: << parameters.nightly >>
darwin-arm64-package:
parameters:
nightly:
type: boolean
default: false
executor: go-1_17
steps:
- package-build:
type: darwin-arm64
nightly: << parameters.nightly >>
i386-package:
parameters:
@ -453,7 +463,10 @@ workflows:
- 'windows-package':
requires:
- 'test-go-windows'
- 'darwin-package':
- 'darwin-amd64-package':
requires:
- 'test-go-mac'
- 'darwin-arm64-package':
requires:
- 'test-go-mac'
- 'i386-package':
@ -509,7 +522,8 @@ workflows:
- 'amd64-package'
- 'mipsel-package'
- 'mips-package'
- 'darwin-package'
- 'darwin-amd64-package'
- 'darwin-arm64-package'
- 'windows-package'
- 'static-package'
- 'arm64-package'
@ -562,8 +576,13 @@ workflows:
nightly: true
requires:
- 'test-go-windows'
- 'darwin-package':
name: 'darwin-package-nightly'
- 'darwin-amd64-package':
name: 'darwin-amd64-package-nightly'
nightly: true
requires:
- 'test-go-mac'
- 'darwin-arm64-package':
name: 'darwin-arm64-package-nightly'
nightly: true
requires:
- 'test-go-mac'
@ -626,7 +645,8 @@ workflows:
- 'amd64-package-nightly'
- 'mipsel-package-nightly'
- 'mips-package-nightly'
- 'darwin-package-nightly'
- 'darwin-amd64-package-nightly'
- 'darwin-arm64-package-nightly'
- 'windows-package-nightly'
- 'static-package-nightly'
- 'arm64-package-nightly'

View File

@ -284,12 +284,17 @@ windows += windows_i386.zip windows_amd64.zip
.PHONY: windows
windows:
@ echo $(windows)
darwin += darwin_amd64.tar.gz
.PHONY: darwin
darwin:
@ echo $(darwin)
darwin-amd64 += darwin_amd64.tar.gz
.PHONY: darwin-amd64
darwin-amd64:
@ echo $(darwin-amd64)
include_packages := $(mips) $(mipsel) $(arm64) $(amd64) $(static) $(armel) $(armhf) $(s390x) $(ppc64le) $(i386) $(windows) $(darwin)
darwin-arm64 += darwin_arm64.tar.gz
.PHONY: darwin-arm64
darwin-arm64:
@ echo $(darwin-arm64)
include_packages := $(mips) $(mipsel) $(arm64) $(amd64) $(static) $(armel) $(armhf) $(s390x) $(ppc64le) $(i386) $(windows) $(darwin-amd64) $(darwin-arm64)
.PHONY: package
package: $(include_packages)
@ -401,6 +406,9 @@ windows_amd64.zip: export GOARCH := amd64
darwin_amd64.tar.gz: export GOOS := darwin
darwin_amd64.tar.gz: export GOARCH := amd64
darwin_arm64.tar.gz: export GOOS := darwin
darwin_arm64.tar.gz: export GOARCH := arm64
windows_i386.zip: export GOOS := windows
windows_i386.zip: export GOARCH := 386

View File

@ -5,15 +5,16 @@ These builds are generated from the master branch each night:
| DEB | RPM | TAR GZ | ZIP |
| --------------- | --------------- | ------------------------------| --- |
| [amd64.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_amd64.deb) | [aarch64.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.aarch64.rpm) | [darwin_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_darwin_amd64.tar.gz) | [windows_amd64.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_amd64.zip) |
| [arm64.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_arm64.deb) | [armel.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.armel.rpm) | [freebsd_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_amd64.tar.gz) | [windows_i386.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_i386.zip) |
| [armel.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_armel.deb) | [armv6hl.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.armv6hl.rpm) | [freebsd_armv7.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_armv7.tar.gz) | |
| [armhf.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_armhf.deb) | [i386.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.i386.rpm) | [freebsd_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_i386.tar.gz) | |
| [i386.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_i386.deb) | [ppc64le.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.ppc64le.rpm) | [linux_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_amd64.tar.gz) | |
| [mips.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_mips.deb) | [s390x.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.s390x.rpm) | [linux_arm64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_arm64.tar.gz) | |
| [mipsel.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_mipsel.deb) | [x86_64.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.x86_64.rpm) | [linux_armel.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armel.tar.gz) | |
| [ppc64el.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_ppc64el.deb) | | [linux_armhf.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armhf.tar.gz) | |
| [s390x.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_s390x.deb) | | [linux_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_i386.tar.gz) | |
| [amd64.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_amd64.deb) | [aarch64.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.aarch64.rpm) | [darwin_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_darwin_amd64.tar.gz) | [windows_amd64.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_amd64.zip) |
| [arm64.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_arm64.deb) | [armel.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.armel.rpm) | [darwin_arm64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_darwin_arm64.tar.gz) | [windows_i386.zip](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_windows_i386.zip) |
| [armel.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_armel.deb) | [armv6hl.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.armv6hl.rpm) | [freebsd_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_amd64.tar.gz) | |
| [armhf.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_armhf.deb) | [i386.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.i386.rpm) | [freebsd_armv7.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_armv7.tar.gz) | |
| [i386.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_i386.deb) | [ppc64le.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.ppc64le.rpm) | [freebsd_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_i386.tar.gz) | |
| [mips.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_mips.deb) | [s390x.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.s390x.rpm) | [linux_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_amd64.tar.gz) | |
| [mipsel.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_mipsel.deb) | [x86_64.rpm](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly.x86_64.rpm) | [linux_arm64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_arm64.tar.gz) | |
| [ppc64el.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_ppc64el.deb) | | [linux_armel.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armel.tar.gz) | |
| [s390x.deb](https://dl.influxdata.com/telegraf/nightlies/telegraf_nightly_s390x.deb) | | [linux_armhf.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armhf.tar.gz) | |
| | | [linux_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_i386.tar.gz) | |
| | | [linux_mips.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_mips.tar.gz) | |
| | | [linux_mipsel.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_mipsel.tar.gz) | |
| | | [linux_ppc64le.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_ppc64le.tar.gz) | |

View File

@ -4,69 +4,76 @@ sudo security import MacCertificate.p12 -k /Library/Keychains/System.keychain -P
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
amdFile=$(find . -name "*darwin_amd64.tar*")
armFile=$(find . -name "*darwin_arm64.tar*")
macFiles=(${amdFile} ${armFile})
# 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
for tarFile in ${macFiles[@]};
do
# Extract the built mac binary and sign it.
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
# 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
# Reset back out to the main directory.
cd
cd project/dist
extractedFolder=$(find . -name "*telegraf-*" -type d)
# 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
# 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
# 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
# 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
# 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
# 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
if [[ $request_status != "success" ]]; then
echo "Failed to notarize."
exit 1
fi
# 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
# Attach the notarization to the DMG.
xcrun stapler staple "$baseName".dmg
rm -rf Telegraf.app
rm -rf $extractedFolder
ls
# 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
echo "Signed and notarized!"
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 "$tarFile Signed and notarized!"
done