FDIO: Fast Data Project introduction to Nordix
[infra/cicd.git] / jjb / global / rebase-jobs.sh
old mode 100755 (executable)
new mode 100644 (file)
index b451f5f..657ed11
@@ -4,16 +4,39 @@ set -o nounset
 set -o pipefail
 
 cd $WORKSPACE
-git checkout $UPSTREAM_BRANCH -q
-git pull -q
-echo "Commit is"
-echo "-------------------------------------------"
-git show -s
-echo "-------------------------------------------"
-echo "Adding new remote for sync"
+# Make sure the Nordix is set from Jenkins Job configuration
+# parameter: NORDIX_REMOTE and not from previous job execution
+if git remote | grep nordix > /dev/null ; then
+    git remote rm nordix
+fi
+# When the GERRIT_BRANCH is not set the rebase job wasn't triggered by merge
+# but it's executed as part of timer. In this case we will make sure that all
+# branches from remote are synced with Nordix Gerrit.
+if [[ -z "${GERRIT_BRANCH:-}" ]] ; then
+    echo "-- Fetch all ${PROJECT} branches from Gerrit upstream --"
+    REMOTE_BRANCHES=$(git branch -r | grep -v 'HEAD -> ' | awk '/origin/ {gsub("origin/","");print}')
+    for branch in ${REMOTE_BRANCHES}  ; do
+        git branch -f --track ${branch} origin/${branch}
+    done
+# The job was triggered by merge on upstream Gerrit. We will make sure that branch set
+# in GERRIT_BRANCH is in sync with Nordix Gerrit.
+else
+    echo "-- Fetch branch: ${GERRIT_BRANCH} for project: ${PROJECT} --"
+    REMOTE_BRANCHES=${GERRIT_BRANCH}
+    git branch -f --track ${GERRIT_BRANCH} origin/${GERRIT_BRANCH}
+fi
+git fetch origin --tags -v
+echo "-- Adding new remote $NORDIX_REMOTE for sync --"
 git remote add nordix $NORDIX_REMOTE
-echo "-------------------------------------------"
 git remote -v
-echo "-------------------------------------------"
-echo "Pushing changes to Nordix BRANCH"
-git push nordix $BRANCH
+echo "-- Merging changes from Gerrit upstream remote branches to local branch: --"
+for branch in ${REMOTE_BRANCHES}  ; do
+    echo "--- Branch name: ${branch}"
+    git checkout ${branch} -q -f
+    git merge origin/${branch} --ff-only --stat
+    echo "------ Pushing changes from branch: ${branch} to Nordix Gerrit"
+    git push nordix -v
+    echo "------ Pushing new tags from branch: ${branch} to Nordix Gerrit"
+    git push nordix --tags -f -v
+done
+echo "--------------------------------------------------------------------"