From 951468006d07ee28f6a1d4864fa9b44ec55053cd Mon Sep 17 00:00:00 2001 From: Soam Vasani Date: Sun, 10 Sep 2017 09:16:16 -0700 Subject: [PATCH] Release automation script -- attach helm charts, tag env images (#318) Remove yaml manipulation from release script, package up and attach helm charts. Build, tag and push fetcher image and all environment runtimes. --- environments/binary/build.sh | 0 hack/release.sh | 152 ++++++++++++++++++++++++----------- 2 files changed, 107 insertions(+), 45 deletions(-) mode change 100644 => 100755 environments/binary/build.sh diff --git a/environments/binary/build.sh b/environments/binary/build.sh old mode 100644 new mode 100755 diff --git a/hack/release.sh b/hack/release.sh index 81366f5a..324faca8 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -1,7 +1,7 @@ #!/bin/sh set -e -#set -x +set -x DIR=$(realpath $(dirname $0))/../ BUILDDIR=$(realpath $DIR)/build @@ -62,9 +62,9 @@ build_fission_bundle_image() { pushd $DIR/fission-bundle - GOOS=linux go build + ./build.sh docker build -t $tag . - + popd } @@ -75,29 +75,64 @@ push_fission_bundle_image() { docker push $tag } -# -# Create fission.yaml -# -# TODO: get rid of this in favour of the helm chart -# -build_yaml() { +build_fetcher_image() { version=$1 - tag=fission/fission-bundle:$version + tag=fission/fetcher:$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 + pushd $DIR/environments/fetcher/cmd - cp fission-nodeport.yaml $outdir - cp fission-cloud.yaml $outdir + ./build.sh + docker build -t $tag . + + popd +} + +push_fetcher_image() { + version=$1 + tag=fission/fetcher:$version + docker push $tag +} + +build_and_push_env_image() { + version=$1 + envdir=$2 + imgname=$3 + + echo "Building $envdir -> $imgname:$version" + pushd $DIR/environments/$envdir + if [ -f build.sh ] + then + ./build.sh + fi + docker build -t fission/$imgname:$version . + docker push fission/$imgname:$version + popd +} + +build_and_push_all_envs() { + version=$1 + + build_and_push_env_image $version nodejs node-env + build_and_push_env_image $version binary binary-env + build_and_push_env_image $version dotnet dotnet-env + build_and_push_env_image $version go go-env + build_and_push_env_image $version perl perl-env + build_and_push_env_image $version php7 php-env + build_and_push_env_image $version python3 python-env + build_and_push_env_image $version ruby ruby-env +} + +build_charts() { + version=$1 + mkdir -p $BUILDDIR/charts + pushd $DIR/charts + for c in all core + do + tgz=fission-$c-$version.tgz + tar czvf $tgz fission-$c/ + mv $tgz $BUILDDIR/charts/ + done popd } @@ -118,13 +153,19 @@ build_all() { mkdir -p $BUILDDIR build_fission_bundle_image $version - build_yaml $version + build_fetcher_image $version build_all_cli + build_charts $version } -make_github_release() { +push_all() { + push_fission_bundle_image $version + push_fetcher_image $version +} + +tag_and_release() { version=$1 - gittag=nightly$(date +%Y%m%d) + gittag=$version # tag the release git tag $gittag @@ -137,12 +178,16 @@ make_github_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 + --name "$version" \ + --description "$version" \ + --pre-release +} +attach_github_release() { + version=$1 + gittag=$version # cli + echo "Uploading osx cli" gothub upload \ --user fission \ --repo fission \ @@ -150,6 +195,7 @@ make_github_release() { --name fission-cli-osx \ --file $BUILDDIR/cli/osx/fission + echo "Uploading linux cli" gothub upload \ --user fission \ --repo fission \ @@ -157,31 +203,47 @@ make_github_release() { --name fission-cli-linux \ --file $BUILDDIR/cli/linux/fission + echo "Uploading windows cli" 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 - } +attach_github_release_charts() { + version=$1 + gittag=$version -# check_master + # helm charts + gothub upload \ + --user fission \ + --repo fission \ + --tag $gittag \ + --name fission-all-$version.tgz \ + --file $BUILDDIR/charts/fission-all-$version.tgz + + gothub upload \ + --user fission \ + --repo fission \ + --tag $gittag \ + --name fission-core-$version.tgz \ + --file $BUILDDIR/charts/fission-core-$version.tgz + +} + +export GITHUB_TOKEN=$(cat ~/.gh-access-token) + +check_branch check_clean version=$1 + build_all $version -push_fission_bundle_image $version -make_github_release $version +push_all $version +build_and_push_all_envs $version +build_charts $version + +tag_and_release $version +attach_github_release_cli $version +attach_github_release_charts $version