Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update packaging and CI #58

Merged
merged 9 commits into from
Feb 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use nix
135 changes: 73 additions & 62 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ on:
- '[0-9]+.[0-9]+.[0-9]+'
pull_request:
env:
SDK_BUILD_TOOLS_VERSION: '33.0.2'
SDK_CMDLINE_TOOLS_VERSION: '9.0'
SDK_BUILD_TOOLS_VERSION: '34.0.0'
NDK_VERSION: '25.2.9519653'
ANDROID_PLATFORM: '34'
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Rust
Expand All @@ -29,7 +29,7 @@ jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Rust
Expand All @@ -47,28 +47,25 @@ jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Set Up Android tools
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30"
uses: android-actions/setup-android@v3
with:
log-accepted-android-sdk-licenses: false
packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }}
- name: Config Android NDK
env:
TRIPLE: x86_64-linux-android
run: |
echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do
echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV
done
TRIPLE_ENV=$(echo $TRIPLE | tr '-' '_')
Expand Down Expand Up @@ -105,26 +102,23 @@ jobs:
- i686-linux-android
- x86_64-linux-android
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Set Up Android tools
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30"
uses: android-actions/setup-android@v3
with:
log-accepted-android-sdk-licenses: false
packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }}
- name: Config Android NDK
run: |
echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT; do
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do
echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV
done
- name: Setup Rust ${{ matrix.rust }} [${{ matrix.target }}]
Expand All @@ -134,7 +128,7 @@ jobs:
target: ${{ matrix.target }}
components: rustfmt
- name: Setup Cargo ndk
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cargo/bin/cargo-ndk
key: ${{ runner.os }}-cargo-ndk
Expand Down Expand Up @@ -171,36 +165,39 @@ jobs:
cp ${{ steps.result.outputs.build-path }}out/bindings.rs bindings/bindings_$(echo ${{ matrix.target }} | sed -r 's/^([^-]+).*$/\1/').rs
- name: Upload bindings
if: matrix.rust == 'stable' && matrix.profile == 'release'
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: bindings
name: bindings-${{ matrix.target }}
path: bindings
overwrite: true
- name: Archive library
if: matrix.rust == 'stable'
run: tar -czf liboboe-ext_${{ matrix.target }}_${{ matrix.profile }}.tar.gz -C ${{ steps.result.outputs.build-path }}/out/library liboboe-ext.a
- name: Upload library
if: matrix.rust == 'stable'
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: library
name: library-${{ matrix.target }}-${{ matrix.profile }}
path: liboboe-ext_${{ matrix.target }}_${{ matrix.profile }}.tar.gz
overwrite: true

update-bindings:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
needs:
- build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Download bindings
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: bindings
pattern: bindings-*
merge-multiple: true
path: sys/src
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
uses: peter-evans/create-pull-request@v6
with:
base: ${{ github.head_ref }}
commit-message: Updated bindings
Expand All @@ -213,34 +210,41 @@ jobs:
build-demo:
needs:
- build
- cargo-apk
- cargo-mobile2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Set Up Android tools
uses: android-actions/setup-android@v3
with:
log-accepted-android-sdk-licenses: false
packages: build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }} ndk;${{ env.NDK_VERSION }} platforms;android-${{ env.ANDROID_PLATFORM }}
- name: Config Android NDK
run: |
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "build-tools;${{ env.SDK_BUILD_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "cmdline-tools;${{ env.SDK_CMDLINE_TOOLS_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "ndk;${{ env.NDK_VERSION }}"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --install "platforms;android-30"
echo "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
for var in ANDROID_NDK ANDROID_NDK_HOME ANDROID_NDK_LATEST_HOME ANDROID_NDK_ROOT NDK_HOME; do
echo "$var=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> $GITHUB_ENV
done
- name: Setup Rust
uses: hecrj/setup-rust-action@v1
uses: dtolnay/rust-toolchain@v1
with:
targets: armv7-linux-androideabi, aarch64-linux-android, i686-linux-android, x86_64-linux-android
- name: Setup Cargo apk
uses: actions/cache@v3
toolchain: stable
targets: armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
- name: Setup Cargo mobile
uses: actions/cache@v4
with:
path: ~/.cargo/bin/cargo-apk
key: ${{ runner.os }}-cargo-apk
path: |
~/.cargo/bin/cargo-android
~/.cargo/bin/cargo-mobile
~/.cargo/.cargo-mobile2
key: ${{ runner.os }}-cargo-mobile2
- uses: Swatinem/rust-cache@v2
- name: Create signing key
run: |
Expand All @@ -252,13 +256,16 @@ jobs:
# use existing keystore to sign apk
sed -i 's/keystore_password = "android"/keystore_password = "${{ secrets.APK_KEYSTORE_PASSWORD }}"/' demo/Cargo.toml
fi
- name: Init demo apk
run: |
cd demo && cargo mobile init && sed -ri 's/((compile|target)Sdk *= *)33/\134/g' gen/android/app/build.gradle.kts
- name: Build demo apk
run: cargo apk build --manifest-path demo/Cargo.toml --release
run: cd demo && cargo mobile android apk build --release --split-per-abi
- name: Upload demo apk
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: apk
path: target/release/apk/oboe-demo.apk
path: demo/gen/android/app/build/outputs/apk/*/release/*.apk

release:
if: github.repository == 'katyo/oboe-rs' && startsWith(github.ref, 'refs/tags/')
Expand All @@ -268,11 +275,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download libraries
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: library
pattern: library-*
merge-multiple: true
- name: Download demo
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: apk
- name: Create release
Expand All @@ -293,7 +301,7 @@ jobs:
- release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Rust
Expand All @@ -311,7 +319,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Prepare cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache
with:
path: ~/.cargo/bin/cargo-ndk
Expand All @@ -320,15 +328,18 @@ jobs:
if: steps.cache.outputs.cache-hit != 'true'
run: cargo install cargo-ndk --force

cargo-apk:
cargo-mobile2:
runs-on: ubuntu-latest
steps:
- name: Prepare cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache
with:
path: ~/.cargo/bin/cargo-apk
key: ${{ runner.os }}-cargo-apk
- name: Setup cargo apk
path: |
~/.cargo/bin/cargo-android
~/.cargo/bin/cargo-mobile
~/.cargo/.cargo-mobile2
key: ${{ runner.os }}-cargo-mobile2
- name: Setup cargo mobile2
if: steps.cache.outputs.cache-hit != 'true'
run: cargo install cargo-apk
run: cargo install cargo-mobile2
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
**/*.rs.bk
Cargo.lock
**/lib*.a
.direnv
Loading