Rework creating tags & branches from release files
[releng.git] / jjb / releng / releng-release-create-branch.sh
index 663ff19..7e91d5a 100644 (file)
@@ -9,6 +9,10 @@
 ##############################################################################
 set -xe
 
+GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit}
+STREAM=${STREAM:-'nostream'}
+RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+
 # Configure the git user/email as we'll be pushing up changes
 git config --global user.name "jenkins-ci"
 git config --global user.email "jenkins-opnfv-ci@opnfv.org"
@@ -17,34 +21,53 @@ git config --global user.email "jenkins-opnfv-ci@opnfv.org"
 curl -kLo .git/hooks/commit-msg https://gerrit.opnfv.org/gerrit/tools/hooks/commit-msg
 chmod +x .git/hooks/commit-msg
 
-# Activate virtualenv, supressing shellcheck warning
-# shellcheck source=/dev/null
-. $WORKSPACE/venv/bin/activate
-pip install -r releases/scripts/requirements.txt
+clone_repo(){
+echo "--> Cloning $repo"
+if [ ! -d $repo ]; then
+    git clone $GIT_URL/$repo.git $repo
+fi
+}
 
-STREAM=${STREAM:-'nostream'}
-RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+check_if_ref_exists(){
+clone_repo
+cd "$repo"
+if git rev-list refs/heads/master | grep "$ref"; then
+  echo "$ref exists"
+  REF_EXISTS=true
+  cd -
+else
+  echo "$ref Does not exist please submit a valid ref for branching"
+  exit 1
+fi
+}
 
-for release_file in $RELEASE_FILES; do
+run_merge(){
+unset NEW_FILES
+if [[ $REF_EXISTS = true && "$JOB_NAME" =~ "merge" ]]; then
+  ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+  python releases/scripts/create_jobs.py -f $release_file
+  NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
+fi
+if [ -n "$NEW_FILES" ]; then
+  git add $NEW_FILES
+  git commit -sm "Create Stable Branch Jobs for $(basename $release_file .yaml)"
+  git push origin HEAD:refs/for/master
+fi
+}
 
+main(){
+for release_file in $RELEASE_FILES; do
     while read -r repo branch ref; do
-
         echo "$repo" "$branch" "$ref"
         branches="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/heads/$branch")"
-
         if ! [ -z "$branches" ]; then
             echo "refs/heads/$branch already exists at $ref ($branches)"
         else
-            ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+            run_merge
         fi
-
     done < <(python releases/scripts/repos.py -b -f "$release_file")
-
-    python releases/scripts/create_jobs.py -f $release_file
-    NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
-    if [ -n "$NEW_FILES" ]; then
-      git add $NEW_FILES
-      git commit -sm "Create Stable Branch Jobs for $(basename $release_file .yaml)"
-      git push origin HEAD:refs/for/master
-    fi
 done
+}
+
+check_if_ref_exists
+main