From cf1805b28a6717c020e47218ac42903887653066 Mon Sep 17 00:00:00 2001 From: Andre Nijman Date: Mon, 31 Aug 2026 21:31:11 +0800 Subject: [PATCH 1/3] ci: build TeamCode debug APK on pull requests Also restores the executable bit on gradlew, which had been lost relative to upstream v11.2.1. The file content was already identical; only the mode had drifted, and without it ./gradlew is not runnable on Linux or macOS clones or on the CI runner. --- .github/workflows/build.yml | 52 +++++++++++++++++++++++++++++++++++++ gradlew | 0 2 files changed, 52 insertions(+) create mode 100644 .github/workflows/build.yml mode change 100644 => 100755 gradlew diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..ef09893 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,52 @@ +name: build + +on: + pull_request: + push: + branches: + - main + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: build + runs-on: ubuntu-latest + steps: + - name: Check out the repository + uses: actions/checkout@v4 + + - name: Validate the Gradle wrapper + uses: gradle/actions/wrapper-validation@v4 + + # AGP 8.13.2 requires JDK 17. + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Set up the Android SDK command-line tools + uses: android-actions/setup-android@v3 + + # build.common.gradle sets compileSdkVersion 30, which the runner image does + # not ship, so the platform has to be installed. Build-tools 35.0.0 is the + # revision AGP 8.13.2 resolves to by default; the image happens to carry it + # today, but it is pinned here so an image update cannot silently break the + # build. Both versions were read off the build log, not chosen. + # + # build.common.gradle also declares ndkVersion 21.3.6528147. Neither module + # has native sources, so AGP never resolves it and the NDK is not installed. + - name: Install Android SDK packages + run: sdkmanager --install "platforms;android-30" "build-tools;35.0.0" + + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Assemble the TeamCode debug APK + run: ./gradlew :TeamCode:assembleDebug --no-daemon --stacktrace diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From 1ac5a799182270198d25bdcf2551753a4e2720d1 Mon Sep 17 00:00:00 2001 From: Andre Nijman Date: Mon, 31 Aug 2026 21:37:16 +0800 Subject: [PATCH 2/3] docs: document build, deploy, hub config and branch policy --- .github/CODEOWNERS | 1 + .github/pull_request_template.md | 19 +++++++ README.md | 85 +++++++++++++++++++++++++++++++- 3 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/pull_request_template.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..d982f9e --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @AndreNijman diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..36bbb7b --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,19 @@ +## What changed + + + +## OpMode(s) touched + + + +## Tested on the robot + + + +## Control Hub configuration + + + +## Anything a driver needs to know + + diff --git a/README.md b/README.md index 35aa8f1..16e42eb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,85 @@ # Lebob-BioBuzz -Current season · FIRST Tech Challenge BIOBUZZ 2026/27 robot code, team 29550. Competing at the Western Australia Qualifier. + +Robot code for Lebob Robotics, team 29550, competing in FIRST Tech Challenge +BIOBUZZ 2026/27 at the Western Australia Qualifier. + +This repository is an unmodified import of the FIRST Tech Challenge SDK with the +team's own code in `TeamCode`. Everything outside `TeamCode` belongs to the SDK +and is replaced wholesale when a new SDK version is merged, so team code must +not depend on edits made there. + +## Requirements + +- Android Studio, with the Android SDK it installs. +- JDK 17. The Android Gradle Plugin used by this SDK version will not run on an + older JDK, and Android Studio's bundled JDK is the simplest way to get it. +- FIRST Tech Challenge SDK v11.2.1. This is already in the repository; nothing + needs to be downloaded separately. + +## Build and deploy + +Build the team's APK from the repository root: + +``` +./gradlew :TeamCode:assembleDebug +``` + +To put that build on the robot, open the project in Android Studio, connect to +the Control Hub over ADB — either by USB or over wifi to the Control Hub's +network — and run the `TeamCode` configuration. Android Studio installs the APK +onto the Control Hub directly. + +GitHub is history and review only. Nothing in this repository is on the deploy +path: pushing a branch, merging a pull request and passing the build check do +not change what is running on the robot. The only thing that changes the robot +is somebody installing a build onto the Control Hub from Android Studio. + +## Control Hub configuration + +The Control Hub configuration is created on the Driver Station, not in this +repository. This table is the record of what that configuration is meant to be. + +| Device | Config name | Port | Notes | +| --- | --- | --- | --- | +| TODO | TODO | TODO | TODO | +| TODO | TODO | TODO | TODO | +| TODO | TODO | TODO | TODO | +| TODO | TODO | TODO | TODO | + +Config names used in code must match this table exactly, including case. A name +that differs from the Control Hub configuration fails at run time, when an +OpMode is initialised, not at build time. + +## Branch policy + +`main` is protected: + +- Changes reach `main` through a pull request, merged as a squash. +- History on `main` is linear. +- No direct pushes to `main`. +- No force pushes to `main`. + +Work on a branch named `feature/`. + +## Updating the SDK + +The SDK is updated by merging an upstream release tag. Add the upstream remote +once: + +``` +git remote add upstream https://github.com/FIRST-Tech-Challenge/FtcRobotController.git +``` + +Then, for each update, fetch the tags and merge the one you want: + +``` +git fetch upstream --tags +git merge +``` + +The BIOBUZZ SDK release is expected on 2026-09-12. Do the merge on a branch and +land it through a pull request like any other change, so the build check runs +against it before it reaches `main`. + +Conflicts in the merge are a signal that something outside `TeamCode` was +edited. Keeping those files untouched is what makes SDK updates cheap. From 6de20ecdc5ab879a8a5e2e85a05650278abb53ae Mon Sep 17 00:00:00 2001 From: Andre Nijman Date: Mon, 31 Aug 2026 21:37:16 +0800 Subject: [PATCH 3/3] chore: ignore release keystores, keep SDK debug key tracked --- .gitignore | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b85aa2f..9a995df 100644 --- a/.gitignore +++ b/.gitignore @@ -48,8 +48,9 @@ captures/ # Keystore files # Uncomment the following lines if you do not want to check your keystore files in. -#*.jks -#*.keystore +*.jks +*.keystore +!libs/ftc.debug.keystore # External native build folder generated in Android Studio 2.2 and later .externalNativeBuild