blob: 64d23c25c4f91f5dfa43218f0ad6225ec69716eb [file] [log] [blame]
# Simplified Commit Queue
#
# (Force) push to "queue-main-$USER" a potential change, and
# this job will push it main if it passes pre-commit and tests,
# which will run in parallel. The push may fail if the commit
# cannot be pushed cleanly because it needs to be rebased, which
# will happen especially if another developer pushes a change at
# roughly the same time.
#
# Please keep this file in sync with queue-dev.yml.
name: Main Branch Commit Queue
on:
push:
branches:
- "queue-main-*"
permissions: read-all
jobs:
formatting:
uses: ./.github/workflows/formatting.yml
permissions:
contents: write
with:
auto_fix: true
go-test:
needs: [formatting]
uses: ./.github/workflows/go_test.yml
permissions: read-all
with:
ref: ${{ needs.formatting.outputs.commit_sha }}
ui-test:
needs: [formatting]
uses: ./.github/workflows/webui_test.yml
permissions: read-all
with:
ref: ${{ needs.formatting.outputs.commit_sha }}
push-to-main:
runs-on: ubuntu-latest
needs: [go-test, ui-test, formatting]
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to main
id: push
run: |
COMMIT_TO_PUSH="HEAD"
if [[ "${{ needs.formatting.outputs.commit_sha }}" != "" ]]; then
echo "Using formatted commit: ${{ needs.formatting.outputs.commit_sha }}"
COMMIT_TO_PUSH="${{ needs.formatting.outputs.commit_sha }}"
fi
# Get the actual commit SHA that we're pushing
COMMIT_SHA=$(git rev-parse "${COMMIT_TO_PUSH}")
echo "commit_sha=${COMMIT_SHA}" >> $GITHUB_OUTPUT
git push https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git "${COMMIT_TO_PUSH}":main
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Checkout pushed commit for Discord notification
if: success()
run: |
git checkout ${{ steps.push.outputs.commit_sha }}
- name: Send Discord notification
if: success()
env:
DISCORD_WEBHOOK_FOR_COMMITS: ${{ secrets.DISCORD_WEBHOOK_FOR_COMMITS }}
GITHUB_SHA: ${{ steps.push.outputs.commit_sha }}
run: python3 .github/scripts/discord_notify.py