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

View File

@ -284,12 +284,17 @@ windows += windows_i386.zip windows_amd64.zip
.PHONY: windows .PHONY: windows
windows: windows:
@ echo $(windows) @ echo $(windows)
darwin += darwin_amd64.tar.gz darwin-amd64 += darwin_amd64.tar.gz
.PHONY: darwin .PHONY: darwin-amd64
darwin: darwin-amd64:
@ echo $(darwin) @ 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 .PHONY: package
package: $(include_packages) 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 GOOS := darwin
darwin_amd64.tar.gz: export GOARCH := amd64 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 GOOS := windows
windows_i386.zip: export GOARCH := 386 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 | | 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) | | [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) | | [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_armv7.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_armv7.tar.gz) | | | [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_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_freebsd_i386.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) | [linux_amd64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_amd64.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_arm64.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_arm64.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_armel.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armel.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_armhf.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_armhf.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_i386.tar.gz](https://dl.influxdata.com/telegraf/nightlies/telegraf-nightly_linux_i386.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_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_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) | | | | | [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 base64 -D -o AppleSigningAuthorityCertificate.cer <<< $AppleSigningAuthorityCertificate
sudo security import AppleSigningAuthorityCertificate.cer -k '/Library/Keychains/System.keychain' -A sudo security import AppleSigningAuthorityCertificate.cer -k '/Library/Keychains/System.keychain' -A
# Extract the built mac binary and sign it.
cd dist cd dist
tarFile=$(find . -name "*darwin_amd64.tar*") amdFile=$(find . -name "*darwin_amd64.tar*")
tar -xzvf $tarFile armFile=$(find . -name "*darwin_arm64.tar*")
baseName=$(basename $tarFile .tar.gz) macFiles=(${amdFile} ${armFile})
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. for tarFile in ${macFiles[@]};
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime ../scripts/telegraf_entry_mac do
codesign -v ../scripts/telegraf_entry_mac # 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. # Reset back out to the main directory.
mkdir Telegraf cd
cd Telegraf cd project/dist
mkdir Contents extractedFolder=$(find . -name "*telegraf-*" -type d)
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. # 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 --deep --force Telegraf.app codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime ../scripts/telegraf_entry_mac
hdiutil create -size 500m -volname Telegraf -srcfolder Telegraf.app "$baseName".dmg codesign -v ../scripts/telegraf_entry_mac
codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime "$baseName".dmg
# Send the DMG to be notarized. # Create the .app bundle.
uuid=$(xcrun altool --notarize-app --primary-bundle-id "com.influxdata.telegraf" --username "$AppleUsername" --password "$ApplePassword" --file "$baseName".dmg | awk '/RequestUUID/ { print $NF; }') mkdir Telegraf
echo $uuid cd Telegraf
if [[ $uuid == "" ]]; then mkdir Contents
echo "Could not upload for notarization." cd Contents
exit 1 mkdir MacOS
fi 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'. # Sign the entire .app bundle, and wrap it in a DMG.
request_status="in progress" codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime --deep --force Telegraf.app
while [[ "$request_status" == "in progress" ]]; do hdiutil create -size 500m -volname Telegraf -srcfolder Telegraf.app "$baseName".dmg
sleep 10 codesign -s "Developer ID Application: InfluxData Inc. (M7DN9H35QT)" --timestamp --options=runtime "$baseName".dmg
request_status=$(xcrun altool --notarization-info $uuid --username "$AppleUsername" --password "$ApplePassword" 2>&1 | awk -F ': ' '/Status:/ { print $2; }' )
done
if [[ $request_status != "success" ]]; then # Send the DMG to be notarized.
echo "Failed to notarize." uuid=$(xcrun altool --notarize-app --primary-bundle-id "com.influxdata.telegraf" --username "$AppleUsername" --password "$ApplePassword" --file "$baseName".dmg | awk '/RequestUUID/ { print $NF; }')
exit 1 echo $uuid
fi if [[ $uuid == "" ]]; then
echo "Could not upload for notarization."
exit 1
fi
# Attach the notarization to the DMG. # Wait until the status returns something other than 'in progress'.
xcrun stapler staple "$baseName".dmg request_status="in progress"
rm -rf Telegraf.app while [[ "$request_status" == "in progress" ]]; do
rm -rf $extractedFolder sleep 10
ls 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