Fix scripts for release and nightly builds on ci.centos.org (#15573)
* Fix CI release job Signed-off-by: Vitalii Parfonov <vparfono@redhat.com> * Add image tag setting script Signed-off-by: Vitalii Parfonov <vparfono@redhat.com>7.20.x
parent
e5cfda1c58
commit
42e796f067
|
|
@ -18,4 +18,4 @@ load_jenkins_vars
|
|||
load_mvn_settings_gpg_key
|
||||
install_deps
|
||||
build_and_deploy_artifacts
|
||||
publishImagesOnQuay
|
||||
publishImagesOnQuay "nightly"
|
||||
|
|
|
|||
|
|
@ -17,5 +17,7 @@
|
|||
load_jenkins_vars
|
||||
load_mvn_settings_gpg_key
|
||||
install_deps
|
||||
setup_gitconfig
|
||||
releaseProject
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,30 @@
|
|||
# update machine, get required deps in place
|
||||
# this script assumes its being run on CentOS Linux 7/x86_64
|
||||
|
||||
|
||||
function die_with() {
|
||||
echo "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
function getCurrentVersion() {
|
||||
echo $(scl enable rh-maven33 "mvn help:evaluate -Dexpression=project.version -q -DforceStdout")
|
||||
}
|
||||
|
||||
function getReleaseVersion() {
|
||||
echo "$(echo $1 | cut -d'-' -f1)" #cut SNAPSHOT form the version name
|
||||
}
|
||||
|
||||
function setReleaseVersionInMavenProject(){
|
||||
scl enable rh-maven33 "mvn versions:set -DgenerateBackupPoms=false -DnewVersion=$1"
|
||||
}
|
||||
|
||||
load_jenkins_vars() {
|
||||
set +x
|
||||
eval "$(./env-toolkit load -f jenkins-env.json \
|
||||
CHE_BOT_GITHUB_TOKEN \
|
||||
CHE_MAVEN_SETTINGS \
|
||||
CHE_GITHUB_SSH_KEY \
|
||||
CHE_OSS_SONATYPE_GPG_KEY \
|
||||
CHE_OSS_SONATYPE_PASSPHRASE \
|
||||
QUAY_ECLIPSE_CHE_USERNAME \
|
||||
|
|
@ -23,13 +42,17 @@ load_jenkins_vars() {
|
|||
}
|
||||
|
||||
load_mvn_settings_gpg_key() {
|
||||
set -x
|
||||
mkdir $HOME/.m2
|
||||
set +x
|
||||
mkdir $HOME/.m2
|
||||
#prepare settings.xml for maven and sonatype (central maven repository)
|
||||
echo $CHE_MAVEN_SETTINGS | base64 -d > $HOME/.m2/settings.xml
|
||||
echo ${CHE_MAVEN_SETTINGS} | base64 -d > $HOME/.m2/settings.xml
|
||||
#load GPG key for sign artifacts
|
||||
echo $CHE_OSS_SONATYPE_GPG_KEY | base64 -d > $HOME/.m2/gpg.key
|
||||
echo ${CHE_OSS_SONATYPE_GPG_KEY} | base64 -d > $HOME/.m2/gpg.key
|
||||
#load SSH key for release process
|
||||
echo ${#CHE_OSS_SONATYPE_GPG_KEY}
|
||||
echo ${CHE_GITHUB_SSH_KEY} | base64 -d > $HOME/.ssh/id_rsa
|
||||
chmod 0400 $HOME/.ssh/id_rsa
|
||||
ssh-keyscan github.com >> ~/.ssh/known_hosts
|
||||
set -x
|
||||
gpg --import $HOME/.m2/gpg.key
|
||||
}
|
||||
|
|
@ -50,38 +73,40 @@ install_deps(){
|
|||
build_and_deploy_artifacts() {
|
||||
set -x
|
||||
scl enable rh-maven33 'mvn clean install -U -Pintegration'
|
||||
if [ $? -eq 0 ]; then
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo 'Build Success!'
|
||||
echo 'Going to deploy artifacts'
|
||||
scl enable rh-maven33 "mvn clean deploy -DcreateChecksum=true -Dgpg.passphrase=$CHE_OSS_SONATYPE_PASSPHRASE"
|
||||
else
|
||||
echo 'Build Failed!'
|
||||
exit 1
|
||||
die_with 'Build Failed!'
|
||||
fi
|
||||
}
|
||||
|
||||
releaseProject() {
|
||||
#test 4
|
||||
CUR_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
|
||||
TAG = $(echo $CUR_VERSION | cut -d'-' -f1) #cut SNAPSHOT form the version name
|
||||
echo -e "\x1B[92m############### Release: $TAG\x1B[0m"
|
||||
scl enable rh-maven33 "mvn release:prepare release:perform -B -Dresume=false -Dtag=$TAG -DreleaseVersion=$TAG '-Darguments=-DskipTests=true -Dskip-validate-sources -Dgpg.passphrase=$CHE_OSS_SONATYPE_PASSPHRASE -Darchetype.test.skip=true -Dversion.animal-sniffer.enforcer-rule=1.16'"
|
||||
gitHttps2ssh(){
|
||||
#git remote set-url origin git@github.com:$(git remote get-url origin | sed 's/https:\/\/github.com\///' | sed 's/git@github.com://')
|
||||
#git version 1.8.3 not support get-url sub-command so hardcode url
|
||||
git remote set-url origin git@github.com:eclipse/che
|
||||
}
|
||||
|
||||
|
||||
publishImagesOnQuay() {
|
||||
setup_gitconfig() {
|
||||
git config --global user.name "Vitalii Parfonov"
|
||||
git config --global user.email vparfono@redhat.com
|
||||
}
|
||||
|
||||
|
||||
|
||||
publishImagesOnQuayLatest() {
|
||||
echo "Going to build and push docker images"
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
TAG=$1
|
||||
git checkout ${TAG}
|
||||
REGISTRY="quay.io"
|
||||
ORGANIZATION="eclipse"
|
||||
# For pushing to quay.io 'eclipse' organization we need to use different credentials
|
||||
QUAY_USERNAME=${QUAY_ECLIPSE_CHE_USERNAME}
|
||||
QUAY_PASSWORD=${QUAY_ECLIPSE_CHE_PASSWORD}
|
||||
if [ -n "${QUAY_USERNAME}" ] && [ -n "${QUAY_PASSWORD}" ]; then
|
||||
docker login -u "${QUAY_USERNAME}" -p "${QUAY_PASSWORD}" "${REGISTRY}"
|
||||
if [[ -n "${QUAY_ECLIPSE_CHE_USERNAME}" ]] && [[ -n "${QUAY_ECLIPSE_CHE_PASSWORD}" ]]; then
|
||||
docker login -u "${QUAY_ECLIPSE_CHE_USERNAME}" -p "${QUAY_ECLIPSE_CHE_PASSWORD}" "${REGISTRY}"
|
||||
else
|
||||
echo "Could not login, missing credentials for pushing to the '${ORGANIZATION}' organization"
|
||||
return
|
||||
|
|
@ -94,43 +119,43 @@ publishImagesOnQuay() {
|
|||
|
||||
# KEEP RIGHT ORDER!!!
|
||||
DOCKER_FILES_LOCATIONS=(
|
||||
dockerfiles/endpoint-watcher
|
||||
dockerfiles/keycloak
|
||||
dockerfiles/postgres
|
||||
dockerfiles/dev
|
||||
dockerfiles/che
|
||||
dockerfiles/dashboard-dev
|
||||
dockerfiles/e2e
|
||||
dockerfiles/endpoint-watcher
|
||||
dockerfiles/keycloak
|
||||
dockerfiles/postgres
|
||||
dockerfiles/dev
|
||||
dockerfiles/che
|
||||
dockerfiles/dashboard-dev
|
||||
dockerfiles/e2e
|
||||
)
|
||||
|
||||
IMAGES_LIST=(
|
||||
eclipse/che-endpoint-watcher
|
||||
eclipse/che-keycloak
|
||||
eclipse/che-postgres
|
||||
eclipse/che-dev
|
||||
eclipse/che-server
|
||||
eclipse/che-dashboard-dev
|
||||
eclipse/che-e2e
|
||||
eclipse/che-endpoint-watcher
|
||||
eclipse/che-keycloak
|
||||
eclipse/che-postgres
|
||||
eclipse/che-dev
|
||||
eclipse/che-server
|
||||
eclipse/che-dashboard-dev
|
||||
eclipse/che-e2e
|
||||
)
|
||||
|
||||
|
||||
# BUILD IMAGES
|
||||
for image_dir in ${DOCKER_FILES_LOCATIONS[@]}
|
||||
do
|
||||
bash $(pwd)/$image_dir/build.sh
|
||||
if [ $image_dir == "dockerfiles/che" ]; then
|
||||
bash $(pwd)/${image_dir}/build.sh --tag:${TAG}
|
||||
if [[ ${image_dir} == "dockerfiles/che" ]]; then
|
||||
#CENTOS SINGLE USER
|
||||
BUILD_ASSEMBLY_DIR=$(echo assembly/assembly-main/target/eclipse-che-*/eclipse-che-*/)
|
||||
LOCAL_ASSEMBLY_DIR="$image_dir/eclipse-che"
|
||||
if [ -d "${LOCAL_ASSEMBLY_DIR}" ]; then
|
||||
LOCAL_ASSEMBLY_DIR="${image_dir}/eclipse-che"
|
||||
if [[ -d "${LOCAL_ASSEMBLY_DIR}" ]]; then
|
||||
rm -r "${LOCAL_ASSEMBLY_DIR}"
|
||||
fi
|
||||
cp -r "${BUILD_ASSEMBLY_DIR}" "${LOCAL_ASSEMBLY_DIR}"
|
||||
docker build -t ${ORGANIZATION}/che-server:nightly-centos -f $(pwd)/$image_dir/Dockerfile.centos $(pwd)/$image_dir/
|
||||
docker build -t ${ORGANIZATION}/che-server:${TAG}-centos -f $(pwd)/${image_dir}/Dockerfile.centos $(pwd)/${image_dir}/
|
||||
fi
|
||||
if [ $? -ne 0 ]; then
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "ERROR:"
|
||||
echo "build of '$image_dir' image is failed!"
|
||||
echo "build of '${image_dir}' image is failed!"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
|
@ -138,17 +163,47 @@ publishImagesOnQuay() {
|
|||
#PUSH IMAGES
|
||||
for image in ${IMAGES_LIST[@]}
|
||||
do
|
||||
docker tag "${image}:nightly" "${REGISTRY}/${image}:nightly"
|
||||
echo y | docker push "${REGISTRY}/${image}:nightly"
|
||||
if [ $image == "${ORGANIZATION}/che-server" ]; then
|
||||
docker tag "${image}:nightly" "${REGISTRY}/${image}:nightly-centos"
|
||||
echo y | docker push "${REGISTRY}/${ORGANIZATION}/che-server:nightly-centos"
|
||||
docker tag "${image}:${TAG}" "${REGISTRY}/${image}:${TAG}"
|
||||
echo y | docker push "${REGISTRY}/${image}:${TAG}"
|
||||
if [[ $2 == "pushLatest" ]]; then
|
||||
docker tag "${image}:${TAG}" "${REGISTRY}/${image}:latest"
|
||||
echo y | docker push "${REGISTRY}/${image}:latest"
|
||||
fi
|
||||
if [ $? -ne 0 ]; then
|
||||
|
||||
if [[ ${image} == "${ORGANIZATION}/che-server" ]]; then
|
||||
docker tag "${image}:${TAG}" "${REGISTRY}/${image}:${TAG}-centos"
|
||||
echo y | docker push "${REGISTRY}/${ORGANIZATION}/che-server:${TAG}-centos"
|
||||
if [[ $2 == "pushLatest" ]]; then
|
||||
docker tag "${image}:${TAG}" "${REGISTRY}/${image}:latest-centos"
|
||||
echo y | docker push "${REGISTRY}/${ORGANIZATION}/che-server:latest-centos"
|
||||
fi
|
||||
fi
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "ERROR:"
|
||||
echo "docker push of '$image' image is failed!"
|
||||
echo "docker push of '${image}' image is failed!"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
releaseProject() {
|
||||
set -x
|
||||
gitHttps2ssh
|
||||
git checkout -f release
|
||||
curVer=$(getCurrentVersion)
|
||||
tag=$(getReleaseVersion ${curVer})
|
||||
echo "Release version ${tag}"
|
||||
setReleaseVersionInMavenProject ${tag}
|
||||
git commit -asm "Release version ${tag}"
|
||||
scl enable rh-maven33 'mvn clean install -U -DskipTests=true -Dskip-validate-sources'
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo 'Build Success!'
|
||||
echo 'Going to deploy artifacts'
|
||||
scl enable rh-maven33 "mvn clean deploy -DcreateChecksum=true -DskipTests=true -Dskip-validate-sources -Dgpg.passphrase=$CHE_OSS_SONATYPE_PASSPHRASE"
|
||||
else
|
||||
die_with 'Build Failed!'
|
||||
fi
|
||||
git tag "${tag}" || die_with "Failed to create tag ${tag}! Release has been deployed, however"
|
||||
git push --tags || die_with "Failed to push tags. Please do this manually"
|
||||
publishImagesOnQuayLatest ${tag} "pushLatest"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
# Copyright (c) 2017 Red Hat, Inc.
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
sed -i '' "s/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_DEVFILE_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_CHE_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_KEYCLOAK_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
|
||||
sed -i '' "s/che.factory.default_editor=eclipse\/che-theia\/next/che.factory.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/nightly/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.workspace.devfile.default_editor=eclipse\/che-theia\/next/che.workspace.devfile.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.workspace.devfile.default_editor.plugins=eclipse\/che-machine-exec-plugin\/nightly/che.workspace.devfile.default_editor.plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
|
||||
sed -i '' "s/che-plugin-registry:nightly/che-plugin-registry:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-plugin-registry/values.yaml
|
||||
sed -i '' "s/che-devfile-registry:nightly/che-devfile-registry:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-devfile-registry/values.yaml
|
||||
sed -i '' "s/che-postgres:nightly/che-postgres:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-postgres/values.yaml
|
||||
sed -i '' "s/che-keycloak:nightly/che-keycloak:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-keycloak/values.yaml
|
||||
sed -i '' "s/eclipse\/che-server:nightly/eclipse\/che-server:$1/g" ../deploy/kubernetes/helm/che/values.yaml
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
# Copyright (c) 2017 Red Hat, Inc.
|
||||
# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
sed -i '' "s/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_DEVFILE_REGISTRY_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_CHE_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
sed -i '' "s/DEFAULT_KEYCLOAK_IMAGE_TAG=\"nightly\"/DEFAULT_PLUGIN_REGISTRY_IMAGE_TAG=\"$1\"/g" ../deploy/openshift/deploy_che.sh
|
||||
|
||||
sed -i '' "s/che.factory.default_editor=eclipse\/che-theia\/next/che.factory.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/nightly/che.factory.default_plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.workspace.devfile.default_editor=eclipse\/che-theia\/next/che.workspace.devfile.default_editor=eclipse\/che-theia\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
sed -i '' "s/che.workspace.devfile.default_editor.plugins=eclipse\/che-machine-exec-plugin\/nightly/che.workspace.devfile.default_editor.plugins=eclipse\/che-machine-exec-plugin\/$1/g" ../assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/che.properties
|
||||
|
||||
sed -i '' "s/che-plugin-registry:nightly/che-plugin-registry:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-plugin-registry/values.yaml
|
||||
sed -i '' "s/che-devfile-registry:nightly/che-devfile-registry:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-devfile-registry/values.yaml
|
||||
sed -i '' "s/che-postgres:nightly/che-postgres:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-postgres/values.yaml
|
||||
sed -i '' "s/che-keycloak:nightly/che-keycloak:$1/g" ../deploy/kubernetes/helm/che/custom-charts/che-keycloak/values.yaml
|
||||
sed -i '' "s/eclipse\/che-server:nightly/eclipse\/che-server:$1/g" ../deploy/kubernetes/helm/che/values.yaml
|
||||
|
||||
|
||||
Loading…
Reference in New Issue