This removes fluentd in favor of using fluentbit, which is lighter (in memory usage) and seems to be more actively maintained. Fluentbit's config file format is different from fluentd's. It also doesn't support the same record modification stuff that fluentd supports, so we have to change the influxdb query slightly. This means that after an upgrade, the new CLI may won't work for querying older logs. Hopefully, this slight breakage is acceptable; if users really need older logs they can use the older CLI.
293 lines
7.4 KiB
Bash
Executable File
293 lines
7.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
#set -x
|
|
|
|
DIR=$(realpath $(dirname $0))/../
|
|
BUILDDIR=$(realpath $DIR)/build
|
|
|
|
# Build CLI binaries for mac/linux/windows
|
|
build_all_cli() {
|
|
local version=$1
|
|
local date=$2
|
|
local gitcommit=$3
|
|
|
|
build_cli "linux" "linux" $version $date $gitcommit
|
|
build_cli "darwin" "osx" $version $date $gitcommit
|
|
build_cli "windows" "windows" $version $date $gitcommit
|
|
}
|
|
|
|
# Build cli binary for one OS, and put it in $BUILDDIR/cli/<os>/
|
|
build_cli() {
|
|
os=$1
|
|
osName=$2
|
|
local version=$3
|
|
local date=$4
|
|
local gitcommit=$5
|
|
arch="amd64" # parameterize if/when we need to
|
|
|
|
pushd $DIR/fission
|
|
|
|
if [ "$osName" == "windows" ]
|
|
then
|
|
binary=fission-cli-${osName}.exe
|
|
else
|
|
binary=fission-cli-${osName}
|
|
fi
|
|
|
|
GOOS=$os GOARCH=$arch go build -gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH -ldflags "-X github.com/fission/fission.GitCommit=$gitcommit -X github.com/fission/fission.BuildDate=$date -X github.com/fission/fission.Version=$version" -o $binary .
|
|
|
|
outdir=$BUILDDIR/cli/$osName/
|
|
mkdir -p $outdir
|
|
mv $binary $outdir
|
|
|
|
popd
|
|
}
|
|
|
|
# Build fission-bundle image
|
|
build_fission_bundle_image() {
|
|
local version=$1
|
|
local date=$2
|
|
local gitcommit=$3
|
|
|
|
local tag=fission/fission-bundle:$version
|
|
|
|
pushd $DIR/fission-bundle
|
|
|
|
./build.sh $version $date $gitcommit
|
|
docker build -t $tag .
|
|
docker tag $tag fission/fission-bundle:latest
|
|
|
|
popd
|
|
}
|
|
|
|
build_fetcher_image() {
|
|
local version=$1
|
|
local date=$2
|
|
local gitcommit=$3
|
|
local tag=fission/fetcher:$version
|
|
|
|
pushd $DIR/environments/fetcher/cmd
|
|
|
|
./build.sh $version $date $gitcommit
|
|
docker build -t $tag .
|
|
docker tag $tag fission/fetcher:latest
|
|
|
|
popd
|
|
}
|
|
|
|
push_fetcher_image() {
|
|
local version=$1
|
|
local tag=fission/fetcher:$version
|
|
}
|
|
|
|
build_builder_image() {
|
|
local version=$1
|
|
local date=$2
|
|
local gitcommit=$3
|
|
local tag=fission/builder:$version
|
|
|
|
pushd $DIR/builder/cmd
|
|
|
|
./build.sh $version $date $gitcommit
|
|
docker build -t $tag .
|
|
docker tag $tag fission/builder:latest
|
|
|
|
popd
|
|
}
|
|
|
|
build_env_image() {
|
|
local version=$1
|
|
envdir=$2
|
|
imgnamebase=$3
|
|
imgvariant=$4
|
|
|
|
if [ -z "$imgvariant" ]
|
|
then
|
|
# no variant specified, just use the base name
|
|
imgname=$imgnamebase
|
|
dockerfile="Dockerfile"
|
|
else
|
|
# variant specified - append variant to image name and assume dockerfile
|
|
# exists with same suffix (e.g. image node-env-debian built from Dockerfile-debian)
|
|
imgname="$imgname-$imgvariant"
|
|
dockerfile="Dockerfile-$imgvariant"
|
|
fi
|
|
echo "Building $envdir -> $imgname:$version using $dockerfile"
|
|
|
|
pushd $DIR/environments/$envdir
|
|
if [ -f build.sh ]
|
|
then
|
|
./build.sh
|
|
fi
|
|
docker build -t fission/$imgname:$version -f $dockerfile .
|
|
docker tag fission/$imgname:$version fission/$imgname:latest
|
|
popd
|
|
}
|
|
|
|
# Build pre-upgrade-checks image
|
|
build_pre_upgrade_checks_image() {
|
|
local version=$1
|
|
local date=$2
|
|
local gitcommit=$3
|
|
|
|
local tag=fission/pre-upgrade-checks:$version
|
|
|
|
pushd $DIR/preupgradechecks
|
|
|
|
./build.sh $version $date $gitcommit
|
|
docker build -t $tag .
|
|
docker tag $tag fission/pre-upgrade-checks:latest
|
|
|
|
popd
|
|
}
|
|
|
|
build_all_envs() {
|
|
local version=$1
|
|
|
|
# call with version, env dir, image name base, image name variant
|
|
build_env_image "$version" "nodejs" "node-env" ""
|
|
build_env_image "$version" "nodejs" "node-env" "debian"
|
|
build_env_image "$version" "binary" "binary-env" ""
|
|
build_env_image "$version" "dotnet" "dotnet-env" ""
|
|
build_env_image "$version" "dotnet20" "dotnet20-env" ""
|
|
build_env_image "$version" "go" "go-env" ""
|
|
build_env_image "$version" "perl" "perl-env" ""
|
|
build_env_image "$version" "php7" "php-env" ""
|
|
build_env_image "$version" "python" "python-env" ""
|
|
build_env_image "$version" "python" "python-env" "2.7"
|
|
build_env_image "$version" "ruby" "ruby-env" ""
|
|
build_env_image "$version" "jvm" "jvm-env" ""
|
|
}
|
|
|
|
build_env_builder_image() {
|
|
local version=$1
|
|
envdir=$2
|
|
imgnamebase=$3
|
|
imgvariant=$4
|
|
|
|
if [ -z "$imgvariant" ]
|
|
then
|
|
# no variant specified, just use the base name
|
|
imgname=$imgnamebase
|
|
dockerfile="Dockerfile"
|
|
else
|
|
# variant specified - append variant to image name and assume dockerfile
|
|
# exists with same suffix (e.g. image node-env-debian built from Dockerfile-debian)
|
|
imgname="$imgname-$imgvariant"
|
|
dockerfile="Dockerfile-$imgvariant"
|
|
fi
|
|
echo "Building $envdir -> $imgname:$version using $dockerfile"
|
|
|
|
pushd $DIR/environments/$envdir/builder
|
|
docker build -t fission/$imgname:$version -f $dockerfile .
|
|
docker tag fission/$imgname:$version fission/$imgname:latest
|
|
popd
|
|
}
|
|
|
|
build_all_env_builders() {
|
|
local version=$1
|
|
|
|
# call with version, env dir, image name base, image name variant
|
|
build_env_builder_image "$version" "python" "python-builder" ""
|
|
build_env_builder_image "$version" "binary" "binary-builder" ""
|
|
build_env_builder_image "$version" "go" "go-builder" ""
|
|
build_env_builder_image "$version" "jvm" "jvm-builder" ""
|
|
build_env_builder_image "$version" "nodejs" "node-builder" ""
|
|
}
|
|
|
|
build_charts() {
|
|
local version=$1
|
|
mkdir -p $BUILDDIR/charts
|
|
pushd $DIR/charts
|
|
find . -iname *.~?~ | xargs -r rm
|
|
for c in fission-all fission-core
|
|
do
|
|
# https://github.com/kubernetes/helm/issues/1732
|
|
helm init --client-only
|
|
helm package -u $c/
|
|
mv *.tgz $BUILDDIR/charts/
|
|
done
|
|
popd
|
|
}
|
|
|
|
build_yamls() {
|
|
local version=$1
|
|
|
|
mkdir -p ${BUILDDIR}/yamls
|
|
pushd ${DIR}/charts
|
|
find . -iname *.~?~ | xargs -r rm
|
|
|
|
releaseName=fission-$(echo ${version} | sed 's/\./-/g')
|
|
|
|
helm init --client-only
|
|
|
|
for c in fission-all fission-core
|
|
do
|
|
# fetch dependencies
|
|
pushd ${c}
|
|
helm dependency update
|
|
popd
|
|
|
|
# for minikube and other environments that don't support LoadBalancer
|
|
helm template ${c} -n ${releaseName} --set analytics=false,analyticsNonHelmInstall=true,serviceType=NodePort,routerServiceType=NodePort > ${c}-${version}-minikube.yaml
|
|
# for environments that support LoadBalancer
|
|
helm template ${c} -n ${releaseName} --set analytics=false,analyticsNonHelmInstall=true > ${c}-${version}.yaml
|
|
|
|
# copy yaml files to build directory
|
|
mv *.yaml ${BUILDDIR}/yamls/
|
|
done
|
|
|
|
popd
|
|
}
|
|
|
|
build_all() {
|
|
local version=$1
|
|
|
|
if [ -z "$version" ]
|
|
then
|
|
echo "Version unspecified"
|
|
exit 1
|
|
fi
|
|
|
|
local date=$2
|
|
|
|
if [ -z "$date" ]
|
|
then
|
|
echo "Build date unspecified"
|
|
exit 1
|
|
fi
|
|
|
|
local gitcommit=$3
|
|
|
|
if [ -z "gitcommit" ]
|
|
then
|
|
echo "Git commit unspecified"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -e $BUILDDIR ]
|
|
then
|
|
echo "Removing existing build dir ($BUILDDIR)."
|
|
rm -rf $BUILDDIR
|
|
fi
|
|
|
|
mkdir -p $BUILDDIR
|
|
|
|
build_fission_bundle_image $version $date $gitcommit
|
|
build_fetcher_image $version $date $gitcommit
|
|
build_builder_image $version $date $gitcommit
|
|
build_all_cli $version $date $gitcommit
|
|
build_pre_upgrade_checks_image $version $date $gitcommit
|
|
}
|
|
|
|
version=${VERSION}
|
|
date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
|
gitcommit=$(git rev-parse HEAD)
|
|
|
|
build_all $version $date $gitcommit
|
|
build_all_envs $version
|
|
build_all_env_builders $version
|
|
build_charts $version
|
|
build_yamls $version
|