ci: switch altool to notarytool
This commit is contained in:
parent
9cc6bdc9db
commit
dcfebbcb9e
3
Makefile
3
Makefile
|
@ -663,8 +663,7 @@ ifdef MACOS_CODESIGN_IDENT
|
||||||
scripts/sign-macos-pkg.sh $(STATUS_CLIENT_DMG) $(MACOS_CODESIGN_IDENT)
|
scripts/sign-macos-pkg.sh $(STATUS_CLIENT_DMG) $(MACOS_CODESIGN_IDENT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
notarize-macos: export CHECK_INTERVAL_SEC ?= 30
|
notarize-macos: export CHECK_TIMEOUT ?= 10m
|
||||||
notarize-macos: export CHECK_RETRY_LIMIT ?= 40
|
|
||||||
notarize-macos: export MACOS_BUNDLE_ID ?= im.status.ethereum.desktop
|
notarize-macos: export MACOS_BUNDLE_ID ?= im.status.ethereum.desktop
|
||||||
notarize-macos:
|
notarize-macos:
|
||||||
scripts/notarize-macos-pkg.sh $(STATUS_CLIENT_DMG)
|
scripts/notarize-macos-pkg.sh $(STATUS_CLIENT_DMG)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.11'
|
library 'status-jenkins-lib@v1.7.11'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
|
|
|
@ -11,29 +11,26 @@ set -eof pipefail
|
||||||
|
|
||||||
# Path to MacOS bundle created by XCode.
|
# Path to MacOS bundle created by XCode.
|
||||||
BUNDLE_PATH="${1}"
|
BUNDLE_PATH="${1}"
|
||||||
# Notarization request check intervals/retries.
|
# Notarization request check timeout.
|
||||||
CHECK_INTERVAL_SEC="${CHECK_INTERVAL_SEC:-30}"
|
CHECK_TIMEOUT="${CHECK_TIMEOUT:-10m}"
|
||||||
CHECK_RETRY_LIMIT="${CHECK_RETRY_LIMIT:-40}"
|
# Xcode notarization log file paths
|
||||||
# Unique ID of MacOS application.
|
|
||||||
MACOS_BUNDLE_ID="${MACOS_BUNDLE_ID:-im.status.ethereum.desktop}"
|
|
||||||
# Xcode altool log file paths
|
|
||||||
NOTARIZATION_ERR_LOG="${NOTARIZATION_ERR_LOG:-${PWD}/notarization.out.log}"
|
NOTARIZATION_ERR_LOG="${NOTARIZATION_ERR_LOG:-${PWD}/notarization.out.log}"
|
||||||
NOTARIZATION_OUT_LOG="${NOTARIZATION_OUT_LOG:-${PWD}/notarization.err.log}"
|
NOTARIZATION_OUT_LOG="${NOTARIZATION_OUT_LOG:-${PWD}/notarization.err.log}"
|
||||||
|
|
||||||
function show_xcrun_altool_logs() {
|
function show_notarization_logs() {
|
||||||
echo "FAILURE!"
|
echo "FAILURE!"
|
||||||
echo "STDERR:"
|
echo "STDERR:"
|
||||||
cat "${NOTARIZATION_ERR_LOG}"
|
cat "${NOTARIZATION_ERR_LOG}"
|
||||||
echo "STDOUT:"
|
echo "STDOUT:"
|
||||||
cat "${NOTARIZATION_OUT_LOG}"
|
cat "${NOTARIZATION_OUT_LOG}"
|
||||||
}
|
}
|
||||||
trap show_xcrun_altool_logs ERR
|
trap show_notarization_logs ERR
|
||||||
|
|
||||||
function xcrun_altool() {
|
function xcrun_notarytool() {
|
||||||
# STDERR goes to /dev/null so we can capture just the JSON.
|
# STDERR goes to /dev/null so we can capture just the JSON.
|
||||||
xcrun altool "${@}" \
|
xcrun notarytool "${@}" \
|
||||||
--team-id "${MACOS_NOTARIZE_TEAM_ID}" \
|
--team-id "${MACOS_NOTARIZE_TEAM_ID}" \
|
||||||
--username "${MACOS_NOTARIZE_USERNAME}" \
|
--apple-id "${MACOS_NOTARIZE_USERNAME}" \
|
||||||
--password "${MACOS_NOTARIZE_PASSWORD}" \
|
--password "${MACOS_NOTARIZE_PASSWORD}" \
|
||||||
--output-format "json" \
|
--output-format "json" \
|
||||||
> >(tee -a "${NOTARIZATION_OUT_LOG}") \
|
> >(tee -a "${NOTARIZATION_OUT_LOG}") \
|
||||||
|
@ -42,9 +39,9 @@ function xcrun_altool() {
|
||||||
|
|
||||||
# Submit app for notarization. Should take 5-10 minutes.
|
# Submit app for notarization. Should take 5-10 minutes.
|
||||||
echo -e "\n### Creating Notarization Request..."
|
echo -e "\n### Creating Notarization Request..."
|
||||||
OUT=$(xcrun_altool --notarize-app -f "${BUNDLE_PATH}" --primary-bundle-id "${MACOS_BUNDLE_ID}")
|
OUT=$(xcrun_notarytool submit --wait --timeout "${CHECK_TIMEOUT}" "${BUNDLE_PATH}")
|
||||||
# Necessary to track notarization request progress.
|
# Necessary to track notarization request progress.
|
||||||
REQUEST_UUID=$(echo "${OUT}" | jq -r '."notarization-upload".RequestUUID')
|
REQUEST_UUID=$(echo "${OUT}" | jq -r '.id')
|
||||||
|
|
||||||
if [[ -z "${REQUEST_UUID}" ]] || [[ "${REQUEST_UUID}" == "null" ]]; then
|
if [[ -z "${REQUEST_UUID}" ]] || [[ "${REQUEST_UUID}" == "null" ]]; then
|
||||||
echo "\n!!! FAILURE: No notarization request UUID found." >&1
|
echo "\n!!! FAILURE: No notarization request UUID found." >&1
|
||||||
|
@ -54,28 +51,15 @@ if [[ -z "${REQUEST_UUID}" ]] || [[ "${REQUEST_UUID}" == "null" ]]; then
|
||||||
fi
|
fi
|
||||||
echo -e "\n### Request ID: ${REQUEST_UUID}"
|
echo -e "\n### Request ID: ${REQUEST_UUID}"
|
||||||
|
|
||||||
# Check notarization ticket status periodically.
|
# Check notarization ticket status.
|
||||||
echo -e "\n### Checking Notarization Status..."
|
echo -e "\n### Checking Notarization Status..."
|
||||||
while sleep "${CHECK_INTERVAL_SEC}"; do
|
if $(echo "${OUT}" | jq -er '.status == "Accepted"'); then
|
||||||
OUT=$(xcrun_altool --notarization-info "${REQUEST_UUID}")
|
|
||||||
|
|
||||||
# Once notarization is complete, run stapler and exit.
|
|
||||||
if $(echo "${OUT}" | jq -er '."notarization-info".Status == "in progress"'); then
|
|
||||||
((CHECK_RETRY_LIMIT-=1))
|
|
||||||
if [[ "${CHECK_RETRY_LIMIT}" -eq 0 ]]; then
|
|
||||||
echo -e "\n!!! FAILURE: Notarization timed out."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "In progress, sleeping ${CHECK_INTERVAL_SEC}s..."
|
|
||||||
elif $(echo "${OUT}" | jq -er '."notarization-info".Status == "success"'); then
|
|
||||||
echo -e "\n### Successful Notarization"
|
echo -e "\n### Successful Notarization"
|
||||||
break
|
|
||||||
else
|
else
|
||||||
echo -e "\n!!! Notariztion Error"
|
echo -e "\n!!! Notariztion Error"
|
||||||
echo "${OUT}" >&2
|
echo "${OUT}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
# Optional but preferrable to attach the ticket to the bundle.
|
# Optional but preferrable to attach the ticket to the bundle.
|
||||||
echo -e "\n### Stapling Notarization Ticket..."
|
echo -e "\n### Stapling Notarization Ticket..."
|
||||||
|
|
Loading…
Reference in New Issue