Florida #115
This file contains hidden or 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: Florida | |
| env: | |
| FRIDA_VERSION: "17.9.10" | |
| on: | |
| schedule: | |
| - cron: "0 9/12 * * *" | |
| workflow_dispatch: | |
| push: | |
| branches: ["main", "ci"] | |
| paths: | |
| - ".github/workflows/build.yml" | |
| - "patches/**" | |
| permissions: | |
| contents: write | |
| jobs: | |
| check_version: | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| FRIDA_VERSION: ${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }} | |
| ALREADY_RELEASE: ${{ steps.checkReleaseVersion.outputs.ALREADY_RELEASE }} | |
| steps: | |
| - name: Pull Frida Latest Release | |
| id: pullFridaLatestRelease | |
| run: echo "FRIDA_VERSION=${{ env.FRIDA_VERSION }}" >> $GITHUB_OUTPUT | |
| - name: Check release version | |
| id: checkReleaseVersion | |
| uses: actions/github-script@v9 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| try { | |
| const releaseVersion = '${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}' | |
| const releaseResponse = await github.rest.repos.getReleaseByTag({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| tag: releaseVersion | |
| }); | |
| const { | |
| data: { tag_name: ver } | |
| } = releaseResponse; | |
| if (ver == '${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }}'){ | |
| if ( ${{ ( github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}){ | |
| core.setOutput('ALREADY_RELEASE', '2'); | |
| } else { | |
| core.setOutput('ALREADY_RELEASE', '1'); | |
| } | |
| } | |
| else{ | |
| core.setOutput('ALREADY_RELEASE', '0'); | |
| } | |
| } catch (e) { | |
| if (e.status === 404 || e.message == 'Not Found') { | |
| core.setOutput('ALREADY_RELEASE', '0'); | |
| } | |
| else{ | |
| core.setFailed(e.message); | |
| } | |
| } | |
| - name: Delete release | |
| if: ${{ steps.checkReleaseVersion.outputs.ALREADY_RELEASE == '2' }} | |
| uses: dev-drprasad/delete-tag-and-release@v1.0 | |
| with: | |
| tag_name: ${{ steps.pullFridaLatestRelease.outputs.FRIDA_VERSION }} | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| delete_release: true | |
| android_build: | |
| runs-on: ubuntu-22.04 | |
| needs: check_version | |
| if: needs.check_version.outputs.ALREADY_RELEASE != '1' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: "17" | |
| - name: Setup Android NDK | |
| id: setup-ndk | |
| uses: nttld/setup-ndk@v1 | |
| with: | |
| ndk-version: r29 | |
| local-cache: false | |
| link-to-sdk: true | |
| - name: Set up Python 3.9 | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: 3.9 | |
| - name: install dependencies | |
| run: | | |
| sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install build-essential tree ninja-build gcc-multilib g++-multilib lib32stdc++-9-dev flex bison ruby ruby-dev python3-requests python3-setuptools python3-dev python3-pip libc6-dev libc6-dev-i386 -y | |
| sudo gem install fpm -v 1.11.0 --no-document | |
| python3 -m pip install lief graphlib | |
| - name: build frida for Android | |
| shell: bash | |
| run: | | |
| git config --global user.name "GitHub Actions" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| export ANDROID_NDK_ROOT=${{ steps.setup-ndk.outputs.ndk-path }} | |
| echo "ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT" | |
| git clone --recurse-submodules https://github.com/frida/frida | |
| cd frida | |
| git checkout "${{ needs.check_version.outputs.FRIDA_VERSION }}" | |
| git submodule update --init --recursive | |
| for path in ../patches/* | |
| do | |
| name=$(basename $path) | |
| real=$(realpath $path) | |
| echo "Apply patches in $real to frida/subprojects/$name" | |
| cd subprojects/$name | |
| git am ../../../patches/$name/*.patch | |
| cd ../.. | |
| echo $i | |
| done | |
| cd .. | |
| ARCHES="android-arm android-arm64 android-x86 android-x86_64" | |
| for ARCH in $ARCHES | |
| do | |
| mkdir build-$ARCH | |
| cd build-$ARCH | |
| ../frida/configure --host=$ARCH | |
| make | |
| cd .. | |
| done | |
| - name: package build result for Android | |
| shell: bash | |
| run: | | |
| VERSION="${{ needs.check_version.outputs.FRIDA_VERSION }}" | |
| gzip build-android-arm/subprojects/frida-core/server/frida-server | |
| gzip build-android-arm64/subprojects/frida-core/server/frida-server | |
| gzip build-android-x86/subprojects/frida-core/server/frida-server | |
| gzip build-android-x86_64/subprojects/frida-core/server/frida-server | |
| gzip build-android-arm/subprojects/frida-core/inject/frida-inject | |
| gzip build-android-arm64/subprojects/frida-core/inject/frida-inject | |
| gzip build-android-x86/subprojects/frida-core/inject/frida-inject | |
| gzip build-android-x86_64/subprojects/frida-core/inject/frida-inject | |
| gzip build-android-arm/subprojects/frida-core/lib/gadget/frida-gadget.so | |
| gzip build-android-arm64/subprojects/frida-core/lib/gadget/frida-gadget.so | |
| gzip build-android-x86/subprojects/frida-core/lib/gadget/frida-gadget.so | |
| gzip build-android-x86_64/subprojects/frida-core/lib/gadget/frida-gadget.so | |
| gzip build-android-arm/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a | |
| gzip build-android-arm64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a | |
| gzip build-android-x86/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a | |
| gzip build-android-x86_64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a | |
| mkdir -p release-assets | |
| cp build-android-arm/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-arm.gz | |
| cp build-android-arm64/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-arm64.gz | |
| cp build-android-x86/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-x86.gz | |
| cp build-android-x86_64/subprojects/frida-core/server/frida-server.gz release-assets/florida-server-${VERSION}-android-x86_64.gz | |
| cp build-android-arm/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-arm.gz | |
| cp build-android-arm64/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-arm64.gz | |
| cp build-android-x86/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-x86.gz | |
| cp build-android-x86_64/subprojects/frida-core/inject/frida-inject.gz release-assets/florida-inject-${VERSION}-android-x86_64.gz | |
| cp build-android-arm/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-arm.so.gz | |
| cp build-android-arm64/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-arm64.so.gz | |
| cp build-android-x86/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-x86.so.gz | |
| cp build-android-x86_64/subprojects/frida-core/lib/gadget/frida-gadget.so.gz release-assets/florida-gadget-${VERSION}-android-x86_64.so.gz | |
| cp build-android-arm/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-arm.a.gz | |
| cp build-android-arm64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-arm64.a.gz | |
| cp build-android-x86/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-x86.a.gz | |
| cp build-android-x86_64/subprojects/frida-gum/bindings/gumjs/libfrida-gumjs-1.0.a.gz release-assets/florida-gumjs-${VERSION}-android-x86_64.a.gz | |
| - name: Create release and upload assets | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| tag_name: "${{ needs.check_version.outputs.FRIDA_VERSION }}" | |
| name: "${{ needs.check_version.outputs.FRIDA_VERSION }}" | |
| prerelease: false | |
| fail_on_unmatched_files: true | |
| files: | | |
| release-assets/* |