Loading create_new_tag.sh +32 −110 Original line number Diff line number Diff line Loading @@ -4,43 +4,43 @@ REPO="git@gitlab.e.foundation:e/os/android.git" apt install xmlstarlet create_branch(){ echo "Creating branch ci on "$2 git checkout -b $CI_COMMIT_REF_NAME git remote -v if grep -q "stages" .gitlab-ci.yml then sed -i 's/stages:/stages:\n - auto-merge-main/' .gitlab-ci.yml if ! grep -q "auto-merge-main" .gitlab-ci.yml; then thing git add .gitlab-ci.yml git commit -m "adding automerge script" #git push else echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml echo "already there" fi echo -e "- project: 'e/templates'\n ref: master\n file: '/gitlab-ci/.gitlab-ci-auto-merge-main.yml'" >> .gitlab-ci.yml cat .gitlab-ci.yml #git push $2 $CI_COMMIT_REF_NAME } } iterate_remote () { projects=`xmlstarlet select --template --value-of /manifest/project[@remote=\"$1\"]/@name $2` for project in $projects; do git clone git@gitlab.e.foundation:$project current_project git clone git@gitlab.e.foundation:$project && cd "$(basename "$_" .git)" cd current_project echo "creating branch "$new_version" on "$project create_branch $new_version origin cd .. rm -rf current_project # rm -rf current_project done } parse_manifests () { for filename in *.xml; do iterate_remote e $filename exit 0 iterate_remote e-priv $filename done } parse_and_update_project_manifest () { git clone $1 -b $CI_COMMIT_REF_NAME manifests cd manifests Loading @@ -49,110 +49,32 @@ parse_and_update_project_manifest () { cd .. rm -rf manifests } thing (){ sync_main_manifest(){ cd "$SRC_DIR" repo init --depth 1 -u $REPO -b $1 repo sync -c --force-sync --force-sync --force-remove-dirty --prune } # Identify new tag name if [ -z "$NEW_TAG" ]; if grep -q "stages" .gitlab-ci.yml then cd $CI_PROJECT_DIR echo "Retrieving last tag" current_version=`echo $CI_COMMIT_REF_NAME | sed 's/.*\-//'` latest_version=`git for-each-ref --sort=creatordate --format '%(refname)' refs/tags | grep "\-$current_version" | grep -v "beta" | grep -v "rc" | grep -ve ".*\..*\..*" | sed 's/.*\///' | tail -1` latest_version="${latest_version#*\.}" latest_version="${latest_version%\.*}" latest_version="${latest_version%\-*}" new_version=v1.$((latest_version+1))-$current_version echo "New version: "$new_version cd "$SRC_DIR" sed -i 's/stages:/stages:\n - auto-merge-main/' .gitlab-ci.yml else new_version=$NEW_TAG echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml fi if [ "$PREVERSION" == "beta" ] then git clone $REPO current_project -b $CI_COMMIT_REF_NAME cd current_project sed -i 's/'$CI_COMMIT_REF_NAME'/'$new_version'/' default.xml git add default.xml git commit -m "creating "$new_version" manifest" echo "creating branch "$new_version" on main manifest" create_branch $new_version origin #git push origin $new_version cd .. rm -rf current_project sync_main_manifest $CI_COMMIT_REF_NAME echo "==> Creating new branches on /e/ projects" repo forall -e -v -c 'if [ "${REPO_REMOTE}" = "e" ] || [ "${REPO_REMOTE}" = "e-priv" ] ; then pwd if [ "${REPO_REMOTE}" = "e" ]; then git remote add e-priv ssh://git@gitlab.e.foundation:2222/${REPO_PROJECT} git fetch e-priv fi; git remote -v echo "Creating branch ci on "$2 if grep -q "stages" .gitlab-ci.yml if grep -q "include" .gitlab-ci.yml then sed -i "s/stages:/stages:\n - auto-merge-main/" .gitlab-ci.yml sed -i "s/include:/include:\n - project: 'e\/templates'\n ref: master\n file: '\/gitlab-ci\/.gitlab-ci-auto-merge-main.yml'/" .gitlab-ci.yml else echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml echo -e "include:" >> .gitlab-ci.yml echo -e " - project: 'e/templates'\n ref: master\n file: '/gitlab-ci/.gitlab-ci-auto-merge-main.yml'" >> .gitlab-ci.yml fi echo -e "- project: \'e/templates\'\n ref: master\n file: \'/gitlab-ci/.gitlab-ci-auto-merge-main.yml\'" >> .gitlab-ci.yml cat .gitlab-ci.yml #git checkout -b "'$new_version'" #git push e-priv "'$new_version'" fi ;' cat .gitlab-ci.yml } # Not using repo sync in case of some conflicts between devices manifests mkdir working-dir cd working-dir echo ">> Get custom local manifests" parse_and_update_project_manifest git@gitlab.e.foundation:e/os/local_manifests.git echo ">> Get custom vendor manifests" parse_and_update_manifest git@gitlab.e.foundation:e/devices/manifests.git echo ">> Get custom vendor manifests" parse_and_update_project_manifest git@gitlab.e.foundation:e/devices/manifests.git else sync_main_manifest $new_version fi repo manifest -r -o $CI_PROJECT_DIR/default.xml cd $CI_PROJECT_DIR #git add . #git commit -m "Update $CI_COMMIT_REF_NAME manifest" || true #git push origin HEAD:$CI_COMMIT_REF_NAME apt install -y xmlstarlet if [ -z "$PREVERSION" ] then git tag v1.$((latest_version+1))-$current_version else git tag v1.$((latest_version+1))-${PREVERSION}-$current_version fi git remote -v #git push --tags cd "$SRC_DIR" Loading
create_new_tag.sh +32 −110 Original line number Diff line number Diff line Loading @@ -4,43 +4,43 @@ REPO="git@gitlab.e.foundation:e/os/android.git" apt install xmlstarlet create_branch(){ echo "Creating branch ci on "$2 git checkout -b $CI_COMMIT_REF_NAME git remote -v if grep -q "stages" .gitlab-ci.yml then sed -i 's/stages:/stages:\n - auto-merge-main/' .gitlab-ci.yml if ! grep -q "auto-merge-main" .gitlab-ci.yml; then thing git add .gitlab-ci.yml git commit -m "adding automerge script" #git push else echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml echo "already there" fi echo -e "- project: 'e/templates'\n ref: master\n file: '/gitlab-ci/.gitlab-ci-auto-merge-main.yml'" >> .gitlab-ci.yml cat .gitlab-ci.yml #git push $2 $CI_COMMIT_REF_NAME } } iterate_remote () { projects=`xmlstarlet select --template --value-of /manifest/project[@remote=\"$1\"]/@name $2` for project in $projects; do git clone git@gitlab.e.foundation:$project current_project git clone git@gitlab.e.foundation:$project && cd "$(basename "$_" .git)" cd current_project echo "creating branch "$new_version" on "$project create_branch $new_version origin cd .. rm -rf current_project # rm -rf current_project done } parse_manifests () { for filename in *.xml; do iterate_remote e $filename exit 0 iterate_remote e-priv $filename done } parse_and_update_project_manifest () { git clone $1 -b $CI_COMMIT_REF_NAME manifests cd manifests Loading @@ -49,110 +49,32 @@ parse_and_update_project_manifest () { cd .. rm -rf manifests } thing (){ sync_main_manifest(){ cd "$SRC_DIR" repo init --depth 1 -u $REPO -b $1 repo sync -c --force-sync --force-sync --force-remove-dirty --prune } # Identify new tag name if [ -z "$NEW_TAG" ]; if grep -q "stages" .gitlab-ci.yml then cd $CI_PROJECT_DIR echo "Retrieving last tag" current_version=`echo $CI_COMMIT_REF_NAME | sed 's/.*\-//'` latest_version=`git for-each-ref --sort=creatordate --format '%(refname)' refs/tags | grep "\-$current_version" | grep -v "beta" | grep -v "rc" | grep -ve ".*\..*\..*" | sed 's/.*\///' | tail -1` latest_version="${latest_version#*\.}" latest_version="${latest_version%\.*}" latest_version="${latest_version%\-*}" new_version=v1.$((latest_version+1))-$current_version echo "New version: "$new_version cd "$SRC_DIR" sed -i 's/stages:/stages:\n - auto-merge-main/' .gitlab-ci.yml else new_version=$NEW_TAG echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml fi if [ "$PREVERSION" == "beta" ] then git clone $REPO current_project -b $CI_COMMIT_REF_NAME cd current_project sed -i 's/'$CI_COMMIT_REF_NAME'/'$new_version'/' default.xml git add default.xml git commit -m "creating "$new_version" manifest" echo "creating branch "$new_version" on main manifest" create_branch $new_version origin #git push origin $new_version cd .. rm -rf current_project sync_main_manifest $CI_COMMIT_REF_NAME echo "==> Creating new branches on /e/ projects" repo forall -e -v -c 'if [ "${REPO_REMOTE}" = "e" ] || [ "${REPO_REMOTE}" = "e-priv" ] ; then pwd if [ "${REPO_REMOTE}" = "e" ]; then git remote add e-priv ssh://git@gitlab.e.foundation:2222/${REPO_PROJECT} git fetch e-priv fi; git remote -v echo "Creating branch ci on "$2 if grep -q "stages" .gitlab-ci.yml if grep -q "include" .gitlab-ci.yml then sed -i "s/stages:/stages:\n - auto-merge-main/" .gitlab-ci.yml sed -i "s/include:/include:\n - project: 'e\/templates'\n ref: master\n file: '\/gitlab-ci\/.gitlab-ci-auto-merge-main.yml'/" .gitlab-ci.yml else echo -e "stages:\n - auto-merge-main" >> .gitlab-ci.yml echo -e "include:" >> .gitlab-ci.yml echo -e " - project: 'e/templates'\n ref: master\n file: '/gitlab-ci/.gitlab-ci-auto-merge-main.yml'" >> .gitlab-ci.yml fi echo -e "- project: \'e/templates\'\n ref: master\n file: \'/gitlab-ci/.gitlab-ci-auto-merge-main.yml\'" >> .gitlab-ci.yml cat .gitlab-ci.yml #git checkout -b "'$new_version'" #git push e-priv "'$new_version'" fi ;' cat .gitlab-ci.yml } # Not using repo sync in case of some conflicts between devices manifests mkdir working-dir cd working-dir echo ">> Get custom local manifests" parse_and_update_project_manifest git@gitlab.e.foundation:e/os/local_manifests.git echo ">> Get custom vendor manifests" parse_and_update_manifest git@gitlab.e.foundation:e/devices/manifests.git echo ">> Get custom vendor manifests" parse_and_update_project_manifest git@gitlab.e.foundation:e/devices/manifests.git else sync_main_manifest $new_version fi repo manifest -r -o $CI_PROJECT_DIR/default.xml cd $CI_PROJECT_DIR #git add . #git commit -m "Update $CI_COMMIT_REF_NAME manifest" || true #git push origin HEAD:$CI_COMMIT_REF_NAME apt install -y xmlstarlet if [ -z "$PREVERSION" ] then git tag v1.$((latest_version+1))-$current_version else git tag v1.$((latest_version+1))-${PREVERSION}-$current_version fi git remote -v #git push --tags cd "$SRC_DIR"