mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 21:14:01 +08:00
# Conflicts: # .github/workflows/auto_pr_review.yaml # .github/workflows/docs.yaml # .github/workflows/repo-maintenance.yaml # .gitignore # docs/CARS.md # opendbc_repo # panda # pyproject.toml # selfdrive/controls/lib/longitudinal_planner.py # selfdrive/test/process_replay/ref_commit # tinygrad_repo
152 lines
6.4 KiB
YAML
152 lines
6.4 KiB
YAML
name: "mici raylib ui preview"
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request_target:
|
|
types: [assigned, opened, synchronize, reopened, edited]
|
|
branches:
|
|
- 'master'
|
|
paths:
|
|
- 'selfdrive/assets/**'
|
|
- 'selfdrive/ui/**'
|
|
- 'system/ui/**'
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
UI_JOB_NAME: "Create mici raylib UI Report"
|
|
REPORT_NAME: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 'master' || github.event.number }}
|
|
SHA: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.sha || github.event.pull_request.head.sha }}
|
|
BRANCH_NAME: "openpilot/pr-${{ github.event.number }}-mici-raylib-ui"
|
|
MASTER_BRANCH_NAME: "openpilot_master_ui_mici_raylib"
|
|
# All report files are pushed here
|
|
REPORT_FILES_BRANCH_NAME: "mici-raylib-ui-reports"
|
|
|
|
jobs:
|
|
preview:
|
|
if: github.repository == 'sunnypilot/sunnypilot'
|
|
name: preview
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
actions: read
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Waiting for ui generation to end
|
|
uses: lewagon/wait-on-check-action@v1.3.4
|
|
with:
|
|
ref: ${{ env.SHA }}
|
|
check-name: ${{ env.UI_JOB_NAME }}
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
allowed-conclusions: success
|
|
wait-interval: 20
|
|
|
|
- name: Getting workflow run ID
|
|
id: get_run_id
|
|
run: |
|
|
echo "run_id=$(curl https://api.github.com/repos/${{ github.repository }}/commits/${{ env.SHA }}/check-runs | jq -r '.check_runs[] | select(.name == "${{ env.UI_JOB_NAME }}") | .html_url | capture("(?<number>[0-9]+)") | .number')" >> $GITHUB_OUTPUT
|
|
|
|
- name: Getting proposed ui # filename: pr_ui/mici_ui_replay.mp4
|
|
id: download-artifact
|
|
uses: dawidd6/action-download-artifact@v6
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
run_id: ${{ steps.get_run_id.outputs.run_id }}
|
|
search_artifacts: true
|
|
name: mici-raylib-report-1-${{ env.REPORT_NAME }}
|
|
path: ${{ github.workspace }}/pr_ui
|
|
|
|
- name: Getting master ui # filename: master_ui_raylib/mici_ui_replay.mp4
|
|
uses: actions/checkout@v6
|
|
with:
|
|
repository: sunnypilot/ci-artifacts
|
|
ssh-key: ${{ secrets.CI_ARTIFACTS_DEPLOY_KEY }}
|
|
path: ${{ github.workspace }}/master_ui_raylib
|
|
ref: ${{ env.MASTER_BRANCH_NAME }}
|
|
|
|
- name: Saving new master ui
|
|
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
|
|
working-directory: ${{ github.workspace }}/master_ui_raylib
|
|
run: |
|
|
git checkout --orphan=new_master_ui_mici_raylib
|
|
git rm -rf *
|
|
git branch -D ${{ env.MASTER_BRANCH_NAME }}
|
|
git branch -m ${{ env.MASTER_BRANCH_NAME }}
|
|
git config user.name "GitHub Actions Bot"
|
|
git config user.email "<>"
|
|
mv ${{ github.workspace }}/pr_ui/* .
|
|
git add .
|
|
git commit -m "mici raylib video for commit ${{ env.SHA }}"
|
|
git push origin ${{ env.MASTER_BRANCH_NAME }} --force
|
|
|
|
- name: Setup FFmpeg
|
|
uses: AnimMouse/setup-ffmpeg@ae28d57dabbb148eff63170b6bf7f2b60062cbae
|
|
|
|
- name: Finding diff
|
|
if: github.event_name == 'pull_request_target'
|
|
id: find_diff
|
|
run: |
|
|
# Find the video file from PR
|
|
pr_video="${{ github.workspace }}/pr_ui/mici_ui_replay_proposed.mp4"
|
|
mv "${{ github.workspace }}/pr_ui/mici_ui_replay.mp4" "$pr_video"
|
|
|
|
master_video="${{ github.workspace }}/pr_ui/mici_ui_replay_master.mp4"
|
|
mv "${{ github.workspace }}/master_ui_raylib/mici_ui_replay.mp4" "$master_video"
|
|
|
|
# Run report
|
|
export PYTHONPATH=${{ github.workspace }}
|
|
baseurl="https://github.com/sunnypilot/ci-artifacts/raw/refs/heads/${{ env.BRANCH_NAME }}"
|
|
diff_exit_code=0
|
|
python3 ${{ github.workspace }}/selfdrive/ui/tests/diff/diff.py "${{ github.workspace }}/pr_ui/mici_ui_replay_master.mp4" "${{ github.workspace }}/pr_ui/mici_ui_replay_proposed.mp4" "diff.html" --basedir "$baseurl" --no-open || diff_exit_code=$?
|
|
|
|
# Copy diff report files
|
|
cp ${{ github.workspace }}/selfdrive/ui/tests/diff/report/diff.html ${{ github.workspace }}/pr_ui/
|
|
cp ${{ github.workspace }}/selfdrive/ui/tests/diff/report/diff.mp4 ${{ github.workspace }}/pr_ui/
|
|
|
|
REPORT_URL="https://sunnypilot.github.io/ci-artifacts/diff_pr_${{ github.event.number }}.html"
|
|
if [ $diff_exit_code -eq 0 ]; then
|
|
DIFF="✅ Videos are identical! [View Diff Report]($REPORT_URL)"
|
|
else
|
|
DIFF="❌ <strong>Videos differ!</strong> [View Diff Report]($REPORT_URL)"
|
|
fi
|
|
echo "DIFF=$DIFF" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Saving proposed ui
|
|
if: github.event_name == 'pull_request_target'
|
|
working-directory: ${{ github.workspace }}/master_ui_raylib
|
|
run: |
|
|
# Overwrite PR branch w/ proposed ui, and master ui at this point in time for future reference
|
|
git config user.name "GitHub Actions Bot"
|
|
git config user.email "<>"
|
|
git checkout --orphan=${{ env.BRANCH_NAME }}
|
|
git rm -rf *
|
|
mv ${{ github.workspace }}/pr_ui/* .
|
|
git add .
|
|
git commit -m "mici raylib video for PR #${{ github.event.number }}"
|
|
git push origin ${{ env.BRANCH_NAME }} --force
|
|
|
|
# Append diff report to report files branch
|
|
git fetch origin ${{ env.REPORT_FILES_BRANCH_NAME }}
|
|
git checkout ${{ env.REPORT_FILES_BRANCH_NAME }}
|
|
cp ${{ github.workspace }}/selfdrive/ui/tests/diff/report/diff.html diff_pr_${{ github.event.number }}.html
|
|
git add diff_pr_${{ github.event.number }}.html
|
|
git commit -m "mici raylib ui diff report for PR #${{ github.event.number }}" || echo "No changes to commit"
|
|
git push origin ${{ env.REPORT_FILES_BRANCH_NAME }}
|
|
|
|
- name: Comment Video on PR
|
|
if: github.event_name == 'pull_request_target'
|
|
uses: thollander/actions-comment-pull-request@v2
|
|
with:
|
|
message: |
|
|
<!-- _(run_id_video_mici_raylib **${{ github.run_id }}**)_ -->
|
|
## mici raylib UI Preview
|
|
${{ steps.find_diff.outputs.DIFF }}
|
|
comment_tag: run_id_video_mici_raylib
|
|
pr_number: ${{ github.event.number }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|