0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-29 07:00:01 +00:00
netdata_netdata/packaging/manual_nightly_deployment.sh
Mansour Behabadi 165aa68c94
Add release channel customization to docker build ()
* Add release channel customization to docker build

* Add release channel to travis config

* Build releases with stable channel

* Update packaging/docker/build.sh

Co-Authored-By: Konstantinos Natsakis <5933427+knatsakis@users.noreply.github.com>

* Update packaging/docker/build.sh

Co-Authored-By: Konstantinos Natsakis <5933427+knatsakis@users.noreply.github.com>

Co-authored-by: Mansour Behabadi <mansour@oxplot.com>
Co-authored-by: Konstantinos Natsakis <5933427+knatsakis@users.noreply.github.com>
2020-01-29 11:03:22 +11:00

127 lines
3.3 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# This tool allows netdata team to manually deploy nightlies
# It emulates the nightly operations required for a new version to be published for our users
#
# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
#
# Author : Pavlos Emm. Katsoulakis <paul@netdata.cloud>
#
set -e
# If we are not in netdata git repo, at the top level directory, fail
TOP_LEVEL=$(basename "$(git rev-parse --show-toplevel)")
CWD=$(git rev-parse --show-cdup || echo "")
if [ -n "${CWD}" ] || [ ! "${TOP_LEVEL}" == "netdata" ]; then
echo "Run as .travis/$(basename "$0") from top level directory of netdata git repository"
echo "Changelog generation process aborted"
exit 1
fi
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
echo "Run as ./$(basename "$0") [docker|gcs]|all] from the top level directory of netdata GIT repository"
exit 1
fi
GSUTIL_BINARY=$(command -v gsutil 2> /dev/null)
if [ -z "${GSUTIL_BINARY}" ]; then
echo "No gsutil utility available, you need gsutil deployed to manually deploy to GCS"
exit 1
fi;
# Function declarations
publish_docker() {
# Ensure REPOSITORY present
if [ -z "${REPOSITORY}" ]; then
echo "Please provide the repository to deploy the containers:"
read -r REPOSITORY
export REPOSITORY
else
echo "Docker publishing to ${REPOSITORY}"
fi
# Ensure DOCKER_USERNAME present
if [ -z "${DOCKER_USERNAME}" ]; then
echo "For repository ${REPOSITORY}, Please provide the docker USERNAME to use:"
read -r DOCKER_USERNAME
export DOCKER_USERNAME
else
echo "Using docker username ${DOCKER_USERNAME}"
fi
# Ensure DOCKER_PASS present
if [ -z "${DOCKER_PASS}" ]; then
echo "Username ${DOCKER_USERNAME} received, now give me the password:"
read -r -s DOCKER_PASS
export DOCKER_PASS
else
echo "Docker password has already been set to env, using that"
fi
echo "Building Docker images.."
RELEASE_CHANNEL=nightly packaging/docker/build.sh
echo "Publishing Docker images.."
packaging/docker/publish.sh
}
publish_nightly_binaries() {
echo "Publishing nightly binaries to GCS"
echo "Please select the bucket to sync, from the ones available to you:"
bucket_list=$(${GSUTIL_BINARY} list | tr '\n' ' ')
declare -A buckets
idx=0
for abucket in ${bucket_list}; do
echo "${idx}. ${abucket}"
buckets["${idx}"]=${abucket}
((idx=idx+1))
done
read -p"Selection>" -r -n 1 selected_bucket
echo "Ok!"
echo "Syncing artifacts directory contents with GCS bucket: ${buckets[${selected_bucket}]}"
if [ -d artifacts ]; then
${GSUTIL_BINARY} -m rsync -r artifacts "${buckets["${selected_bucket}"]}"
echo "GCS Sync complete!"
else
echo "Directory artifacts does not exist, nothing to do on GCS"
fi
}
prepare_and_publish_gcs() {
# Prepare the artifacts directory
echo "Preparing artifacts directory contents"
.travis/create_artifacts.sh
# Publish it to GCS
publish_nightly_binaries
# Clean up
echo "Cleaning up repository"
make clean || echo "Nothing to clean"
make distclean || echo "Nothing to distclean"
rm -rf artifacts
}
# Mandatory variable declarations
export TRAVIS_REPO_SLUG="netdata/netdata"
echo "Manual nightly deployment procedure started"
case "$1" in
"docker")
publish_docker
;;
"gcs")
prepare_and_publish_gcs
;;
"all")
publish_docker
prepare_and_publish_gcs
;;
*)
echo "ERROR: Invalid request parameter $1. Valid values are: docker, gcs, all"
;;
esac
echo "Manual nightly deployment completed!"