mirror of
https://github.com/coder/coder.git
synced 2025-03-14 10:09:57 +00:00
91 lines
1.9 KiB
Bash
Executable File
91 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script creates a Helm package for the given version. It will output a
|
|
# .tgz file at the specified path, and may optionally push it to the Coder OSS
|
|
# repo.
|
|
#
|
|
# ./helm.sh [--version 1.2.3] [--chart coder|provisioner] [--output path/to/coder.tgz]
|
|
#
|
|
# If no version is specified, defaults to the version from ./version.sh.
|
|
#
|
|
# If no chart is specified, defaults to 'coder'
|
|
#
|
|
# If no output path is specified, defaults to
|
|
# "$repo_root/build/$chart_helm_$version.tgz".
|
|
|
|
set -euo pipefail
|
|
# shellcheck source=scripts/lib.sh
|
|
source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
|
|
|
|
version=""
|
|
output_path=""
|
|
chart=""
|
|
|
|
args="$(getopt -o "" -l version:,chart:,output:,push -- "$@")"
|
|
eval set -- "$args"
|
|
while true; do
|
|
case "$1" in
|
|
--version)
|
|
version="$2"
|
|
shift 2
|
|
;;
|
|
--chart)
|
|
chart="$2"
|
|
shift 2
|
|
;;
|
|
--output)
|
|
output_path="$(realpath "$2")"
|
|
shift 2
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
error "Unrecognized option: $1"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Remove the "v" prefix.
|
|
version="${version#v}"
|
|
if [[ "$version" == "" ]]; then
|
|
version="$(execrelative ./version.sh)"
|
|
fi
|
|
|
|
if [[ "$chart" == "" ]]; then
|
|
chart="coder"
|
|
fi
|
|
if ! [[ "$chart" =~ ^(coder|provisioner)$ ]]; then
|
|
error "--chart value must be one of (coder, provisioner)"
|
|
fi
|
|
|
|
if [[ "$output_path" == "" ]]; then
|
|
cdroot
|
|
mkdir -p build
|
|
output_path="$(realpath "build/${chart}_helm_${version}.tgz")"
|
|
fi
|
|
|
|
# Check dependencies
|
|
dependencies helm
|
|
|
|
# Make a destination temporary directory, as you cannot fully control the output
|
|
# path of `helm package` except for the directory name :/
|
|
cdroot
|
|
temp_dir="$(mktemp -d)"
|
|
|
|
cdroot
|
|
cd "./helm/${chart}"
|
|
log "--- Updating dependencies"
|
|
helm dependency update .
|
|
log "--- Packaging helm chart $chart for version $version ($output_path)"
|
|
helm package \
|
|
--version "$version" \
|
|
--app-version "$version" \
|
|
--destination "$temp_dir" \
|
|
. 1>&2
|
|
|
|
log "Moving helm chart to $output_path"
|
|
cp "$temp_dir"/*.tgz "$output_path"
|
|
rm -rf "$temp_dir"
|