diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..16ff00433 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,81 @@ +name: Magisk Build + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build: + name: Build on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-latest, windows-latest, macOS-latest ] + + steps: + - name: Check out + uses: actions/checkout@v2 + with: + submodules: 'recursive' + fetch-depth: 0 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: '11' + + - name: Set up Python 3 + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Set up GitHub env (Windows) + if: runner.os == 'Windows' + run: | + $oldAndroidPath = $env:ANDROID_SDK_ROOT + $sdk_root = "C:\Android" + New-Item -Path $sdk_root -ItemType SymbolicLink -Value $oldAndroidPath + echo "ANDROID_SDK_ROOT=$sdk_root" >> $env:GITHUB_ENV + echo "ANDROID_HOME=$sdk_root" >> $env:GITHUB_ENV + + - name: Set up GitHub env (Unix) + if: runner.os != 'Windows' + run: echo ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT >> $GITHUB_ENV + + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }} + restore-keys: ${{ runner.os }}-gradle- + + - name: Cache NDK + id: ndk-cache + uses: actions/cache@v2 + with: + path: ${{ env.ANDROID_SDK_ROOT }}/ndk/magisk + key: ${{ runner.os }}-ndk-${{ hashFiles('gradle.properties') }} + + - name: Set up NDK + if: steps.ndk-cache.outputs.cache-hit != 'true' + run: python3 build.py ndk + + - name: Build release + run: python3 build.py -vr all + + - name: Build debug + run: python3 build.py -v all + + # Only upload artifacts built on Linux + - name: Upload build artifact + if: runner.os == 'Linux' && github.event_name != 'pull_request' + uses: actions/upload-artifact@v2 + with: + name: ${{ github.sha }}-artifact + path: out