mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
* Create independent build targets for Mac and Linux Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Create targets for macOS signing and notarization Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Create target for Linux packaging Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Update release workflow and leverage new make targets Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Add release assets to release draft Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Add homebrew formula release follow-up and improve Makefile Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Add follow-up workflow for updating version check file Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Get rid of fetch depth 0 for checkout action Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Add follow-up workflow for Docker images Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Restore wait-for-checks job Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Replace make functions with shell functions Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * Account for envsubst command in bootstrap-ci-linux Signed-off-by: Dan Luhring <dan.luhring@anchore.com> * move homebrew generation into script Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add release approval step; remove goreleaser; add docker image smoke testing in acceptance step Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * replace homebrew formula template file with heredoc template Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * update release documentation Signed-off-by: Alex Goodman <alex.goodman@anchore.com> Co-authored-by: Alex Goodman <alex.goodman@anchore.com>
61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eu -o pipefail
|
|
|
|
BIN="syft"
|
|
TEMPDIR=$(mktemp -d syft-homebrew-formula-generate-XXXXXX)
|
|
VERSION_TAG=$1
|
|
HOMEBREW_FORMULA_FILE=$2
|
|
|
|
trap "rm -f ${TEMPDIR}/*; rmdir ${TEMPDIR};" EXIT
|
|
|
|
# dependencies: curl, jq, openssl
|
|
|
|
RELEASE_URL="https://api.github.com/repos/anchore/${BIN}/releases/tags/${VERSION_TAG}"
|
|
echo "Using release: ${RELEASE_URL}"
|
|
curl -sSL "${RELEASE_URL}" > "${TEMPDIR}/release.json"
|
|
|
|
function asset_url() {
|
|
cat "${1}" | jq -r ".assets[] | select(.name | contains(\"${2}\")) | .browser_download_url"
|
|
}
|
|
|
|
function sha256() {
|
|
openssl dgst -sha256 "${1}" | cut -d " " -f 2
|
|
}
|
|
|
|
export DARWIN_AMD64_ASSET_URL=$(asset_url "${TEMPDIR}/release.json" "darwin_amd64.zip")
|
|
curl -sSL "${DARWIN_AMD64_ASSET_URL}" > "${TEMPDIR}/darwin_amd64_asset"
|
|
export DARWIN_AMD64_ASSET_SHA256=$(sha256 "${TEMPDIR}/darwin_amd64_asset")
|
|
|
|
export LINUX_AMD64_ASSET_URL=$(asset_url "${TEMPDIR}/release.json" "linux_amd64.tar.gz")
|
|
curl -sSL "${LINUX_AMD64_ASSET_URL}" > "${TEMPDIR}/linux_amd64_asset"
|
|
export LINUX_AMD64_ASSET_SHA256=$(sha256 "${TEMPDIR}/linux_amd64_asset")
|
|
|
|
export VERSION=${VERSION_TAG#v}
|
|
|
|
cat > ${HOMEBREW_FORMULA_FILE} <<-EOF
|
|
class Syft < Formula
|
|
desc "A tool that generates a Software Bill Of Materials (SBOM) from container images and filesystems"
|
|
homepage "https://github.com/anchore/syft"
|
|
version "$VERSION"
|
|
bottle :unneeded
|
|
|
|
if OS.mac?
|
|
if Hardware::CPU.intel?
|
|
url "$DARWIN_AMD64_ASSET_URL"
|
|
sha256 "$DARWIN_AMD64_ASSET_SHA256"
|
|
end
|
|
elsif OS.linux?
|
|
if Hardware::CPU.intel?
|
|
url "$LINUX_AMD64_ASSET_URL"
|
|
sha256 "$LINUX_AMD64_ASSET_SHA256"
|
|
end
|
|
end
|
|
|
|
def install
|
|
bin.install "syft"
|
|
end
|
|
end
|
|
EOF
|
|
|
|
echo "Generated ${HOMEBREW_FORMULA_FILE}:"
|
|
cat ${HOMEBREW_FORMULA_FILE} |