Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89ccad1a authored by Alexandre Roux's avatar Alexandre Roux
Browse files

Update file create_new_tag.sh

parent 0be1001d
Loading
Loading
Loading
Loading
+32 −110
Original line number Diff line number Diff line
@@ -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
@@ -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"