From 75358bfd6cf5818af47890da444c8ff2f46a2d50 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 21 Mar 2024 19:44:07 +0100 Subject: [PATCH] attempt merging --- .../create-merge-release-into-dev-pr.yml | 49 +++++++++++++++---- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/.github/workflows/create-merge-release-into-dev-pr.yml b/.github/workflows/create-merge-release-into-dev-pr.yml index d11a316ac767..7e0d31dc122d 100644 --- a/.github/workflows/create-merge-release-into-dev-pr.yml +++ b/.github/workflows/create-merge-release-into-dev-pr.yml @@ -2,6 +2,9 @@ name: create-merge-release-into-dev-pr on: workflow_dispatch: +env: + BASE_BRANCH: test-dev + permissions: {} jobs: setup: @@ -25,9 +28,10 @@ jobs: echo "branch=${BRANCH}" >> $GITHUB_OUTPUT - create-pr: + merge-or-create-pr: permissions: - pull-requests: write # for git push + contents: write # for git push + pull-requests: write # for creating pull request runs-on: ubuntu-latest needs: setup @@ -35,14 +39,39 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Create pull request - run: > - gh pr create - --base "$BASE_BRANCH" - --head "$RELEASE_BRANCH" - --title "Merge $RELEASE_BRANCH into $BASE_BRANCH" - --body 'Created by GitHub action' + with: + ref: ${{ env.BASE_BRANCH }} # TODO: DELETE ME + - name: Try merging + run: | + # Fetching the dev and release branches without fetching their complete history + # First fetch branches themselves excluding commits reachable by the other branch + git fetch --shallow-exclude "$BASE_BRANCH" origin "$RELEASE_BRANCH" + git fetch --shallow-exclude "$RELEASE_BRANCH" origin "$BASE_BRANCH" + # Resolve bug in git https://stackoverflow.com/a/63879454/96823 + git repack -d + # Get one commit more to connect the history of dev and release branches + git fetch --deepen 1 origin "$BASE_BRANCH" "$RELEASE_BRANCH" + + # Create branch without checkout just to have shorter automatic commit message + git branch "$RELEASE_BRANCH" origin/"$RELEASE_BRANCH" + + # Required config + git config user.name "OpenProject Actions CI" + git config user.email "operations+ci@openproject.com" + + if git diff --exit-code --quiet ..."$RELEASE_BRANCH"; then + echo "Nothing to merge" + else + if git merge --no-edit --no-ff "$RELEASE_BRANCH"; then + git push "$BASE_BRANCH" + else + gh pr create \ + --base "$BASE_BRANCH" \ + --head "$RELEASE_BRANCH" \ + --title "Merge $RELEASE_BRANCH into $BASE_BRANCH" \ + --body 'Created by GitHub action' + end + end env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BASE_BRANCH: dev RELEASE_BRANCH: ${{ needs.setup.outputs.latest_release_branch }}