diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-02-15 15:03:37 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-02-15 15:03:37 -0300 |
| commit | 528b4c434cc2730681b637d3716facb0d9a78e9c (patch) | |
| tree | 4d433aa39ad408cd50f572ea420952ba2c504adc | |
| parent | 37812c65e8c76a249805c15d219e0192f65a1807 (diff) | |
| parent | 07788dac28cc5f5156a37d549745d74dababe833 (diff) | |
| download | mullvadvpn-528b4c434cc2730681b637d3716facb0d9a78e9c.tar.xz mullvadvpn-528b4c434cc2730681b637d3716facb0d9a78e9c.zip | |
Merge branch 'android-github-actions'
| -rw-r--r-- | .github/workflows/android-app.yml | 77 | ||||
| -rw-r--r-- | .github/workflows/android-ktlint.yml | 25 | ||||
| -rw-r--r-- | .github/workflows/android-xml-tidy.yml | 21 | ||||
| -rw-r--r-- | .travis.yml | 43 | ||||
| -rwxr-xr-x | wireguard/libwg/build-android.sh | 3 |
5 files changed, 125 insertions, 44 deletions
diff --git a/.github/workflows/android-app.yml b/.github/workflows/android-app.yml new file mode 100644 index 0000000000..26bab204b2 --- /dev/null +++ b/.github/workflows/android-app.yml @@ -0,0 +1,77 @@ +name: Android app CI +on: + # Build whenever a file that affects Android is changed by a push + push: + paths: + - .github/workflows/android-app.yml + - android/** + - mullvad-daemon/** + - mullvad-jni/** + - mullvad-paths/** + - mullvad-problem-report/** + - mullvad-rpc/** + - mullvad-types/** + - talpid-core/** + - talpid-platform-metadata/** + - talpid-types/** + - talpid-types/** + - wireguard/** + - Cargo.toml + - build-apk.sh + - update-api-metadata.sh + - update-version-metadata.sh + - version-metadata.sh + # Build if requested manually from the Actions tab + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + steps: + # Checkout repository + - uses: actions/checkout@v2 + + # Install Rust + - uses: ATiltedTree/setup-rust@v1.0.4 + with: + rust-version: stable + targets: aarch64-linux-android + + # Install Go + - uses: actions/setup-go@v2.1.3 + with: + go-version: 1.13.5 + + # Install Android SDK + - uses: maxim-lobanov/setup-android-tools@v1 + with: + packages: | + platforms;android-30 + build-tools;30.0.3 + cache: true + + # Install Android NDK + - id: install-android-ndk + uses: nttld/setup-ndk@v1 + with: + ndk-version: r20b + + # Configure Cargo to use NDK toolchain + - run: | + cat >> $HOME/.cargo/config << EOF + [target.aarch64-linux-android] + ar = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar" + linker = "${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" + EOF + + # Build APK + - env: + RUSTFLAGS: --deny warnings + AR_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar + CC_aarch64_linux_android: ${{ steps.install-android-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang + ARCHITECTURES: arm64 + run: | + ./wireguard/build-wireguard-go.sh --android --no-docker + source env.sh aarch64-linux-android + cargo build --target aarch64-linux-android --verbose --package mullvad-jni + cd android + ./gradlew --console plain assembleDebug diff --git a/.github/workflows/android-ktlint.yml b/.github/workflows/android-ktlint.yml new file mode 100644 index 0000000000..6b5c7bbdfd --- /dev/null +++ b/.github/workflows/android-ktlint.yml @@ -0,0 +1,25 @@ +name: Android app Kotlin linter +on: + # Run linter whenever a Kotlin file changes + push: + paths: + - .github/workflows/android-ktlint.yml + - android/**/*.kt + # Run linter if requested manually from the Actions tab + workflow_dispatch: +jobs: + ktlint: + runs-on: ubuntu-latest + steps: + # Checkout repository + - uses: actions/checkout@v2 + + # Install Ktlint + - uses: nbadal/action-ktlint-setup@v1 + with: + ktlint_version: 0.40.0 + + # Check formatting + - run: | + cd android + ktlint -a diff --git a/.github/workflows/android-xml-tidy.yml b/.github/workflows/android-xml-tidy.yml new file mode 100644 index 0000000000..3b533c0d69 --- /dev/null +++ b/.github/workflows/android-xml-tidy.yml @@ -0,0 +1,21 @@ +name: Android app XML formatting verifier +on: + # Run verifier whenever an Android XML file changes + push: + paths: + - .github/workflows/android-xml-tidy.yml + - android/**/*.xml + # Run verifier if requested manually from the Actions tab + workflow_dispatch: +jobs: + xml-tidy: + runs-on: ubuntu-latest + steps: + # Checkout repository + - uses: actions/checkout@v2 + + # Check formatting + - run: | + sudo apt-get install tidy + source ci/ci-android-xml.sh + tidy-verify-xml diff --git a/.travis.yml b/.travis.yml index ea7e9f0f0b..5eca784cd3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,49 +37,6 @@ matrix: install: *node_install script: *node_script - # Android - - language: android - name: Android - android: - components: - - android-30 - - build-tools-30.0.3 - install: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable --profile minimal -y - - source $HOME/.cargo/env - - rustup target add aarch64-linux-android - - curl -sf -L -o /tmp/ndk.zip https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip - - sudo mkdir /opt/android - - sudo unzip -q -d /opt/android/ /tmp/ndk.zip - - sudo /opt/android/android-ndk-r20/build/tools/make-standalone-toolchain.sh --platform=android-21 --arch=arm64 --install-dir=/opt/android/toolchains/android21-aarch64 - - sudo apt install tidy - - | - curl -sSLO https://github.com/pinterest/ktlint/releases/download/0.40.0/ktlint && - chmod a+x ktlint && - sudo mv ktlint /usr/local/bin/ - - | - cat >> $HOME/.cargo/config << EOF - [target.aarch64-linux-android] - ar = "/opt/android/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar" - linker = "/opt/android/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" - before_script: - - mkdir "$ANDROID_HOME/licenses" || true - - echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "$ANDROID_HOME/licenses/android-sdk-license" - - export RUSTFLAGS="--deny warnings" - - export AR_aarch64_linux_android=/opt/android/toolchains/android21-aarch64/bin/aarch64-linux-android-ar - - export CC_aarch64_linux_android=/opt/android/toolchains/android21-aarch64/bin/aarch64-linux-android21-clang - - source env.sh aarch64-linux-android - - env - script: - - ./wireguard/build-wireguard-go.sh --android - - cargo build --target aarch64-linux-android --verbose --package mullvad-jni - - cd android - - ./gradlew --console plain assembleDebug - # Run ktlint with extra andorid rules - - ktlint -a - - cd .. - - source ci/ci-android-xml.sh && tidy-verify-xml - # iOS - language: swift osx_image: xcode12.2 diff --git a/wireguard/libwg/build-android.sh b/wireguard/libwg/build-android.sh index b009195a30..9a699f0426 100755 --- a/wireguard/libwg/build-android.sh +++ b/wireguard/libwg/build-android.sh @@ -10,7 +10,8 @@ cd $script_dir export GOPATH=$script_dir/../../build/android-go-path/ mkdir -p $GOPATH -for arch in arm arm64 x86_64 x86; do +ARCHITECTURES="${ARCHITECTURES:-"arm arm64 x86_64 x86"}" +for arch in $ARCHITECTURES; do case "$arch" in "arm64") export ANDROID_LLVM_TRIPLE="aarch64-linux-android" |
