diff --git a/.github/workflows/approve_mysqldbdump_pr.yml b/.github/workflows/approve_mysqldbdump_pr.yml new file mode 100644 index 0000000000..7167ef084b --- /dev/null +++ b/.github/workflows/approve_mysqldbdump_pr.yml @@ -0,0 +1,26 @@ +# Used to auto approve/merge PRs for mysqldbdump +name: Automerge mysqldbdump PR + +on: + pull_request: + types: + - opened + - labeled + pull_request_review: + types: + - submitted +jobs: + approve_and_merge: + runs-on: ubuntu-latest + if: github.actor == 'edx-deployment' && github.event.label.name == 'mysqldbdump' + steps: + - uses: hmarr/auto-approve-action@7782c7e2bdf62b4d79bdcded8332808fd2f179cd + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - name: automerge + uses: "pascalgn/automerge-action@7ab42e888a333bf77ce865bc84fedc6a365a3548" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + MERGE_LABELS: "mysqldbdump" + MERGE_FILTER_AUTHOR: "edx-deployment" + MERGE_METHOD: "merge" diff --git a/.github/workflows/mysqldbdump.yml b/.github/workflows/mysqldbdump.yml index 82fc774fb5..a5d626864e 100644 --- a/.github/workflows/mysqldbdump.yml +++ b/.github/workflows/mysqldbdump.yml @@ -17,7 +17,7 @@ jobs: with: time: '900s' - name: Dump database - run: docker exec -i edx.devstack.mysql mysqldump -u'edxapp001' -p'password' edxapp > edxapp.sql + run: docker exec -i edx.devstack.mysql mysqldump -u'edxapp001' -p'password' --skip-dump-date edxapp > edxapp.sql - name: Commit dump file to repo. run: ./.github/workflows/mysqldbdump_pr.sh env: diff --git a/.github/workflows/mysqldbdump_pr.sh b/.github/workflows/mysqldbdump_pr.sh index 2e3fd6fc8a..3dca1b09ea 100755 --- a/.github/workflows/mysqldbdump_pr.sh +++ b/.github/workflows/mysqldbdump_pr.sh @@ -14,21 +14,26 @@ tar -zxvf hub.tgz cd "$REPO_NAME" -git config --global user.name "${GITHUB_USER}" -git config --global user.email "${GITHUB_EMAIL}" +if [[ -z $(git status -s) ]]; then + echo "No changes to commit." +else + git config --global user.name "${GITHUB_USER}" + git config --global user.email "${GITHUB_EMAIL}" -obsolete_dump_prs=`../hub-linux*/bin/hub pr list -s open --format '%I:%H %n' | grep 'github-actions-mysqldbdump'` + obsolete_dump_prs=`../hub-linux*/bin/hub pr list -s open --format '%I:%H %n' | grep 'github-actions-mysqldbdump'` + + if [[ ! -z $obsolete_dump_prs ]]; then + for pr in $obsolete_dump_prs; do + IFS=':' read pr_num branch <<< "$pr" + ../hub-linux*/bin/hub issue update ${pr_num} -s closed + ../hub-linux*/bin/hub push origin --delete ${branch} + done + fi + + git checkout -b github-actions-mysqldbdump/$GITHUB_SHA + git add "${DB_NAME}".sql + git commit -m "MySQLdbdump" --author "GitHub Actions MySQLdbdump automation " + git push --set-upstream origin github-actions-mysqldbdump/$GITHUB_SHA + ../hub-linux*/bin/hub pull-request -m "${DB_NAME} MySQL database dump" -m "MySQL database dump" -l mysqldbdump -if [[ ! -z $obsolete_dump_prs ]]; then - for pr in $obsolete_dump_prs; do - IFS=':' read pr_num branch <<< "$pr" - ../hub-linux*/bin/hub issue update ${pr_num} -s closed - ../hub-linux*/bin/hub push origin --delete ${branch} - done fi - -git checkout -b github-actions-mysqldbdump/$GITHUB_SHA -git add "${DB_NAME}".sql -git commit -m "MySQLdbdump" --author "GitHub Actions MySQLdbdump automation " -git push --set-upstream origin github-actions-mysqldbdump/$GITHUB_SHA -../hub-linux*/bin/hub pull-request -m "${DB_NAME} MySQL database dump" -m "MySQL database dump"