vab, cli: notify with remedies for know problems on errors (#330) #610
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build APK/AAB CI | |
on: | |
push: | |
paths-ignore: | |
- "**.md" | |
pull_request: | |
paths-ignore: | |
- "**.md" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-v-examples-as-apk-and-aab: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java-version: [11,15,20] | |
android-api: [31, 33] | |
fail-fast: false | |
timeout-minutes: 20 | |
env: | |
VAB_FLAGS: -v 3 --build-tools 29.0.0 | |
steps: | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ matrix.java-version }} | |
- name: Checkout V | |
uses: actions/checkout@v4 | |
with: | |
repository: vlang/v | |
- name: Build local v | |
run: make -j2 | |
- name: Checkout vab | |
uses: actions/checkout@v4 | |
with: | |
path: vab | |
- name: Simulate "v install vab" | |
run: mv vab ~/.vmodules | |
- name: Build vab | |
run: ./v -g ~/.vmodules/vab | |
- name: Symlink vab | |
run: sudo ln -s ~/.vmodules/vab/vab /usr/local/bin/vab | |
- name: Run vab --help | |
run: vab --help | |
- name: Run vab doctor | |
run: vab doctor | |
- name: Run tests | |
run: ./v test ~/.vmodules/vab | |
# AAB | |
- name: Install AAB dependencies | |
run: | | |
vab install bundletool | |
vab install aapt2 | |
- name: Build examples as APK + AAB (Java ${{ matrix.java-version }}) ${{ matrix.android-api }} | |
run: | | |
declare -a v_examples=('flappylearning' '2048' 'fireworks' 'tetris' 'sokol/particles' 'sokol/drawing.v' 'sokol/freetype_raven.v' 'gg/polygons.v' 'gg/raven_text_rendering.v' 'gg/rectangles.v' 'gg/stars.v' 'gg/worker_thread.v') | |
for example in "${v_examples[@]}"; do | |
package_id=$( echo "$example" | sed 's%/%%' | sed 's%\.%%' ) | |
package_id=$( echo "v$package_id" ) | |
# Setup env | |
mkdir -p java-${{ matrix.java-version }}/$example | |
# APK | |
vab --package-id "io.v.apk.$package_id" --api ${{ matrix.android-api }} "examples/$example" -o java-${{ matrix.java-version }}/$example/$package_id.apk | |
[ -f java-${{ matrix.java-version }}/$example/$package_id.apk ] | |
# AAB | |
vab --package-id "io.v.aab.$package_id" --api ${{ matrix.android-api }} "examples/$example" -o java-${{ matrix.java-version }}/$example/$package_id.aab | |
# Checks output inferring | |
[ -f java-${{ matrix.java-version }}/$example/$package_id.aab ] | |
done | |
build-v-examples-with-gc-disabled: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java-version: [11, 15, 20] | |
android-api: [31, 33] | |
fail-fast: false | |
timeout-minutes: 20 | |
env: | |
VAB_FLAGS: -v 3 -gc none --build-tools 29.0.0 | |
steps: | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ matrix.java-version }} | |
- name: Checkout V | |
uses: actions/checkout@v4 | |
with: | |
repository: vlang/v | |
- name: Build local v | |
run: make -j2 | |
- name: Checkout vab | |
uses: actions/checkout@v4 | |
with: | |
path: vab | |
- name: Simulate "v install vab" | |
run: mv vab ~/.vmodules | |
- name: Build vab | |
run: ./v -g ~/.vmodules/vab | |
- name: Symlink vab | |
run: sudo ln -s ~/.vmodules/vab/vab /usr/local/bin/vab | |
- name: Run vab --help | |
run: vab --help | |
- name: Run vab doctor | |
run: vab doctor | |
- name: Run tests | |
run: ./v test ~/.vmodules/vab | |
- name: Build examples with garbage collector (Java ${{ matrix.java-version }}) ${{ matrix.android-api }} | |
run: | | |
declare -a v_examples=('flappylearning' '2048' 'fireworks' 'tetris' 'sokol/particles' 'sokol/drawing.v' 'sokol/freetype_raven.v' 'gg/polygons.v' 'gg/raven_text_rendering.v' 'gg/rectangles.v' 'gg/stars.v' 'gg/worker_thread.v') | |
for example in "${v_examples[@]}"; do | |
package_id=$( echo "$example" | sed 's%/%%' | sed 's%\.%%' ) | |
package_id=$( echo "vgc$package_id" ) | |
# Setup env | |
mkdir -p gc-java-${{ matrix.java-version }}/$example | |
# APK | |
vab -gc boehm --package-id "io.v.apk.$package_id" --api ${{ matrix.android-api }} "examples/$example" -o gc-java-${{ matrix.java-version }}/$example/$package_id.apk | |
done | |
build-legacy-v-examples-as-apk-and-aab: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java-version: [8] # 9, 10 is in a bad state currently | |
android-api: [31, 33] | |
fail-fast: false | |
timeout-minutes: 20 | |
env: | |
VAB_FLAGS: -v 3 --build-tools 29.0.0 | |
steps: | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ matrix.java-version }} | |
- name: Checkout V | |
uses: actions/checkout@v4 | |
with: | |
repository: vlang/v | |
- name: Build local v | |
run: make -j2 | |
- name: Checkout vab | |
uses: actions/checkout@v4 | |
with: | |
path: vab | |
- name: Simulate "v install vab" | |
run: mv vab ~/.vmodules | |
- name: Build vab | |
run: ./v -g ~/.vmodules/vab | |
- name: Symlink vab | |
run: sudo ln -s ~/.vmodules/vab/vab /usr/local/bin/vab | |
- name: Run vab --help | |
run: vab --help | |
- name: Ruin Android environment on purpose | |
run: | | |
sudo rm -fr /usr/local/lib/android | |
- name: Run 'vab doctor' | |
run: vab doctor | |
- name: Run 'vab install auto' | |
run: | | |
unset ANDROID_SDK_ROOT # These are set in the CI by default | |
unset ANDROID_HOME | |
unset ANDROID_NDK_ROOT | |
vab install auto | |
- name: Run vab doctor | |
run: vab doctor | |
- name: Run tests | |
run: ./v test ~/.vmodules/vab | |
# AAB | |
- name: Install AAB dependencies | |
run: | | |
vab install bundletool | |
vab install aapt2 | |
- name: Build examples as APK + AAB (Java ${{ matrix.java-version }}) ${{ matrix.android-api }} | |
run: | | |
declare -a v_examples=('flappylearning' '2048' 'fireworks' 'tetris' 'sokol/particles' 'sokol/drawing.v' 'sokol/freetype_raven.v' 'gg/polygons.v' 'gg/raven_text_rendering.v' 'gg/rectangles.v' 'gg/stars.v' 'gg/worker_thread.v') | |
for example in "${v_examples[@]}"; do | |
package_id=$( echo "$example" | sed 's%/%%' | sed 's%\.%%' ) | |
package_id=$( echo "v$package_id" ) | |
# Setup env | |
mkdir -p java-${{ matrix.java-version }}/$example | |
# APK | |
vab --package-id "io.v.apk.$package_id" --api ${{ matrix.android-api }} "examples/$example" -o java-${{ matrix.java-version }}/$example/$package_id.apk | |
[ -f java-${{ matrix.java-version }}/$example/$package_id.apk ] | |
# AAB | |
vab --package-id "io.v.aab.$package_id" --api ${{ matrix.android-api }} "examples/$example" -o java-${{ matrix.java-version }}/$example/$package_id.aab | |
# Checks output inferring | |
[ -f java-${{ matrix.java-version }}/$example/$package_id.aab ] | |
done | |