X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Frelease-job.sh;h=48d8f2c2f976d979979e815c802adfdb3616396e;hb=e19d27f0f0de4d49730a5965b2f209153809e352;hp=88b285c49971606fbbde0a1a0209a4d365436da1;hpb=e7d3f4f7f7c439bf2b1c09192b41256064224d8e;p=releng%2Fglobal-jjb.git diff --git a/shell/release-job.sh b/shell/release-job.sh index 88b285c4..48d8f2c2 100644 --- a/shell/release-job.sh +++ b/shell/release-job.sh @@ -29,11 +29,6 @@ echo "########### Start Script release-job.sh ################################## LOGS_SERVER="${LOGS_SERVER:-None}" MAVEN_CENTRAL_URL="${MAVEN_CENTRAL_URL:-None}" -#OPTIONAL -if grep -q "\.maven_central_url" "$release_file"; then - MAVEN_CENTRAL_URL="$(niet ".maven_central_url" "$release_file")" -fi - if [ "${LOGS_SERVER}" == 'None' ]; then echo "FAILED: log server not found" exit 1 @@ -41,22 +36,25 @@ fi NEXUS_URL="${NEXUSPROXY:-$NEXUS_URL}" +# Fetch the release-schema.yaml +wget -q https://github.com/lfit/releng-global-jjb/blob/master/schema/release-schema.yaml + release_files=$(git diff HEAD^1 --name-only -- "releases/") echo "RELEASE FILES ARE AS FOLLOWS: $release_files" for release_file in $release_files; do - echo "This is the release file: $release_file" - echo "--> Verifying $release_file Schema." - echo "DUMMY CODE:" - #Make sure the schema check catches a missing trailing / on log_dir - #lftools schema is written, but not the schema file (yet) - echo "lftools schema verify [OPTIONS] $release_file $SCHEMAFILE" + echo "--> Verifying $release_file schema." + lftools schema verify $release_file release-schema.yaml + + #OPTIONAL + if grep -q "\.maven_central_url" "$release_file"; then + MAVEN_CENTRAL_URL="$(niet ".maven_central_url" "$release_file")" + fi VERSION="$(niet ".version" "$release_file")" PROJECT="$(niet ".project" "$release_file")" LOG_DIR="$(niet ".log_dir" "$release_file")" - NEXUS_PATH="${SILO}/${JENKINS_HOSTNAME}/" LOGS_URL="${LOGS_SERVER}/${NEXUS_PATH}${LOG_DIR}" PATCH_DIR="$(mktemp -d)" @@ -71,7 +69,7 @@ for release_file in $release_files; do echo "LOGS_SERVER: $LOGS_SERVER" echo "NEXUS_URL: $NEXUS_URL" echo "NEXUS_PATH: $NEXUS_PATH" - echo "ODLNEXUSPROXY: $ODLNEXUSPROXY" + echo "NEXUSPROXY: $NEXUSPROXY" echo "JENKINS_HOSTNAME: $JENKINS_HOSTNAME" echo "SILO: $SILO" echo "PROJECT: $PROJECT" @@ -85,11 +83,21 @@ for release_file in $release_files; do cat "$PATCH_DIR"/taglist.log popd + # Verify allowed versions + # Allowed versions are "v#.#.#" or "#.#.#" aka SemVer + allowed_version_regex="^((v?)([0-9]+)\.([0-9]+)\.([0-9]+))$" + if [[ ! $VERSION =~ $allowed_version_regex ]]; then + echo "The version $VERSION is not a semantic valid version" + echo "Allowed versions are "v#.#.#" or "#.#.#" aka SemVer" + echo "See https://semver.org/ for more details on SemVer" + exit 1 + fi + git checkout "$(awk '{print $NF}' "$PATCH_DIR/taglist.log")" git fetch "$PATCH_DIR/$PROJECT.bundle" git merge --ff-only FETCH_HEAD - git tag -am "$PROJECT $VERSION" "v$VERSION" - sigul --batch -c "$SIGUL_CONFIG" sign-git-tag "$SIGUL_KEY" v"$VERSION" < "$SIGUL_PASSWORD" + git tag -am "$PROJECT $VERSION" "$VERSION" + sigul --batch -c "$SIGUL_CONFIG" sign-git-tag "$SIGUL_KEY" "$VERSION" < "$SIGUL_PASSWORD" echo "Showing latest signature for $PROJECT:" git log --show-signature -n1 @@ -97,7 +105,7 @@ for release_file in $release_files; do ########## Merge Part ############## if [[ "$JOB_NAME" =~ "merge" ]]; then echo "Running merge" - git push origin "v$VERSION" + git push origin "$VERSION" lftools nexus release --server "$NEXUS_URL" "$STAGING_REPO" if [ "${MAVEN_CENTRAL_URL}" == 'None' ]; then echo "No Maven central url specified, not pushing to maven central"