#!/bin/bash REPO_URL="https://oauth2:${GL_TOKEN}@gitlab.sofa.dev/mrds/mrds_elt.git" DEV_BRANCH="dev" TARGET_BRANCH="latest" WORK_DIR="mrds_elt_merge" MERGE_BRANCH="dev_to_latest_merge" DIRECTORIES=( "airflow/devo_replicator" "airflow/ods/rqsd" "airflow/mopdb/RQSD" "dbt" "python/connectors/devo" "python/devo_replicator" "python/mrds_common" ".ci" ".gitlab-ci.yml" ".ci/mr_dev_to_latest.sh" ) echo "Setting up working directory..." git branch -D "$MERGE_BRANCH" 2>/dev/null || true rm -rf "$WORK_DIR" mkdir -p "$WORK_DIR" cd "$WORK_DIR" echo "Cloning repository..." git clone "$REPO_URL" . git config --global user.email "cicd@sofa.dev" git config --global user.name "CICD Pipeline" echo "Creating merge branch from $TARGET_BRANCH..." git checkout "$TARGET_BRANCH" git checkout -b "$MERGE_BRANCH" echo "Fetching $DEV_BRANCH branch..." git fetch origin "$DEV_BRANCH" echo "Selecting changes from $DEV_BRANCH for specific directories..." CHANGES_FOUND=false for dir in "${DIRECTORIES[@]}"; do echo "Copying $dir from $DEV_BRANCH to $MERGE_BRANCH" git checkout "origin/$DEV_BRANCH" -- "$dir" done if ! git diff --quiet "$TARGET_BRANCH"; then git commit -am "Update selected directories from $DEV_BRANCH" CHANGES_FOUND=true fi if ! git diff --quiet "$TARGET_BRANCH"; then CHANGES_FOUND=true fi if [ "$CHANGES_FOUND" = true ]; then echo "Pushing merge branch..." git push -f -u "$REPO_URL" "$MERGE_BRANCH" echo "Creating merge request..." if [ -z "$GL_TOKEN" ]; then echo "GL_TOKEN environment variable not set. Cannot create merge request." exit 1 else curl -X POST \ -H "PRIVATE-TOKEN: $GL_TOKEN" \ "https://gitlab.sofa.dev/api/v4/projects/${CI_PROJECT_ID}/merge_requests" \ -d "source_branch=${MERGE_BRANCH}&target_branch=${TARGET_BRANCH}&title=Requested merge of selected directories from ${DEV_BRANCH} to ${TARGET_BRANCH}&description=This MR contains selected directories from ${DEV_BRANCH} branch." fi else echo "No changes found between $DEV_BRANCH and $TARGET_BRANCH for the specified directories." echo "Skipping merge request creation." exit 0 fi