openpilot/.github/workflows/compile_frogpilot.yaml
2025-11-01 12:00:00 -07:00

278 lines
8.8 KiB
YAML

name: Compile FrogPilot
on:
workflow_dispatch:
inputs:
runner:
description: "Select the runner"
required: true
default: "c3"
type: choice
options:
- c3
- c3x
not_vetted:
description: "This branch is not vetted"
required: false
default: "false"
type: boolean
publish_frogpilot:
description: "Push to FrogPilot"
required: false
default: "false"
type: boolean
publish_staging:
description: "Push to FrogPilot-Staging"
required: false
default: "false"
type: boolean
publish_testing:
description: "Push to FrogPilot-Testing"
required: false
default: "false"
type: boolean
publish_custom_branch:
description: "Push to custom branch:"
required: false
default: ""
type: string
update_translations:
description: "Update missing/outdated translations"
required: false
default: "false"
type: boolean
vet_existing_translations:
description: "Vet existing translations"
required: false
default: "false"
type: boolean
env:
BASEDIR: "${{ github.workspace }}"
BUILD_DIR: /data/openpilot
OPENAI_API_KEY: "${{ secrets.OPENAI_API_KEY }}"
jobs:
get_branch:
runs-on:
- self-hosted
- ${{ github.event.inputs.runner }}
outputs:
branch: ${{ steps.get_branch.outputs.branch }}
python_version: ${{ steps.get_python_version.outputs.python_version }}
steps:
- name: Determine Current Branch on Runner
id: get_branch
run: |
cd $BUILD_DIR
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "branch=$BRANCH" >> $GITHUB_OUTPUT
- name: Get Python Version from Runner
id: get_python_version
run: |
PYTHON_VERSION=$(tr -d '[:space:]' < "$BUILD_DIR/.python-version")
echo "python_version=$PYTHON_VERSION" >> $GITHUB_OUTPUT
translate:
if: inputs.update_translations
needs: get_branch
runs-on: ubuntu-latest
steps:
- name: Configure Git Identity
run: |
git config --global user.name "James"
git config --global user.email "91348155+FrogAi@users.noreply.github.com"
- name: Checkout Required Files
uses: actions/checkout@v4
with:
ref: ${{ needs.get_branch.outputs.branch }}
sparse-checkout: |
frogpilot/ui/
selfdrive/controls/lib/alerts_offroad.json
selfdrive/ui/
selfdrive/ui/update_translations.py
selfdrive/ui/translations/
selfdrive/ui/translations/auto_translate.py
- name: Set Up Python
uses: actions/setup-python@v4
with:
python-version: "${{ needs.get_branch.outputs.python_version }}"
- name: Install Dependencies
run: pip install requests
- name: Install Qt5 Tools
run: sudo apt update && sudo apt install -y qttools5-dev-tools
- name: Update Translations
run: python selfdrive/ui/update_translations.py --vanish
- name: Update Missing Translations
continue-on-error: true
run: python selfdrive/ui/translations/auto_translate.py --all-files
timeout-minutes: 300
- name: Vet Existing Translations
if: github.event.inputs.vet_existing_translations == 'true'
continue-on-error: true
run: python selfdrive/ui/translations/auto_translate.py --all-files --vet-translations
timeout-minutes: 300
- name: Commit and Push Translation Updates
run: |
if git diff --quiet selfdrive/ui/translations/*.ts; then
echo "No translation updates detected."
exit 0
fi
git fetch --unshallow origin ${{ needs.get_branch.outputs.branch }}
git checkout ${{ needs.get_branch.outputs.branch }}
git add selfdrive/ui/translations/*.ts
git commit --amend --no-edit
git push --force origin ${{ needs.get_branch.outputs.branch }}
build_and_push:
needs:
- get_branch
- translate
if: always()
runs-on:
- self-hosted
- ${{ github.event.inputs.runner }}
permissions:
contents: write
defaults:
run:
working-directory: ${{ env.BUILD_DIR }}
steps:
- name: Configure Git Identity
run: |
git config --global http.postBuffer 104857600
git config --global user.name "James"
git config --global user.email "91348155+FrogAi@users.noreply.github.com"
- name: Update Repository
run: |
git remote set-url origin https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/FrogAi/FrogPilot.git
if [ "${{ github.event.inputs.update_translations }}" = "true" ]; then
git fetch origin ${{ needs.get_branch.outputs.branch }}
git reset --hard FETCH_HEAD
fi
- name: Take Ownership of Build
run: |
sudo chown -R $(whoami):$(whoami) .
- name: Finalize Build
run: |
rm -f .clang-tidy
rm -f .dockerignore
rm -f .editorconfig
rm -f .gitattributes
rm -f .gitmodules
rm -f .lfsconfig
rm -f .overlay_init
rm -f .pre-commit-config.yaml
rm -f .sconsign.dblite
rm -f codecov.yml
rm -f conftest.py
rm -f poetry.lock
rm -f pyproject.toml
rm -f teleoprtc
rm -f Dockerfile.openpilot
rm -f Dockerfile.openpilot_base
rm -f Jenkinsfile
rm -f panda/board/obj/.placeholder
rm -f panda/board/obj/bootstub.panda.elf
rm -f panda/board/obj/bootstub.panda_h7.elf
rm -f panda/board/obj/panda.bin
rm -f panda/board/obj/panda.elf
rm -f panda/board/obj/panda_h7.bin
rm -f panda/board/obj/panda_h7.elf
rm -f panda/board/obj/version
find . -name '*.a' -delete
find . -name '*.o' -delete
find . -name '*.onnx' -delete
find . -name '*.os' -delete
find . -name '*.pyc' -delete
find . -name 'moc_*' -delete
rm -rf .devcontainer/
rm -rf .vscode/
rm -rf body/
rm -rf opendbc/generator/
rm -rf release/
rm -rf scripts/
rm -rf site_scons/
rm -rf teleoprtc_repo/
find .github -mindepth 1 -maxdepth 1 ! -name 'workflows' -exec rm -rf {} +
find .github/workflows -mindepth 1 ! \( \
-type f \( \
-name 'compile_frogpilot.yaml' -o \
-name 'review_pull_request.yaml' -o \
-name 'schedule_update.yaml' -o \
-name 'update_pr_branch.yaml' -o \
-name 'update_release_branch.yaml' -o \
-name 'update_tinygrad.yaml' \
\) \
\) -exec rm -rf {} +
find panda/board/jungle -type f ! -name '__init__.py' -delete
find panda/board/jungle -type d -empty -delete
find third_party/ -name '*x86*' -exec rm -rf {} +
find third_party/ -name '*Darwin*' -exec rm -rf {} +
find tools/ -mindepth 1 -maxdepth 1 ! \( -name '__init__.py' -o -name 'bodyteleop' -o -name 'lib' -o -name 'scripts' \) -exec rm -rf {} +
find . -name 'SConstruct' -delete
find . -name 'SConscript' -delete
find . -type d \( -iname "debug" -o -iname "test" -o -iname "tests" \) -exec rm -rf {} +
find . -type d -empty ! -path "./.git*" -delete
find . -type d -name '__pycache__' -exec rm -rf {} +
find . -type f -regex '.*matlab.*\.md' -delete
touch prebuilt
if [ "${{ github.event.inputs.not_vetted }}" = "true" ]; then
touch not_vetted
fi
- name: Add the update_date file
if: github.event.inputs.publish_staging == 'true'
run: |
curl -fLsS https://raw.githubusercontent.com/FrogAi/FrogPilot/FrogPilot-Staging/.github/update_date -o .github/update_date || echo "No update_date found, skipping."
- name: Commit Build
run: |
git add -f .
git commit -m "Compile FrogPilot"
git push --force origin HEAD
if [ "${{ github.event.inputs.publish_frogpilot }}" = "true" ]; then
git push --force origin HEAD:"FrogPilot"
fi
if [ "${{ github.event.inputs.publish_staging }}" = "true" ]; then
git push --force origin HEAD:"FrogPilot-Staging"
fi
if [ "${{ github.event.inputs.publish_testing }}" = "true" ]; then
git push --force origin HEAD:"FrogPilot-Testing"
fi
if [ -n "${{ github.event.inputs.publish_custom_branch }}" ]; then
git push --force origin HEAD:"${{ github.event.inputs.publish_custom_branch }}"
fi