summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-15 15:03:37 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-15 15:03:37 -0300
commit528b4c434cc2730681b637d3716facb0d9a78e9c (patch)
tree4d433aa39ad408cd50f572ea420952ba2c504adc
parent37812c65e8c76a249805c15d219e0192f65a1807 (diff)
parent07788dac28cc5f5156a37d549745d74dababe833 (diff)
downloadmullvadvpn-528b4c434cc2730681b637d3716facb0d9a78e9c.tar.xz
mullvadvpn-528b4c434cc2730681b637d3716facb0d9a78e9c.zip
Merge branch 'android-github-actions'
-rw-r--r--.github/workflows/android-app.yml77
-rw-r--r--.github/workflows/android-ktlint.yml25
-rw-r--r--.github/workflows/android-xml-tidy.yml21
-rw-r--r--.travis.yml43
-rwxr-xr-xwireguard/libwg/build-android.sh3
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"