constellation/hack/docgen-builder/build-and-upload.sh

62 lines
1.6 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Usage: ./build-and-upload.sh [dryrun]
set -euo pipefail
set -o errtrace
shopt -s inherit_errexit
talosRepo="https://github.com/siderolabs/talos"
talosHash="94c24ca64e70f227da29cd02bd367d3c2701b96c"
s3CASPath="s3://cdn-constellation-backend/constellation/cas/sha256"
publicCASPath="https://cdn.confidential.cloud/constellation/cas/sha256"
function cleanup {
echo "Cleaning up"
rm -rf "${tmpDir}"
}
trap cleanup EXIT
# Set flags to --dryrun if arg 1 is "dryrun"
awsFlags=()
if [[ ${1-} == "dryrun" ]]; then
awsFlags+=("--dryrun")
fi
# Create a temp dir to work in
tmpDir=$(mktemp -d)
pushd "${tmpDir}"
# Get the talos source code
wget -qO- "${talosRepo}/archive/${talosHash}.tar.gz" | tar -xz
cp -r "talos-${talosHash}/hack/docgen" .
pushd "docgen"
# Build and upload the talos-docgen binary
echo
for arch in "amd64" "arm64"; do
for os in "linux" "darwin"; do
echo "Building and uploading talos-docgen-${os}-${arch}"
CGO_ENABLED="0" GOWORK="" GOOS="${os}" GOARCH="${arch}" go build -trimpath -ldflags="-buildid=" -o "talos-docgen-${os}-${arch}" .
sum=$(sha256sum "talos-docgen-${os}-${arch}" | cut -d ' ' -f1) && echo "Binary sha256sum: ${sum}"
file "talos-docgen-${os}-${arch}"
aws s3 "${awsFlags[@]}" cp "./talos-docgen-${os}-${arch}" "${s3CASPath}/${sum}"
echo
cat << EOF >> "bazelout.txt"
http_file(
name = "com_github_siderolabs_talos_hack_docgen_${os}_${arch}",
urls = [
"${publicCASPath}/${sum}",
],
executable = True,
sha256 = "${sum}",
)
EOF
done
done
# Print the bazel output
cat bazelout.txt
echo