diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 0bce674..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,36 +0,0 @@ -version: 2.1 - -orbs: - android: circleci/android@2.3.0 - -jobs: - test: - executor: - name: android/android-docker - tag: 2024.11.1-ndk - resource-class: large - steps: - - checkout - - run: git submodule update --init --recursive - - android/restore-gradle-cache - - run: - name: Install Go - command: | - curl -sSL https://go.dev/dl/go1.22.6.linux-amd64.tar.gz -o go.tar.gz - sudo tar -C /usr/local -xzf go.tar.gz - echo 'export PATH=$PATH:/usr/local/go/bin' >> "$BASH_ENV" - - run: - name: Run Build and Tests - command: ./gradlew assembleDebug check --no-daemon - - android/save-gradle-cache - - store_artifacts: - path: app/build/outputs/apk - destination: apk - - store_artifacts: - path: app/build/reports - destination: reports - -workflows: - test: - jobs: - - test diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ad80099 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,61 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 60 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: "1.22.6" + cache-dependency-path: app/src/main/go/v2ray-plugin/go.sum + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Set up Android SDK + uses: android-actions/setup-android@v3 + + - name: Install NDK + run: sdkmanager --install "ndk;27.2.12479018" + + - name: Build and check + run: ./gradlew assembleDebug check --no-daemon --stacktrace + + - name: Upload APKs + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: apk + path: app/build/outputs/apk + if-no-files-found: ignore + + - name: Upload reports + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: reports + path: app/build/reports + if-no-files-found: ignore diff --git a/README.md b/README.md index 54ed947..f3b3aad 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## [v2ray-plugin](https://github.com/shadowsocks/v2ray-plugin) for [shadowsocks-android](https://github.com/shadowsocks/shadowsocks-android) -[![CircleCI](https://circleci.com/gh/shadowsocks/v2ray-plugin-android.svg?style=svg)](https://circleci.com/gh/shadowsocks/v2ray-plugin-android) +[![CI](https://github.com/shadowsocks/v2ray-plugin-android/actions/workflows/ci.yml/badge.svg)](https://github.com/shadowsocks/v2ray-plugin-android/actions/workflows/ci.yml) [![API](https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=21) [![Releases](https://img.shields.io/github/downloads/shadowsocks/v2ray-plugin-android/total.svg)](https://github.com/shadowsocks/v2ray-plugin-android/releases) [![Language: Kotlin](https://img.shields.io/github/languages/top/shadowsocks/v2ray-plugin-android.svg)](https://github.com/shadowsocks/v2ray-plugin-android/search?l=kotlin)