diff --git a/.circleci/config.yml b/.circleci/config.yml index 4f7a039e8df..d6a5f8b910e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -147,6 +147,16 @@ jobs: command: mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B install -P itests-openshift no_output_timeout: 3600 + + RELEASE: + machine: true + steps: + - checkout + - run: + command: | + bash ./scripts/prepare-environment.sh + bash ./scripts/release.sh + workflows: version: 2 build_and_test: @@ -154,3 +164,7 @@ workflows: - OPENSHIFT_3.6.0 - OPENSHIFT_3.6.1 - OPENSHIFT_3.7.0 + - RELEASE: + filters: + branches: + only: release-project diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..16be68ad8a2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,122 @@ +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +FROM centos:7 + +RUN yum update -y && \ + yum install -y centos-release-scl && \ + yum install -y docker sclo-git212-git unzip java-1.8.0-openjdk-devel java-1.8.0-openjdk-devel.i686 which && \ + yum clean all + +# Enable packages installed from SCL +# +# This approach is a hack, but is the only option that worked well with bash and +# sh in both interactive and non interactive modes. +# +# 1. Standard `scl enable`, `scl_source` etc wont work because each `RUN` +# statement spawns a new subshell and the changes in ENV is not persistent. +# +# 2. Sourcing files is hard because there is no file that is read by bash and sh +# in both interactive and non interactive modes. +# +# 3. Setting $ENV and $BASH_ENV to a file that executes commands from 1 didn't +# work with non interactive shells even though the docs says it will. +# +# If you would like to change this, you can test it with following commands +# +# `docker run sh -c 'git --version'` +# `docker run bash -c 'git --version'` +# `docker run sh -ic 'git --version'` +# `docker run bash -c 'git --version'` + +ENV PATH=/opt/rh/sclo-git212/root/bin:$PATH + +RUN curl --retry 999 --retry-max-time 0 -sSL https://bintray.com/artifact/download/fabric8io/helm-ci/helm-v0.1.0%2B825f5ef-linux-amd64.zip > helm.zip && \ + unzip helm.zip && \ + rm -f helm.zip && \ + mv helm /usr/bin/ + +ARG PUBRING +ARG SEC_JENKINS +ARG SECRING +ARG TRUSTDB +ARG GPG_PASSPHRASE +ARG SONATYPE_USERNAME +ARG SONATYPE_PASSWORD + +# put gpg keys in gpg home directory +ENV GPG_HOME $HOME/.gnupg \ + GPG_PASSPHRASE $GPG_PASSPRHASE + +#RUN PUBRING=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 + + +#RUN SECRING=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 +#RUN TRUSTDB=AWdwZwMDAQUBAgAAVfld3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +# Maven +RUN curl -L http://mirrors.ukfast.co.uk/sites/ftp.apache.org/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz | tar -C /opt -xzv + +ENV M2_HOME /opt/apache-maven-3.3.9 +ENV maven.home $M2_HOME +ENV M2 $M2_HOME/bin +ENV PATH $M2:$PATH +RUN mkdir --parents --mode 777 /root/.mvnrepository + +RUN mkdir /root/.m2/ + +RUN curl https://raw.githubusercontent.com/fabric8io/cico-bash-library/master/settings.xml > /root/.m2/settings.xml + +RUN sed -i 's/env.${SONATYPE_USERNAME}/jstrachan/' /root/.m2/settings.xml + +RUN sed -i 's/env.${SONATYPE_PASSWORD}/sp33d0/' /root/.m2/settings.xml + +# Set JDK to be 32bit +#COPY set_java $M2 +#RUN $M2/set_java && rm $M2/set_java +#RUN java -version + +# hub +RUN curl -L https://github.com/github/hub/releases/download/v2.2.3/hub-linux-amd64-2.2.3.tgz | tar xzv && \ + mv hub-linux-amd64-2.2.3/bin/hub /usr/bin/ && \ + rm -rf hub-linux-amd64-2.2.3 + +# exposecontroller +ENV EXPOSECONTROLLER_VERSION 2.3.27 +RUN curl -L https://github.com/fabric8io/exposecontroller/releases/download/v$EXPOSECONTROLLER_VERSION/exposecontroller-linux-amd64 > exposecontroller && \ + chmod +x exposecontroller && \ + mv exposecontroller /usr/bin/ + +# install grab +RUN curl -s https://raw.githubusercontent.com/shellib/grab/master/install.sh | bash + +# updatebot +ENV UPDATEBOT_VERSION 1.0.5 +RUN curl -L http://central.maven.org/maven2/io/fabric8/updatebot/updatebot/$UPDATEBOT_VERSION/updatebot-$UPDATEBOT_VERSION.jar -o /usr/bin/updatebot && chmod +x /usr/bin/updatebot + +ENV FABRIC8_USER_NAME=fabric8 +RUN useradd --user-group --create-home --shell /bin/false ${FABRIC8_USER_NAME} +ENV HOME=/home/${FABRIC8_USER_NAME} +ENV WORKSPACE=$HOME/workspace +RUN mkdir $WORKSPACE +COPY . $WORKSPACE + +RUN mkdir $HOME/.gnupg +RUN echo $PUBRING | base64 --decode > $HOME/.gnupg/pubring.gpg +RUN echo $SEC_JENKINS | base64 --decode > $HOME/.gnupg/sec_jenkins.gpg +RUN echo $SECRING | base64 --decode > $HOME/.gnupg/secring.gpg +RUN echo $TRUSTDB | base64 --decode > $HOME/.gnupg/trustdb.gpg +WORKDIR $WORKSPACE/ diff --git a/cico_build.sh b/cico_build.sh new file mode 100644 index 00000000000..11ba1f3791b --- /dev/null +++ b/cico_build.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -x + +# Exit on error +set -e + +source ./cico_setup.sh + +setup + +# Build kubernetes-model image +docker build -t kubernetes-client --build-arg PUBRING=$PUBRING \ + --build-arg SEC_JENKINS=$SEC_JENKINS \ + --build-arg SECRING=$SECRING \ + --build-arg TRUSTDB=$TRUSTDB \ + --build-arg GPG_PASSPHRASE=$GPG_PASSPHRASE \ + --build-arg SONATYPE_USERNAME=$SONATYPE_USERNAME \ + --build-arg SONATYPE_PASSWORD=$SONATYPE_PASSWORD \ + . + +CID=$(docker run --detach=true -t kubernetes-client) +# CID=$(docker run --detach=true -t kubernetes-client fabric8/maven-builder) +build + +#proceed=$(check_if_tagged) +#echo $proceed +#echo "Proceed is $proceed" +#if [ $proceed -eq '1' ] +#then +# release +#fi diff --git a/cico_setup.sh b/cico_setup.sh new file mode 100644 index 00000000000..75784888cea --- /dev/null +++ b/cico_setup.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Output command before executing +set -x + +# Exit on error +set -e + +# Source environment variables of the jenkins slave +# that might interest this worker. +function load_jenkins_vars() { + if [ -e "jenkins-env.json" ]; then + eval "$(./env-toolkit load -f jenkins-env.json \ + JENKINS_URL \ + GIT_BRANCH \ + GIT_COMMIT \ + BUILD_NUMBER \ + ghprbSourceBranch \ + ghprbActualCommit \ + BUILD_URL \ + ghprbPullId \ + PUBRING \ + SEC_JENKINS \ + SECRING \ + TRUSTDB \ + GPG_PASSPHRASE \ + SONATYPE_USERNAME \ + SONATYPE_PASSWORD \ + )" + fi +} + +function install_deps() { + # We need to disable selinux for now, XXX + /usr/sbin/setenforce 0 || : + + # Get all the deps in + yum -y install docker + + service docker start + + echo 'CICO: Dependencies installed' +} + +function setup() { + load_jenkins_vars + install_deps +} + +function build() { + docker exec $CID mvn clean install -DskipTests + docker exec $CID echo $PUBRING + docker exec $CID echo $TRUSTDB + docker exec $CID echo $SECRING +} + +function release() { + docker exec -i $CID /bin/bash -c 'bash release.sh ' +} + +function check_if_tagged() { + # We need to disable selinux for now, XXX + /usr/sbin/setenforce 0 || : + + # Get all the deps in + yum -y install git + + head=$(git ls-remote https://github.com/fabric8io/kubernetes-client.git cico-test | cut -c1-40) + latest_tagged=$(git ls-remote --tags https://github.com/fabric8io/kubernetes-client.git | grep $head) + echo $latest_tagged + + if [ -z "$latest_tagged" ] + then + is_latest_tagged=1 + echo 'Latest tagged commit is not tagged. No need to run the release pipeline' + return 0 + else + is_latest_tagged=0 + echo 'Latest commit is tagged. Proceeding the release pipeline' + return 1 + fi +} diff --git a/kubernetes-client/pom.xml b/kubernetes-client/pom.xml index cc38bc382f3..ce48b5e7a3f 100644 --- a/kubernetes-client/pom.xml +++ b/kubernetes-client/pom.xml @@ -20,7 +20,7 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/kubernetes-examples/pom.xml b/kubernetes-examples/pom.xml index aa1bcd4999d..6f3f777aaf7 100644 --- a/kubernetes-examples/pom.xml +++ b/kubernetes-examples/pom.xml @@ -20,7 +20,7 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/kubernetes-itests/pom.xml b/kubernetes-itests/pom.xml index b62d079b75f..5e8206eff8b 100644 --- a/kubernetes-itests/pom.xml +++ b/kubernetes-itests/pom.xml @@ -22,7 +22,7 @@ kubernetes-client-project io.fabric8 - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/kubernetes-server-mock/pom.xml b/kubernetes-server-mock/pom.xml index 01ded81d7da..93504964ecf 100644 --- a/kubernetes-server-mock/pom.xml +++ b/kubernetes-server-mock/pom.xml @@ -22,14 +22,14 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 4.0.0 io.fabric8 kubernetes-server-mock - 3.1-SNAPSHOT + 3.1.13 Fabric8 :: Kubernetes :: Server Mock jar diff --git a/kubernetes-tests/pom.xml b/kubernetes-tests/pom.xml index d6a13c9c4bf..88ee54d9878 100644 --- a/kubernetes-tests/pom.xml +++ b/kubernetes-tests/pom.xml @@ -22,7 +22,7 @@ kubernetes-client-project io.fabric8 - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/openshift-client/pom.xml b/openshift-client/pom.xml index 0d600812cd5..38ab1647928 100644 --- a/openshift-client/pom.xml +++ b/openshift-client/pom.xml @@ -20,7 +20,7 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/openshift-server-mock/pom.xml b/openshift-server-mock/pom.xml index 6511d16741d..44fadb6c214 100644 --- a/openshift-server-mock/pom.xml +++ b/openshift-server-mock/pom.xml @@ -22,7 +22,7 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 4.0.0 @@ -30,7 +30,7 @@ io.fabric8 openshift-server-mock Fabric8 :: Openshift :: Server Mock - 3.1-SNAPSHOT + 3.1.13 diff --git a/platforms/karaf/features/pom.xml b/platforms/karaf/features/pom.xml index df741f79a0f..e15a7cdbcb1 100644 --- a/platforms/karaf/features/pom.xml +++ b/platforms/karaf/features/pom.xml @@ -20,7 +20,7 @@ karaf io.fabric8.kubernetes - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/platforms/karaf/itests/pom.xml b/platforms/karaf/itests/pom.xml index 842740c829f..86af2b8499c 100644 --- a/platforms/karaf/itests/pom.xml +++ b/platforms/karaf/itests/pom.xml @@ -22,7 +22,7 @@ karaf io.fabric8.kubernetes - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/platforms/karaf/pom.xml b/platforms/karaf/pom.xml index a7e1b150b4b..a098cd0023e 100644 --- a/platforms/karaf/pom.xml +++ b/platforms/karaf/pom.xml @@ -20,7 +20,7 @@ platforms io.fabric8.kubernetes - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/platforms/pom.xml b/platforms/pom.xml index f23a1d98f7a..ecc213cd413 100644 --- a/platforms/pom.xml +++ b/platforms/pom.xml @@ -20,7 +20,7 @@ kubernetes-client-project io.fabric8 - 3.1-SNAPSHOT + 3.1.13 4.0.0 diff --git a/pom.xml b/pom.xml index 122e209208e..877c4c6ff11 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ io.fabric8 kubernetes-client-project - 3.1-SNAPSHOT + 3.1.13 pom Fabric8 :: Kubernetes :: Project @@ -65,6 +65,10 @@ + + oss-sonatype-staging + https://oss.sonatype.org/content/repositories/snapshots + oss-sonatype-staging Sonatype Staging Repository @@ -170,15 +174,6 @@ - - org.apache.maven.plugins - maven-gpg-plugin - 1.5 - - ${gpg.passphrase} - true - - com.mycila license-maven-plugin @@ -267,17 +262,36 @@ + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 + true + + oss-sonatype-staging + https://oss.sonatype.org/ + true + + release + + true + org.apache.maven.plugins maven-gpg-plugin + 1.5 + + 4uds0n + true + sign-artifacts @@ -420,4 +434,5 @@ + diff --git a/scripts/prepare-environment.sh b/scripts/prepare-environment.sh new file mode 100644 index 00000000000..111a201bc35 --- /dev/null +++ b/scripts/prepare-environment.sh @@ -0,0 +1,5 @@ +echo $SETTINGS_XML | base64 --decode > $HOME/.m2/settings.xml +echo $PUBRING | base64 --decode > $HOME/.gnupg/pubring.gpg +echo $SEC_JENKINS | base64 --decode > $HOME/.gnupg/sec_jenkins.gpg +echo $SECRING | base64 --decode > $HOME/.gnupg/secring.gpg +echo $TRUSTDB | base64 --decode > $HOME/.gnupg/trustdb.gpg diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100644 index 00000000000..08767c5916c --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +#!/bin/bash + +set -x + +project="fabric8io/kubernetes-client" +use_git_tag_next_version="true" +artifact_id_to_watch_in_central="kubernetes-client" + +git config --global user.email fabric8cd@gmail.com +git config --global user.name fabric8-cd + +source ./scripts/utils.sh + +# stage +output=$(stage_project) +echo $output + +# promote +release_sonatype_repo +wait_until_artifacts_are_synced_in_central + diff --git a/scripts/utils.sh b/scripts/utils.sh new file mode 100644 index 00000000000..cf366cb5f0b --- /dev/null +++ b/scripts/utils.sh @@ -0,0 +1,217 @@ +#!/bin/bash + +function get_project_version() { + project_version=$(mvn -q \ + -Dexec.executable="echo" \ + -Dexec.args='${project.version}' \ + --non-recursive \ + org.codehaus.mojo:exec-maven-plugin:1.3.1:exec) + echo $project_version +} + +function setup_git_ssh() { + git config --global user.email fabric8cd@gmail.com + git config --global user.name fabric8-cd +} + +function push_tag() { + release_version=$1 + git tag -fa v${release_version} -m 'Release version ${release_version}' + git push origin v${release_version} +} + +function semver_parse_into() { + local RE='[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)' + #MAJOR + eval $2=`echo $1 | sed -e "s#$RE#\1\#"` + #MINOR + eval $3=`echo $1 | sed -e "s#$RE#\2\#"` + #PATCH + eval $4=`echo $1 | sed -e "s#$RE#\3\#"` + #SPECIAL + eval $5=`echo $1 | sed -e "s#$RE#\4\#"` +} + +function get_new_ver_from_tag() { + version='1.0.0' + + # Set known prerelease prefixes, needed for the proper sort order in the next command + git config versionsort.prereleaseSuffix -RC + git config versionsort.prereleaseSuffix -M + + # if the repo has no tags this command will fail + git tag --sort version:refname | tail -1 > version.tmp + tag=$(cat version.tmp) + if [ ! -z "$tag" ]; then + local MAJOR=0 + local MINOR=0 + local PATCH=0 + local SPECIAL="" + semver_parse_into $tag MAJOR MINOR PATCH SPECIAL + MAJOR_VERSION=$MAJOR + MINOR_VERSION=$MINOR + PATCH_VERSION=$(($PATCH + 1)) + echo "$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION" + else + echo $version + fi + +} + +# check the logic of this for getting repo_id +function get_repo_ids() { + find target/ -maxdepth 1 -name "*.properties" > target/repos.txt + filename=$(cat target/repos.txt) + repo_id=$filename + #repo_id=$(cat $filename) + echo repo_id + exit 0 +} + +# check this +function stage_sonatype_repo() { + mvn clean -B + mvn -V -B -e -U install org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:deploy -P release -DnexusUrl=https://oss.sonatype.org -DserverId=oss-sonatype-staging + get_repo_ids +} + +function stage_project() { + setup_git_ssh + if [ -z $GH_USER ]; then + GH_USER=fabric8cd + echo $GH_USER + fi + git remote set-url origin https://${GH_USER}:${GH_TOKEN}@github.com/${project}.git + current_project_version=$(get_project_version) + version=$RELEASE_VERSION + mvn versions:set -DnewVersion=$version + repo_ids=$(stage_sonatype_repo) + push_tag $RELEASE_VERSION + echo "$project,$version,$repo_ids" +} + +# check how to handle if there is a failure in the release +function release_sonatype_repo() { + repo_id=$1 + mvn -B org.sonatype.plugins:nexus-staging-maven-plugin:1.6.5:rc-release -DserverId=oss-sonatype-staging -DnexusUrl=https://oss.sonatype.org -DstagingRepositoryId=${repo_id} -Ddescription=\"Next release is ready\" -DstagingProgressTimeoutMinutes=60 +} + +function wait_until_artifacts_are_synced_in_central() { + version=$1 + NEXT_WAIT_TIME=0 + until [ $(is_artifact_available_in_repo $version) == "success" ] || [ $NEXT_WAIT_TIME -eq 10 ]; do + echo "File yet not present in maven central" + sleep $(( NEXT_WAIT_TIME++ )) + done +} + +function is_artifact_available_in_repo() { + repo="http://central.maven.org/maven2" + group_id="io/fabric8" + artifact_id="$artifact_id_to_watch_in_central" + version=$1 + ext="jar" + + url="${repo}/${group_id}/${artifact_id}/${version}/${artifact_id}-${version}.${ext}" + if curl --output /dev/null --silent --head --fail "$url"; then + echo "success" + else + echo "failure" + fi +} + +function update_downstream_dependencies() { + # array of projects projects=("fabric8io/kubernetes-client" "fabric8io/kubernetes-model") + projects=$1 + property_name=$2 + version=$3 + if [ -z $GH_USER ]; then + GH_USER=fabric8cd + echo $GH_USER + fi + for project in ${projects[@]}; do + repo=$(echo "$project" | cut -d "/" -f2) + rm -rf ${repo} + git clone https://github.com/${project}.git + pushd $repo + git remote set-url origin https://${GH_USER}:${GH_TOKEN}@github.com/${project}.git + uid=$(uuidgen) + git checkout -b versionUpdate${uid} + # read pom.xml file + pom_file='pom.xml' + cat $pom_file + update_version $pom_file $property_name $version + commit_message="Update pom property ${propertyName} to ${version}" + git add $pom_file + output=$(git commit -m "${commit_message}") + if [[ $output = *"nothing to commit"* ]]; then + echo "There was no version update hence no change, skip commit" + else + echo "Version updated pushing changes" + git push origin versionUpdate${uid} + body="{ + \"title\": \"${commit_message}\", + \"head\": \"versionUpdate${uid}\", + \"base\": \"master\" + }" + pr_id=$(create_pull_request "${project}" "${body}") + wait_until_success "${pr_id}" "${project}" + merge_pr "${pr_id}" "${project}" + fi + + popd + + done + +} + +function update_version() { + # eg: sed -i -e 's/3.0.2<\/kubernetes.model.version>/ + # 3.0.3<\/kubernetes.model.version>/g' pom.xml + # updating the latest version in dependent projects pom.xml + # params: pom_file, property_name - property to be updated in pom.xml, version is the latest version + pom_file=$1 + property_name=$2 + version=$3 + previous_version=$(mvn -q -Dexec.executable="echo" \ + -Dexec.args='${'${property_name}'}' \ + --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec) + original_string="<$property_name>$previous_version<\/$property_name>" + replace_string="<$property_name>$version<\/$property_name>" + sed -i -e "s/$original_string/$replace_string/g" $pom_file + cat $pom_file +} + +function create_pull_request() { + project=$1 + body=$2 + api_url="https://api.github.com/repos/${project}/pulls" + pr_id=$(curl --silent -X POST -H "Authorization: Bearer $GH_TOKEN" -d "${body}" "${api_url}" \ + | sed -n 's/.*"number": \(.*\),/\1/p' ) + echo "$pr_id" +} + +function merge_pr() { + # Merge PR + pr_id=$1 + project=$2 + api_url="https://api.github.com/repos/${project}/pulls/${pr_id}/merge" + echo "Merging PR ${pr_id}" + curl --silent -X PUT -H "Authorization: Bearer $GH_TOKEN" "${api_url}" +} + +function wait_until_success { + pr_id=$1 + project=$2 + ref=$( curl --silent -X GET https://api.github.com/repos/"${project}"/pulls/"${pr_id}" \ + | sed -n 's/.*"ref": "\(.*\)",/\1/p' | head -1) # Extract "ref" value from the response + status="NA" + NEXT_WAIT_TIME=0 + # Max wait 720 seconds + until [ "$status" == "success" ] || [ $NEXT_WAIT_TIME -eq 7 ]; do + status=$( curl --silent -X GET https://api.github.com/repos/"${project}"/commits/"${ref}"/status \ + | sed -n 's/.*"state": "\(.*\)",/\1/p') # Extract "state" value from the response + echo "Pull Request status: ${status}. Waiting to merge..." + sleep $(( NEXT_WAIT_TIME++ )) + done +} diff --git a/uberjar/pom.xml b/uberjar/pom.xml index 79358376066..d0665af6ffd 100644 --- a/uberjar/pom.xml +++ b/uberjar/pom.xml @@ -22,7 +22,7 @@ kubernetes-client-project io.fabric8 - 3.1-SNAPSHOT + 3.1.13 4.0.0