Author SHA1 Message Date
harineandClaude Sonnet 5 bf090b2526 Add Jenkinsfile for CI build pipeline
Builds the Debug APK and runs unit tests on push, using the Android
SDK/NDK toolchain installed on the team19 VM (Goal 2 of the course's
VM onboarding). Runs on Jenkins at http://51.79.242.163:5001.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 11:21:58 +08:00
Khalil Belabadia e89188a34e Merge branch 'master' into auwk2 2026-09-16 20:23:11 +08:00
DefiantWanderer 39eac8e70b Update proposal.md 2026-09-16 17:40:58 +08:00
2 changed files with 73 additions and 0 deletions
Vendored
+54
View File
@@ -0,0 +1,54 @@
// CI pipeline for BowlEye (PinPoint). Builds the Debug APK and runs unit
// tests on every push. Runs on the team19 VM's Jenkins install, using the
// Android SDK at /opt/android-sdk (see docs/ for the VM setup this depends on).
pipeline {
agent any
options {
timeout(time: 45, unit: 'MINUTES')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '20'))
}
environment {
ANDROID_HOME = '/opt/android-sdk'
ANDROID_SDK_ROOT = '/opt/android-sdk'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Prepare SDK pointer') {
steps {
// AGP will also pick up ANDROID_HOME from the environment, but
// writing local.properties explicitly keeps this working even
// if the job ever runs on a different agent/environment setup.
sh 'echo "sdk.dir=/opt/android-sdk" > local.properties'
}
}
stage('Build Debug APK') {
steps {
sh 'chmod +x ./gradlew'
sh './gradlew assembleDebug --no-daemon --stacktrace'
}
}
stage('Unit Tests') {
steps {
sh './gradlew testDebugUnitTest --no-daemon --stacktrace'
}
}
}
post {
always {
junit allowEmptyResults: true, testResults: '**/build/test-results/**/*.xml'
archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', allowEmptyArchive: true
}
}
}
+19
View File
@@ -5,11 +5,30 @@
## Suggested sections to include
- Problem statement / motivation
Provide an app for users to improve their bowling by learning hwo to get into the correct positions.
- Target users
Anyone who is able to bowl
- Proposed solution and key features
Able to see their mistakes
Able to see instructions on how to correct their mistakes
Able to hear instructions on how to correct their mistakes
Able to see the ideal form
- Scope (in-scope vs. out-of-scope for this project)
Five step bowling only
Right handed bowling only
Starting position correction and finishing position only
- Success criteria
User is able to get into the correct position with help from the app
- Team members and roles
Lu Yong Wei (Product Owner)
Gabriel Low (Programmer/ Version control manager)
Harine S/O Sumen (Tech Lead)
Liu Jingwen (Programmer/ Serialization manager)
Auvik Kumar Biswas (Programmer/ Feedback manager)
Chan Qi Ying (Programmer/ UI lead)
Low Yu Sheng Javier (Product Manager)
Khalil Belabadia (Programmer/ Audio Lead)
## Working summary (placeholder, derived from the current codebase — replace with the real proposal)