#!/bin/sh set -e #set -x DIR=$(realpath $(dirname $0))/../ BUILDDIR=$(realpath $DIR)/build # Ensure we're on the master branch check_branch() { curr_branch=$(git rev-parse --abbrev-ref HEAD) if $curr_branch != "master" then echo "Not on master branch." exit 1 fi } # Ensure working dir is clean check_clean() { if ! git diff-index --quiet HEAD -- then echo "Unclean tree" exit 1 fi } # Build CLI binaries for mac/linux/windows build_all_cli() { build_cli "linux" "linux" build_cli "darwin" "osx" build_cli "windows" "windows" } # Build cli binary for one OS, and put it in $BUILDDIR/cli// build_cli() { os=$1 osName=$2 arch="amd64" # parameterize if/when we need to pushd $DIR/fission GOOS=$os GOARCH=$arch go build . if [ "$os" == "windows" ] then binary=fission.exe else binary=fission fi outdir=$BUILDDIR/cli/$osName/ mkdir -p $outdir mv $binary $outdir popd } # Build fission-bundle image build_fission_bundle_image() { version=$1 tag=fission/fission-bundle:$version pushd $DIR/fission-bundle GOOS=linux go build docker build -t $tag . popd } # Push fission-bundle image push_fission_bundle_image() { version=$1 tag=fission/fission-bundle:$version docker push $tag } # # Create fission.yaml # # TODO: get rid of this in favour of the helm chart # build_yaml() { version=$1 tag=fission/fission-bundle:$version outdir=$BUILDDIR/yaml/ mkdir -p $outdir pushd $DIR cat fission.yaml | sed "s#fission/fission-bundle#$tag#g" > $outdir/fission.yaml cat fission-logger.yaml | sed "s#fission/fission-bundle#$tag#g" > $outdir/fission-logger.yaml cat fission-openshift.yaml | sed "s#fission/fission-bundle#$tag#g" > $outdir/fission-openshift.yaml cat fission-rbac.yaml | sed "s#fission/fission-bundle#$tag#g" > $outdir/fission-rbac.yaml cat fission-nats.yaml | sed "s#fission/fission-bundle#$tag#g" > $outdir/fission-nats.yaml cp fission-nodeport.yaml $outdir cp fission-cloud.yaml $outdir popd } build_all() { version=$1 if [ -z "$version" ] then echo "Version 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 build_yaml $version build_all_cli } make_github_release() { version=$1 gittag=nightly$(date +%Y%m%d) # tag the release git tag $gittag # push tag git push --tags # create gh release gothub release \ --user fission \ --repo fission \ --tag $gittag \ --name "Nightly release for $(date +%Y-%b-%d)" \ --description "Nightly release for $(date +%Y-%b-%d)" \ # attach files # cli gothub upload \ --user fission \ --repo fission \ --tag $gittag \ --name fission-cli-osx \ --file $BUILDDIR/cli/osx/fission gothub upload \ --user fission \ --repo fission \ --tag $gittag \ --name fission-cli-linux \ --file $BUILDDIR/cli/linux/fission gothub upload \ --user fission \ --repo fission \ --tag $gittag \ --name fission-cli-windows.exe \ --file $BUILDDIR/cli/windows/fission.exe # yamls yaml_files="fission.yaml fission-logger.yaml fission-rbac.yaml fission-openshift.yaml fission-nodeport.yaml fission-cloud.yaml fission-nats.yaml" for f in $yaml_files do gothub upload \ --user fission \ --repo fission \ --tag $gittag \ --name $f \ --file $BUILDDIR/yaml/$f done } # check_master check_clean version=$1 build_all $version push_fission_bundle_image $version make_github_release $version