blob: ae3cd906b8d3ce90ed9d0065c9d03773177e4b58 [file] [edit]
#!/usr/bin/env bash
# Copyright 2018 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Run critest with default containerd.
set -o errexit
set -o nounset
set -o pipefail
VERSION=$(git describe --abbrev=0 --tag)
CRI_CTL_PLATFORMS=(
linux/amd64
linux/386
linux/arm64
linux/ppc64le
linux/s390x
linux/mips64le
linux/riscv64
windows/amd64
windows/386
darwin/amd64
darwin/arm64
)
CRI_TEST_PLATFORMS=(
linux/amd64
linux/386
linux/arm64
windows/amd64
windows/386
darwin/amd64
darwin/arm64
)
# Create releases output directory.
PROJECT="sigs.k8s.io/cri-tools"
OUTPUT_DIR=_output
RELEASES_DIR=$OUTPUT_DIR/releases
mkdir -p "$RELEASES_DIR"
GO_LDFLAGS="-X ${PROJECT}/pkg/version.Version=${VERSION}"
# Build and package crictl releases.
for platform in "${CRI_CTL_PLATFORMS[@]}"; do
os="${platform%/*}"
arch=$(basename "${platform}")
CRICTL_BIN="crictl"
if [ "$os" == "windows" ]; then
CRICTL_BIN="crictl.exe"
fi
output_bin=$OUTPUT_DIR/bin/$arch-$os/${CRICTL_BIN}
GOARCH="$arch" GOOS="$os" CGO_ENABLED=0 go build \
-o ${output_bin} \
-ldflags "${GO_LDFLAGS}" \
${PROJECT}/cmd/crictl
file ${output_bin}
tar zcf "$RELEASES_DIR/crictl-$VERSION-$os-$arch.tar.gz" \
-C $OUTPUT_DIR/bin/$arch-$os \
${CRICTL_BIN}
done
# Build and package critest releases.
for platform in "${CRI_TEST_PLATFORMS[@]}"; do
os="${platform%/*}"
arch=$(basename "${platform}")
CRITEST_BIN="critest"
if [ "$os" == "windows" ]; then
CRITEST_BIN="critest.exe"
fi
output_bin=$OUTPUT_DIR/bin/$arch-$os/${CRITEST_BIN}
GOARCH="$arch" GOOS="$os" CGO_ENABLED=0 go test -c \
-o ${output_bin} \
-ldflags "${GO_LDFLAGS}" \
${PROJECT}/cmd/critest
file ${output_bin}
tar zcf "$RELEASES_DIR/critest-$VERSION-$os-$arch.tar.gz" \
-C $OUTPUT_DIR/bin/$arch-$os \
${CRITEST_BIN}
done
printf "\n## Downloads\n\n" | tee -a release-notes.md
echo "| file | sha256 | sha512" | tee -a release-notes.md
echo "| ---- | ------ | ------" | tee -a release-notes.md
# Show sha256/512 for release files
if [[ "${OSTYPE}" == "darwin"* ]]; then
for file in "$RELEASES_DIR"/*.tar.gz; do
SHA256=$(shasum -a 256 "$file" | sed -e "s,$file,," | awk '{print $1}' | tee "$file.sha256")
SHA512=$(shasum -a 512 "$file" | sed -e "s,$file,," | awk '{print $1}' | tee "$file.sha512")
BASE=$(basename "$file")
echo "| $BASE | $SHA256 | $SHA512 |" | tee -a release-notes.md
done
else
for file in "$RELEASES_DIR"/*.tar.gz; do
SHA256=$(sha256sum -b "$file" | sed -e "s,$file,," | awk '{print $1}' | tee "$file.sha256")
SHA512=$(sha512sum -b "$file" | sed -e "s,$file,," | awk '{print $1}' | tee "$file.sha512")
BASE=$(basename "$file")
echo "| $BASE | $SHA256 | $SHA512 |" | tee -a release-notes.md
done
fi