run signing as post-build step (#803)

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
Alex Goodman
2022-02-07 16:55:15 -05:00
committed by GitHub
parent 5519a25035
commit 2c62651c82
4 changed files with 27 additions and 109 deletions
+11 -46
View File
@@ -1,5 +1,4 @@
#!/usr/bin/env bash
set -ue
set +xu
if [ -z "$AC_USERNAME" ]; then
@@ -11,58 +10,30 @@ if [ -z "$AC_PASSWORD" ]; then
fi
set -u
# repackage [archive-path]
#
# returns an archive compatible for Apple's notarization process, repackaging the input archive as needed
#
repackage() {
archive=$1
case "$archive" in
*.tar.gz)
new_archive=${archive%.tar.gz}.zip
(
tmp_dir=$(mktemp -d)
cd "$tmp_dir"
# redirect stdout to stderr to preserve the return value
tar xzf "$archive" && zip "$new_archive" ./* 1>&2
rm -rf "$tmp_dir"
)
echo "$new_archive"
;;
*.zip)
echo "$archive"
;;
*) return 1
;;
esac
}
# notarize [archive-path]
#
notarize() {
archive_path=$1
binary_path=$1
archive_path=${binary_path}-archive-for-notarization.zip
title "notarizing binaries found in the release archive"
title "archiving release binary into ${archive_path}"
payload_archive_path=$(repackage "$archive_path")
if [ "$?" != "0" ]; then
exit_with_error "cannot prepare payload for notarization: $archive_path"
fi
zip "${archive_path}" "${binary_path}"
if [ ! -f "$payload_archive_path" ]; then
exit_with_error "cannot find payload for notarization: $payload_archive_path"
if [ ! -f "$archive_path" ]; then
exit_with_error "cannot find payload for notarization: $archive_path"
fi
# install gon
which gon || (brew tap mitchellh/gon && brew install mitchellh/gon/gon)
# create config (note: json via stdin with gon is broken, can only use HCL from file)
tmp_file=$(mktemp).hcl
hcl_file=$(mktemp).hcl
cat <<EOF > "$tmp_file"
cat <<EOF > "$hcl_file"
notarize {
path = "$payload_archive_path"
path = "$archive_path"
bundle_id = "com.anchore.toolbox.syft"
}
@@ -72,14 +43,8 @@ apple_id {
}
EOF
gon -log-level info "$tmp_file"
gon -log-level info "$hcl_file"
result="$?"
rm "$tmp_file"
if [ "$result" -ne "0" ]; then
exit_with_error "notarization failed"
fi
rm "${hcl_file}" "${archive_path}"
}