-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added create-release script Updated download-blobs script to allow version of Jenkins to be specified
- Loading branch information
Showing
10 changed files
with
221 additions
and
87 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/bin/bash | ||
|
||
usage() { | ||
echo "Usage: $(basename $0) <release type> [tarball output filename]" 1>&2 | ||
echo " release type must be 'dev' or 'final'" 1>&2 | ||
echo " tarball output filename is optional; defaults to:" 1>&2 | ||
echo " jenkins-bootstrap-dev.tgz for dev releases" 1>&2 | ||
echo " jenkins-bootstrap-final.tgz for final releases" 1>&2 | ||
echo | ||
exit 1 | ||
} | ||
|
||
get_jenkins_version() { | ||
local war=blobs/jenkins/jenkins.war | ||
local version | ||
if [[ ! -e ${war} ]]; then | ||
echo "Jenkins blob file missing; use 'download-blobs' to download" | ||
exit 1 | ||
fi | ||
|
||
version=$(unzip -p "${war}" META-INF/MANIFEST.MF | grep "^Jenkins-Version: " | sed -e 's#^Jenkins-Version: ##') | ||
version=${version%%[[:space:]]} | ||
echo "${version}" | ||
} | ||
|
||
main() { | ||
if [[ $# -lt 1 ]]; then | ||
usage "missing arguments" | ||
fi | ||
|
||
case ${1} in | ||
dev) | ||
create_args="--force" | ||
version_suffix="-dev.$(date '+%Y%m%d.%-H%M.%S+%Z')" | ||
;; | ||
final) | ||
create_args="--final" | ||
;; | ||
-h|--help) | ||
usage | ||
;; | ||
*) | ||
echo "ERROR: Invalid release type: ${1}" | ||
usage | ||
;; | ||
esac | ||
|
||
version="$(get_jenkins_version)${version_suffix}" | ||
filename=${2:-jenkins-bootstrap-${1}.tgz} | ||
create_args="${create_args} --version=${version} --tarball=${filename}" | ||
|
||
echo "Creating BOSH release with version: ${version}" | ||
bosh create-release ${create_args} | ||
} | ||
|
||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,178 @@ | ||
#!/bin/bash | ||
|
||
set -eo pipefail | ||
set -o pipefail | ||
|
||
SCRIPT_DIR=$(dirname $0) | ||
BLOBS_DIR=${SCRIPT_DIR}/blobs | ||
SCRIPT_NAME=$(basename $0) | ||
BOLD="\033[1m" | ||
RED="\033[31m" | ||
GREEN="\033[32m" | ||
BLUE="\033[34m" | ||
YELLOW="\033[33m" | ||
NORMAL="\033[0m" | ||
BLOBS=() | ||
|
||
usage() { | ||
echo "Usage: ${SCRIPT_NAME} [OPTIONS]" 1>&2 | ||
echo " Available Options:" | ||
echo " -c, --clean Cleans out existing blob files and re-downloads them" | ||
echo " -v, --version Download a specific Jenkins LTS version (\"latest\" will be used by default)" | ||
echo | ||
echo " Example usage: ${SCRIPT_NAME} --clean --version 2.150.1" | ||
echo | ||
exit 1 | ||
} | ||
|
||
fail() { | ||
echo -e "${RED}ERROR${NORMAL}: $*" 1>&2 | ||
exit 1 | ||
} | ||
|
||
show_spinner() { | ||
local -r pid="${1}" | ||
local -r delay='0.1' | ||
local spinstr='\|/-' | ||
local temp | ||
|
||
printf "Downloading " | ||
while kill -0 $pid 2>/dev/null; do | ||
temp="${spinstr#?}" | ||
printf "[%c]" "${spinstr}" | ||
spinstr=${temp}${spinstr%"${temp}"} | ||
sleep "${delay}" | ||
printf "\b\b\b" | ||
done | ||
|
||
printf "\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" | ||
} | ||
|
||
get_github_release_url() { | ||
local owner=${1} | ||
local repo=${2} | ||
local binary_type=${3:-linux} | ||
local version=${4:-latest} | ||
|
||
if [[ -z ${owner} ]] || [[ -z ${repo} ]]; then | ||
fail "GitHub owner and repo must be supplied" | ||
fi | ||
|
||
curl -s https://api.github.com/repos/${owner}/${repo}/releases/${version} \ | ||
| grep browser_download_url \ | ||
| grep ${binary_type} \ | ||
| cut -d '"' -f 4 | ||
} | ||
|
||
get_github_archive_url() { | ||
local owner=${1} | ||
local repo=${2} | ||
local tag | ||
|
||
if [[ -z ${owner} ]] || [[ -z ${repo} ]]; then | ||
fail "GitHub owner and repo must be supplied" | ||
fi | ||
|
||
tag=$(git ls-remote --tags --sort="v:refname" https://github.com/${owner}/${repo} | tail -n1 | sed 's/.*\///; s/\^{}//') | ||
echo "https://github.com/${owner}/${repo}/archive/${tag}.tar.gz" | ||
} | ||
|
||
get_plugin_url() { | ||
local plugin=${1} | ||
local baseurl version | ||
|
||
baseurl="https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/${plugin}" | ||
version=$(curl -s ${baseurl}/maven-metadata.xml \ | ||
| grep latest \ | ||
| sed 's/^[\ ]*\<latest\>//; s/\<\/latest\>//') | ||
echo "${baseurl}/${version}/${plugin}-${version}.jar" | ||
} | ||
|
||
# Usage: download_blob <path and name of blob in blobstore> <url of appropriate source/binary archive> | ||
download_blob() { | ||
local blob_name=${1} | ||
local blob_url=${2} | ||
local blob_dir=$(dirname ${blob_name}) | ||
local blob_file="${SCRIPT_DIR}/blobs/${blob_name}" | ||
|
||
shift; shift | ||
printf " > ${BLUE}${BOLD}%-40s${NORMAL}" "${blob_name}" | ||
if [[ -e ${blob_file} ]]; then | ||
echo -e "${YELLOW}Skipping; file exists${NORMAL}" | ||
else | ||
mkdir -p ${SCRIPT_DIR}/blobs/${blob_dir} | ||
|
||
echo Downloading ${blob_name} from ${blob_url}... | ||
mkdir -p ${BLOBS_DIR}/${blob_dir} | ||
wget "$@" -O ${BLOBS_DIR}/${blob_name} ${blob_url} | ||
bosh add-blob ${BLOBS_DIR}/${blob_name} ${blob_name} | ||
trap "kill 0" EXIT | ||
wget "$@" -q -O ${blob_file} ${blob_url} & | ||
show_spinner "$!" | ||
wait %1 | ||
if [[ $? -eq 0 ]]; then | ||
echo -e "${GREEN}Done${NORMAL}" | ||
BLOBS+=(${blob_name}) | ||
else | ||
echo -e "${RED}FAILED${NORMAL}" | ||
fail "Could not download ${blob_url}" | ||
fi | ||
fi | ||
} | ||
|
||
download_oracle_jdk_blob() { | ||
echo "Downloading Oracle JDK from $1..." | ||
mkdir -p ${BLOBS_DIR}/oracle-jdk | ||
wget \ | ||
--header "Cookie: oraclelicense=accept-securebackup-cookie" \ | ||
-O ${BLOBS_DIR}/oracle-jdk/oracle-jdk.tar.gz $1 | ||
add_blob() { | ||
local blob_name=${1} | ||
local blob_file=${SCRIPT_DIR}/blobs/${blob_name} | ||
|
||
if [[ -e ${blob_file} ]]; then | ||
bosh add-blob ${blob_file} ${blob_name} | ||
else | ||
fail "File missing for blob: ${blob_name}" | ||
fi | ||
} | ||
|
||
[[ $? -eq 0 ]] && bosh add-blob ${BLOBS_DIR}/oracle-jdk/oracle-jdk.tar.gz oracle-jdk/oracle-jdk.tar.gz | ||
clean_blobs() { | ||
echo "Cleaning out existing blobs..." | ||
[[ -d ${SCRIPT_DIR}/blobs ]] && rm -rf ${SCRIPT_DIR}/blobs | ||
echo "--- {}" > ${SCRIPT_DIR}/config/blobs.yml | ||
} | ||
|
||
rm -rf blobs | ||
echo "--- {}" > config/blobs.yml | ||
main() { | ||
local jenkins_version="latest" | ||
|
||
while [[ $# -gt 0 ]]; do | ||
case "$1" in | ||
-c|--clean) | ||
clean_blobs | ||
;; | ||
-v|--version) | ||
shift | ||
jenkins_version="${1}" | ||
;; | ||
-h|--help) | ||
usage | ||
;; | ||
-*) | ||
echo "${SCRIPT_NAME}: bad argument: $1" | ||
usage | ||
;; | ||
*) | ||
break | ||
;; | ||
esac | ||
shift | ||
done | ||
|
||
echo "Downloading Jenkins package blob (${jenkins_version}):" | ||
download_blob jenkins/jenkins.war "http://mirrors.jenkins.io/war-stable/${jenkins_version}/jenkins.war" | ||
|
||
echo | ||
echo "Downloading supporting package blobs:" | ||
download_blob oracle-jdk/oracle-jdk.tar.gz "https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz" --header "Cookie: oraclelicense=accept-securebackup-cookie" | ||
download_blob cf-cli/cf-cli-binary.tgz "https://packages.cloudfoundry.org/stable?release=linux64-binary&source=github" | ||
download_blob git-client/git-client-source.tar.gz $(get_github_archive_url git git) | ||
download_blob swarm-client/swarm-client.jar $(get_plugin_url swarm-client) | ||
download_blob spruce/spruce-binary $(get_github_release_url geofffranks spruce) | ||
|
||
if [ ${#BLOBS} -ne 0 ]; then | ||
for blob in ${BLOBS[@]}; do | ||
add_blob ${blob} | ||
done | ||
fi | ||
} | ||
|
||
download_blob oracle-jdk/oracle-jdk.tar.gz "https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz" --header "Cookie: oraclelicense=accept-securebackup-cookie" | ||
download_blob apache-groovy/apache-groovy-binary.zip "https://dl.bintray.com/groovy/maven/apache-groovy-binary-2.5.6.zip" | ||
download_blob apache-groovy/snakeyaml.jar "http://central.maven.org/maven2/org/yaml/snakeyaml/1.24/snakeyaml-1.24.jar" | ||
download_blob apache-maven/apache-maven-binary.tar.gz "http://ftp.wayne.edu/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz" | ||
download_blob cf-cli/cf-cli-binary.tgz "https://packages.cloudfoundry.org/stable?release=linux64-binary&source=github" | ||
download_blob git-client/git-client-source.tar.gz "https://github.com/git/git/archive/v2.21.0.tar.gz" | ||
download_blob golang/go-binary.tar.gz "https://dl.google.com/go/go1.12.linux-amd64.tar.gz" | ||
download_blob jenkins/jenkins.war "http://mirrors.jenkins.io/war-stable/latest/jenkins.war" | ||
download_blob swarm-client/swarm-client.jar "https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/swarm-client/3.9/swarm-client-3.9.jar" | ||
download_blob spruce/spruce-binary "https://github.com/geofffranks/spruce/releases/download/v1.19.2/spruce-linux-amd64" | ||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.