-
Notifications
You must be signed in to change notification settings - Fork 230
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Final update to dependabot-merger.yml
- Loading branch information
1 parent
1caee00
commit 6ff7f52
Showing
1 changed file
with
70 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
name: Merge Dependabot PRs | ||
on: | ||
schedule: | ||
- cron: '0 9 * * 1' # Run this workflow every Monday at 9:00 | ||
- cron: "0 9 * * 1" # Run this workflow every Monday at 9:00 | ||
workflow_dispatch: | ||
|
||
jobs: | ||
merge: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v2 | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: master | ||
|
||
|
@@ -23,10 +23,9 @@ jobs: | |
- name: Get current date and time | ||
id: datetime | ||
run: echo "::set-output name=date::$(date +'%m-%d-%Y-%H-%M')" | ||
run: echo "date=$(date +'%m-%d-%Y-%H-%M')" >> $GITHUB_OUTPUT | ||
|
||
- name: Create new branch based on date and time | ||
id: create_new_branch | ||
run: | | ||
NEW_BRANCH="dependabot-test-${{ steps.datetime.outputs.date }}" | ||
git checkout -b $NEW_BRANCH | ||
|
@@ -36,21 +35,25 @@ jobs: | |
id: pr_list | ||
run: | | ||
PR_LIST=$(gh pr list --json number,headRefName --jq '.[] | "\(.number) \(.headRefName)"' | grep dependabot) | ||
PR_LIST=$(echo "$PR_LIST" | tr -d '\r') | ||
if [ -z "$PR_LIST" ]; then | ||
echo "No PRs from dependabot found." | ||
exit 0 | ||
fi | ||
echo "::set-output name=numbers::$PR_LIST" | ||
PR_COUNT=$(echo "$PR_LIST" | wc -l) | ||
echo "$PR_COUNT PR's to be merged: $PR_LIST" | ||
echo "$PR_COUNT PR's to be merged." | ||
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) | ||
echo "prs<<$EOF" >> $GITHUB_OUTPUT | ||
echo "$PR_LIST" >> $GITHUB_OUTPUT | ||
echo "$EOF" >> $GITHUB_OUTPUT | ||
- name: Merge PRs into new branch | ||
run: | | ||
NEW_BRANCH="dependabot-test-${{ steps.datetime.outputs.date }}" | ||
git checkout $NEW_BRANCH | ||
PR_LIST=$(gh pr list --json number,headRefName --jq '.[] | "\(.number) \(.headRefName)"' | grep dependabot) | ||
PR_LIST=$(echo "$PR_LIST" | tr -d '\r') | ||
echo "::set-output name=numbers::$PR_LIST" | ||
PR_LIST="${{ steps.pr_list.outputs.prs }}" | ||
while IFS= read -r line; do | ||
IFS=' ' read -r PR_NUMBER BRANCH_NAME <<< "$line" | ||
echo "Merging PR #$PR_NUMBER from branch $BRANCH_NAME into $NEW_BRANCH..." | ||
|
@@ -65,3 +68,61 @@ jobs: | |
run: | | ||
echo "Merging process completed successfully!" | ||
echo "New branch name: dependabot-test-${{ steps.datetime.outputs.date }}" | ||
- name: Generate PR links | ||
id: pr_links | ||
run: | | ||
PR_LIST="${{ steps.pr_list.outputs.prs }}" | ||
PR_LINKS="" | ||
while IFS= read -r line; do | ||
IFS=' ' read -r PR_NUMBER BRANCH_NAME <<< "$line" | ||
PR_URL="https://github.com/${GITHUB_REPOSITORY}/pull/$PR_NUMBER" | ||
PR_LINKS+="\n• <$PR_URL|#${PR_NUMBER}: ${BRANCH_NAME}>" | ||
done <<< "$PR_LIST" | ||
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) | ||
echo "pr_links<<$EOF" >> $GITHUB_OUTPUT | ||
echo "$PR_LINKS" >> $GITHUB_OUTPUT | ||
echo "$EOF" >> $GITHUB_OUTPUT | ||
- name: Post to a Slack channel | ||
uses: slackapi/[email protected] | ||
with: | ||
channel-id: "C03RTLRKJQP" | ||
payload: | | ||
{ | ||
"blocks": [ | ||
{ | ||
"type": "header", | ||
"text": { | ||
"type": "plain_text", | ||
"text": "⚡️ New iOS Dependabot Testing Branch", | ||
"emoji": true | ||
} | ||
}, | ||
{ | ||
"type": "section", | ||
"text": { | ||
"type": "mrkdwn", | ||
"text": "*Included PRs:*${{ steps.pr_links.outputs.pr_links }}" | ||
} | ||
}, | ||
{ | ||
"type": "actions", | ||
"elements": [ | ||
{ | ||
"type": "button", | ||
"text": { | ||
"type": "plain_text", | ||
"text": "Checkout Test Branch", | ||
"emoji": true | ||
}, | ||
"value": "branch-button", | ||
"url": "https://github.com/${{ github.repository }}/tree/dependabot-test-${{ steps.datetime.outputs.date }}", | ||
"action_id": "link-action" | ||
} | ||
] | ||
} | ||
] | ||
} | ||
env: | ||
SLACK_BOT_TOKEN: ${{ secrets.SLACK_SDK_BOT_TOKEN }} |