ci: Automate rebasing dev #140
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
name: sync main with dev | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
defaults: | |
run: | |
shell: bash -x -e -u -o pipefail {0} | |
jobs: | |
sync-branches-via-rebase: | |
runs-on: ubuntu-latest | |
name: syncing main with dev | |
outputs: | |
date: ${{ steps.date.outputs.date }} | |
environment: main | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
ref: ko3n1g/dev | |
fetch-depth: 0 | |
token: ${{ secrets.PAT }} | |
- name: Get todays date | |
id: date | |
run: | | |
DATE=$(date +"%Y-%m-%d") | |
echo "date=$DATE" | tee -a "$GITHUB_OUTPUT" | |
- name: Attempt rebase | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "NVIDIA NeMo Bot" | |
git fetch origin main | |
git rebase origin/main | |
git push --force | |
notify-success: | |
runs-on: ubuntu-latest | |
if: success() | |
needs: [sync-branches-via-rebase] | |
env: | |
DATE: ${{ needs.sync-branches-via-rebase.outputs.date }} | |
steps: | |
- name: Find PR | |
id: fp | |
env: | |
REPOSITORY: ${{ github.repository }} | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
set +x | |
PRs=$(curl -L \ | |
-H "Accept: application/vnd.github+json" \ | |
-H "Authorization: Bearer $GH_TOKEN" \ | |
-H "X-GitHub-Api-Version: 2022-11-28" \ | |
https://api.github.com/repos/$REPOSITORY/pulls) | |
PR_NUMBER=$(echo -E "$PRs" \ | |
| jq '.[] | |
| select(.head.ref == "ko3n1g/dev") | |
| .number' | |
) | |
set -x | |
echo "pr-number=$PR_NUMBER" | tee -a "$GITHUB_OUTPUT" | |
- name: Find Comment | |
uses: peter-evans/find-comment@v3 | |
id: fc | |
with: | |
issue-number: ${{ steps.fp.outputs.pr-number }} | |
body-includes: <!-- auto-rebase-message --> | |
- name: Add PR comment for PyLint | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
issue-number: ${{ github.event.number }} | |
edit-mode: replace | |
body: | | |
<!-- auto-rebase-message --> | |
beep boop 🤖: This branch was last rebased onto `main` on ${{ env.DATE }}. | |
notify-failure: | |
runs-on: ubuntu-latest | |
if: failure() | |
needs: [sync-branches-via-rebase] | |
env: | |
RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
SLACK_WEBHOOK_ADMIN: "<!subteam^${{ secrets.SLACK_WEBHOOK_ADMIN }}>" | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
DATE: ${{ needs.sync-branches-via-rebase.outputs.date }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: NVIDIA/NeMo-FW-CI-templates | |
ref: v0.5.0 | |
path: send-slack-alert | |
- name: Send Slack alert | |
uses: ./send-slack-alert/.github/actions/send-slack-alert | |
with: | |
message: > | |
Daily <${{ env.RUN_URL }}|sync main with dev> has failed for ${{ env.DATE }}. | |
cc: ${{ env.SLACK_WEBHOOK_ADMIN }} | |
webhook: ${{ env.SLACK_WEBHOOK_TEST }} | |