240 lines
7.6 KiB
YAML
240 lines
7.6 KiB
YAML
name: Compile StarPilot
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
not_vetted:
|
|
description: "This branch is not vetted"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
publish_custom_branch:
|
|
description: "Push to custom branch:"
|
|
type: string
|
|
default: ""
|
|
required: false
|
|
publish_starpilot:
|
|
description: "Push to StarPilot"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
publish_staging:
|
|
description: "Push to StarPilot-Staging"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
publish_testing:
|
|
description: "Push to StarPilot-Testing"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
runner:
|
|
description: "Select runner"
|
|
type: choice
|
|
options:
|
|
- c3
|
|
- c3x
|
|
default: "c3"
|
|
required: true
|
|
update_translations:
|
|
description: "Update missing/outdated translations"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
vet_existing_translations:
|
|
description: "Vet existing translations"
|
|
type: boolean
|
|
default: false
|
|
required: false
|
|
|
|
env:
|
|
BASE_DIR: ${{ github.workspace }}
|
|
BUILD_DIR: "/data/openpilot"
|
|
CUSTOM_BRANCH: ${{ inputs.publish_custom_branch }}
|
|
GIT_EMAIL: "91348155+FrogAi@users.noreply.github.com"
|
|
GIT_NAME: "James"
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
|
|
jobs:
|
|
get_branch:
|
|
runs-on: [self-hosted, "${{ inputs.runner }}"]
|
|
outputs:
|
|
branch: ${{ steps.get_branch.outputs.branch }}
|
|
python_version: ${{ steps.get_python_version.outputs.python_version }}
|
|
steps:
|
|
- name: Get Current Branch
|
|
id: get_branch
|
|
run: |
|
|
cd "$BUILD_DIR"
|
|
echo "branch=$(git rev-parse --abbrev-ref HEAD)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Get Python Version
|
|
id: get_python_version
|
|
run: |
|
|
echo "python_version=$(tr -d '[:space:]' < "$BUILD_DIR/.python-version")" >> $GITHUB_OUTPUT
|
|
|
|
translate:
|
|
needs: get_branch
|
|
if: inputs.update_translations
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Configure Git Identity
|
|
run: |
|
|
git config --global user.name "$GIT_NAME"
|
|
git config --global user.email "$GIT_EMAIL"
|
|
|
|
- name: Checkout Required Files
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ needs.get_branch.outputs.branch }}
|
|
sparse-checkout: |
|
|
starpilot/ui/
|
|
selfdrive/controls/lib/alerts_offroad.json
|
|
selfdrive/ui/
|
|
selfdrive/ui/translations/
|
|
selfdrive/ui/translations/auto_translate.py
|
|
selfdrive/ui/update_translations.py
|
|
|
|
- name: Set Up Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
cache: "pip"
|
|
python-version: ${{ needs.get_branch.outputs.python_version }}
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
pip install requests
|
|
sudo apt-get update && sudo apt-get install -y --no-install-recommends qttools5-dev-tools
|
|
|
|
- name: Update Translations
|
|
run: |
|
|
python selfdrive/ui/update_translations.py --vanish
|
|
|
|
- name: Update Missing Translations
|
|
continue-on-error: true
|
|
timeout-minutes: 300
|
|
run: |
|
|
python selfdrive/ui/translations/auto_translate.py --all-files
|
|
|
|
- name: Vet Existing Translations
|
|
if: inputs.vet_existing_translations
|
|
continue-on-error: true
|
|
timeout-minutes: 300
|
|
run: |
|
|
python selfdrive/ui/translations/auto_translate.py --all-files --vet-translations
|
|
|
|
- name: Commit and Push Translations
|
|
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: ${{ !failure() && !cancelled() && needs.get_branch.result == 'success' }}
|
|
runs-on: [self-hosted, "${{ inputs.runner }}"]
|
|
permissions:
|
|
contents: write
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.BUILD_DIR }}
|
|
steps:
|
|
- name: Configure Git
|
|
run: |
|
|
git config http.postBuffer 104857600
|
|
git config user.name "$GIT_NAME"
|
|
git config user.email "$GIT_EMAIL"
|
|
git remote set-url origin "https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/FrogAi/StarPilot.git"
|
|
|
|
- name: Sync Translation Updates
|
|
if: inputs.update_translations
|
|
run: |
|
|
git fetch origin "${{ needs.get_branch.outputs.branch }}"
|
|
git reset --hard FETCH_HEAD
|
|
|
|
- name: Take Ownership of Build Directory
|
|
run: |
|
|
sudo chown -R $(whoami):$(whoami) .
|
|
|
|
- name: Clean Build Artifacts
|
|
run: |
|
|
find . -name "matlab.*.md" -delete
|
|
|
|
find . -type d \( -iname "debug" -o -iname "test" -o -iname "tests" -o -name '__pycache__' \) -exec rm -rf {} +
|
|
|
|
find . -type f \( \
|
|
-name '*.a' -o \
|
|
-name '*.o' -o \
|
|
-name '*.onnx' -o \
|
|
-name '*.os' -o \
|
|
-name '*.pyc' -o \
|
|
-name 'moc_*' \
|
|
\) -delete
|
|
|
|
find .github -mindepth 1 -maxdepth 1 ! -name 'workflows' -exec rm -rf {} +
|
|
find .github/workflows -mindepth 1 ! \( \
|
|
-type f \( \
|
|
-name 'compile_starpilot.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 -type f \
|
|
! -name '__init__.py' \
|
|
! -name 'bootstub.panda.bin' \
|
|
! -name 'bootstub.panda_h7.bin' \
|
|
! -name 'panda.bin.signed' \
|
|
! -name 'panda_h7.bin.signed' \
|
|
-delete
|
|
|
|
find third_party/ -name '*Darwin*' -exec rm -rf {} +
|
|
find third_party/ -name '*x86*' -exec rm -rf {} +
|
|
|
|
rm -f .gitignore .gitmodules .gitattributes .lfsconfig .overlay_init
|
|
|
|
rm -rf .sconsign.dblite .vscode/ Jenkinsfile release/ scripts/ site_scons/ teleoprtc_repo/
|
|
|
|
find . -type d -empty ! -path "./.git*" -delete
|
|
|
|
touch prebuilt
|
|
[ "${{ inputs.not_vetted }}" = "true" ] && touch not_vetted || true
|
|
|
|
- name: Add Update Date File
|
|
if: inputs.publish_staging
|
|
continue-on-error: true
|
|
run: |
|
|
curl -fLsS https://raw.githubusercontent.com/FrogAi/StarPilot/StarPilot-Staging/.github/update_date -o .github/update_date || echo "No update_date found, skipping..."
|
|
|
|
- name: Commit and Push Build
|
|
run: |
|
|
git add -f .
|
|
git commit -m "Compile StarPilot"
|
|
git push --force origin HEAD
|
|
|
|
if [ "${{ inputs.publish_starpilot }}" = "true" ]; then
|
|
git push --force origin HEAD:StarPilot
|
|
fi
|
|
|
|
if [ "${{ inputs.publish_staging }}" = "true" ]; then
|
|
git push --force origin HEAD:StarPilot-Staging
|
|
fi
|
|
|
|
if [ "${{ inputs.publish_testing }}" = "true" ]; then
|
|
git push --force origin HEAD:StarPilot-Testing
|
|
fi
|
|
|
|
if [ -n "$CUSTOM_BRANCH" ]; then
|
|
git push --force origin HEAD:"$CUSTOM_BRANCH"
|
|
fi
|