Skip to content

Commit 6615263

Browse files
committed
Add GitHub CI
1 parent f7bf9b3 commit 6615263

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

.github/workflows/mobile-ci.yml

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
name: Android & iOS CI
2+
3+
on:
4+
push:
5+
branches: ["**"]
6+
tags: ["*"]
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
build-ios:
14+
name: Build iOS
15+
runs-on: macos-14
16+
steps:
17+
- name: Checkout (with submodules)
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
submodules: recursive
22+
23+
- name: Disable Spotlight indexing (best-effort)
24+
shell: bash
25+
run: mdutil -i off || true
26+
27+
- name: Install toolchain (JDK 17, Python 3.12, Android cmdline tools)
28+
shell: bash
29+
run: |
30+
brew update
31+
brew install openjdk@17 python@3.12
32+
echo "/opt/homebrew/opt/openjdk@17/bin" >> "$GITHUB_PATH"
33+
34+
python3.12 -m venv venv
35+
source venv/bin/activate
36+
python -m pip install --upgrade pip
37+
python -m pip install pyyaml==6.0.2 typing-extensions==4.12.2
38+
39+
brew install --cask android-commandlinetools
40+
ANDROID_HOME=$(brew --prefix)/share/android-commandlinetools
41+
echo "ANDROID_HOME=$ANDROID_HOME" >> "$GITHUB_ENV"
42+
echo "ANDROID_NDK=$ANDROID_HOME/ndk/28.2.13676358" >> "$GITHUB_ENV"
43+
echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
44+
echo "$ANDROID_HOME/cmake/3.31.6/bin" >> "$GITHUB_PATH"
45+
yes | sdkmanager --install "ndk;28.2.13676358" "cmake;3.31.6" "build-tools;34.0.0" "platforms;android-34" "platform-tools" || true
46+
47+
- name: Install CocoaPods
48+
shell: bash
49+
run: sudo gem install cocoapods
50+
51+
- name: Build iOS libraries and Pod
52+
shell: bash
53+
run: |
54+
source venv/bin/activate
55+
./scripts/build_ios.sh
56+
./scripts/build_ios_cocoapod.sh
57+
58+
- name: Package iOS tarball
59+
shell: bash
60+
run: |
61+
VERSION=$(cat version.txt)
62+
ARCHIVE_NAME="LibTorch-Lite-${VERSION}"
63+
mkdir -p out/ios/${ARCHIVE_NAME}
64+
cp -R out/ios/* out/ios/${ARCHIVE_NAME}
65+
tar -czvf "${ARCHIVE_NAME}.tar.gz" -C out/ios ${ARCHIVE_NAME}
66+
67+
- name: Upload iOS artifacts
68+
uses: actions/upload-artifact@v4
69+
with:
70+
name: ios-artifacts
71+
path: |
72+
out/ios/libtorch_lite_*.zip
73+
out/ios/LibTorch-Lite.podspec
74+
${{ github.workspace }}/LibTorch-Lite-*.tar.gz
75+
76+
build-android:
77+
name: Build Android
78+
runs-on: ubuntu-24.04
79+
steps:
80+
- name: Checkout (with submodules)
81+
uses: actions/checkout@v4
82+
with:
83+
fetch-depth: 0
84+
submodules: recursive
85+
86+
- name: Setup Java (Temurin 17)
87+
uses: actions/setup-java@v4
88+
with:
89+
distribution: temurin
90+
java-version: '17'
91+
92+
- name: Setup Python 3.12
93+
uses: actions/setup-python@v5
94+
with:
95+
python-version: '3.12'
96+
97+
- name: Python deps
98+
run: |
99+
python -m pip install --upgrade pip
100+
python -m pip install pyyaml==6.0.2 typing-extensions==4.12.2
101+
102+
- name: Install Android cmdline tools + SDK components
103+
shell: bash
104+
run: |
105+
curl -LO https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip
106+
mkdir -p "$HOME/Android/sdk/cmdline-tools/latest"
107+
mkdir -p /tmp/cmdline-tools
108+
unzip -q commandlinetools-linux-13114758_latest.zip -d /tmp/cmdline-tools
109+
mv /tmp/cmdline-tools/cmdline-tools/* "$HOME/Android/sdk/cmdline-tools/latest"
110+
echo "$HOME/Android/sdk/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
111+
ANDROID_HOME="$HOME/Android/sdk"
112+
echo "ANDROID_HOME=$ANDROID_HOME" >> "$GITHUB_ENV"
113+
echo "ANDROID_NDK=$ANDROID_HOME/ndk/28.2.13676358" >> "$GITHUB_ENV"
114+
yes | "$HOME/Android/sdk/cmdline-tools/latest/bin/sdkmanager" --install "ndk;28.2.13676358" "cmake;3.31.6" "build-tools;34.0.0" "platforms;android-34" "platform-tools" || true
115+
echo "$HOME/Android/sdk/cmake/3.31.6/bin" >> "$GITHUB_PATH"
116+
117+
- name: Build Android AARs
118+
shell: bash
119+
run: ./scripts/build_pytorch_android.sh armeabi-v7a,arm64-v8a,x86_64
120+
121+
- name: Upload Android artifact
122+
uses: actions/upload-artifact@v4
123+
with:
124+
name: android-aar
125+
path: android/pytorch_android/build/outputs/aar/pytorch_android-release.aar

0 commit comments

Comments
 (0)