diff --git a/.github/workflows/reposync.yaml b/.github/workflows/reposync.yaml new file mode 100644 index 0000000..de185df --- /dev/null +++ b/.github/workflows/reposync.yaml @@ -0,0 +1,64 @@ +name: ent-repo-sync + +# Controls when the workflow will run +on: + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + sync: + runs-on: ubuntu-latest + steps: + - run: | + export GIT_USERNAME="${GIT_CONFIG_NAME}" + export GIT_PASSWORD="${GH_TOKEN}" + export ENTERPRISE_REPO="https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/devtron-labs/devtron-enterprise.git" + git clone https://github.com/devtron-labs/devtron + git clone $ENTERPRISE_REPO + + cd devtron && export GIT_COMMIT_ID=`git log --format="%H" -n 1` + + export GIT_COMMIT=${GIT_COMMIT_ID:0:8} + echo $GIT_COMMIT + git config --global user.email $GIT_CONFIG_EMAIL + git config --global user.name $GIT_USERNAME + + git status && git checkout main && git pull && rm -rf .github + + cd ../devtron-enterprise && git status && git checkout main && git pull + git branch | grep release-candidate + k=$(echo $?) + + if [ $k == 1 ] + then + git checkout -b release-candidate + else + echo "Branch exsist" + + git remote add oss-devtron ../devtron && git remote -v && git remote update && git merge oss-devtron/main + export WIRE_GEN_FILE_NAME="wire_gen.go" + export CONFLICT_FILES=`git diff --name-only --diff-filter=U --relative` + + if [[ $WIRE_GEN_FILE_NAME = $CONFLICT_FILES ]] + then + rm $WIRE_GEN_FILE_NAME + docker container run -w /devtron -v ./:/devtron golang /bin/sh -c "go install github.com/google/wire/cmd/wire@latest && wire" + git add $WIRE_GEN_FILE_NAME + elif [[ $CONFLICT_FILES != "" ]] + then + echo "more conflict files" + exit 1 + fi + git commit -m "OSS main synced" && git status + git checkout -b oss-enterprise-sync-$GIT_COMMIT && git push -u origin oss-enterprise-sync-$GIT_COMMIT + PR_RESPONSE=$(gh pr create --title "SYNC: OSS sync for $GIT_COMMIT" --fill --base main --head oss-enterprise-sync-$GIT_COMMIT --repo $ENTERPRISE_REPO) + echo "FINAL PR RESPONSE: $PR_RESPONSE" + env: + GH_TOKEN: ${{ secrets.GIT_TARGET_TOKEN }} + GIT_CONFIG_NAME: ${{ secrets.GIT_TARGET_USERNAME }} + GIT_CONFIG_EMAIL: ${{ secrets.GIT_TARGET_EMAIL }}