ci: Automate rebasing dev #149
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: | |
pull_request: | |
# schedule: | |
# - 0 8 * * * # Runs at 8am UTC | |
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: Get commit delta | |
id: commit-delta | |
run: | | |
DELTA=$(git cherry -v ko3n1g/dev main | tr '+' '*') | |
echo "COMMIT_DELTA<<EOF" >> $GITHUB_ENV | |
echo "$DELTA" >> $GITHUB_ENV | |
echo "EOF" >> $GITHUB_ENV | |
- 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: ${{ steps.fp.outputs.pr-number }} | |
edit-mode: replace | |
body: | | |
<!-- auto-rebase-message --> | |
beep boop 🤖: This branch was last rebased onto `main` on ${{ env.DATE }}. | |
--- | |
Updated commits: | |
``` | |
${{ steps.commit-delta.outputs.main }} | |
``` | |
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 }} | |