name: Recovery Build (Legacy) on: workflow_dispatch: inputs: MANIFEST_URL: description: 'MANIFEST_URL (if want to use SSH keys, use git@github.com:XXXXX)' required: true default: 'https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni' MANIFEST_BRANCH: description: 'MANIFEST_BRANCH' required: true default: 'twrp-7.1' DEVICE_TREE_URL: description: 'DEVICE_TREE_URL' required: true default: 'https://github.com/ycly2333/android_device_EEBBK_H3000S-twrp' DEVICE_TREE_BRANCH: description: 'DEVICE_TREE_BRANCH' required: true default: 'twrp-7.1' DEVICE_PATH: description: 'DEVICE_PATH' required: true default: 'device/EEBBK/H3000S' COMMON_TREE_URL: description: 'COMMON_TREE_URL (if no common tree, leave blank)' required: false COMMON_PATH: description: 'COMMON_PATH (if no common tree, leave blank)' required: false DEVICE_NAME: description: 'DEVICE_NAME' required: true default: 'H3000S' MAKEFILE_NAME: description: 'MAKEFILE_NAME' required: true default: 'omni_H3000S' BUILD_TARGET: description: 'BUILD_TARGET' required: true default: 'recovery' jobs: build: if: github.event.repository.owner.id == github.event.sender.id runs-on: ubuntu-20.04 permissions: contents: write steps: - name: Display Run Parameters run: | echo "::group::User Environment Variables" echo "Manifest URL: ${{ github.event.inputs.MANIFEST_URL }}" echo "Manifest Branch: ${{ github.event.inputs.MANIFEST_BRANCH }}" echo "Device Tree URL: ${{ github.event.inputs.DEVICE_TREE_URL }}" echo "Device Tree Branch: ${{ github.event.inputs.DEVICE_TREE_BRANCH }}" echo "Device Path: ${{ github.event.inputs.DEVICE_PATH }}" echo "Device Name: ${{ github.event.inputs.DEVICE_NAME }}" echo "Makefile Name: ${{ github.event.inputs.MAKEFILE_NAME }}" echo "Build Target: ${{ github.event.inputs.BUILD_TARGET }}.img" echo "::endgroup::" # You might want to Checkout your repo first, but not mandatory - name: Check Out uses: actions/checkout@v4 # Cleanup The Actions Workspace Using Custom Composite Run Actions - name: Cleanup uses: rokibhasansagar/slimhub_actions@main # That's it! Now use your normal steps - name: Prepare the environment run: | sudo apt update sudo apt -y upgrade sudo apt -y install gperf gcc-multilib gcc-10-multilib g++-multilib g++-10-multilib libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev tree lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc bc ccache lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk3.0-gtk3-dev libxml2 lzop pngcrush schedtool squashfs-tools imagemagick libbz2-dev lzma ncftp qemu-user-static libstdc++-10-dev libncurses5 python3 - name: Install OpenJDK uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Setup SSH Keys if: ${{ startsWith(github.event.inputs.MANIFEST_URL, 'git@github.com') || startsWith(github.event.inputs.DEVICE_TREE_URL, 'git@github.com') || startsWith(github.event.inputs.COMMON_TREE_URL, 'git@github.com') }} uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: | ${{ secrets.SSH_PRIVATE_KEY }} - name: Install repo run: | mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo sudo ln -sf ~/bin/repo /usr/bin/repo - name: Initialize repo run: | mkdir workspace cd workspace echo "workspace-folder=$(pwd)" >> $GITHUB_OUTPUT git config --global user.name "azwhikaru" git config --global user.email "azwhikaru+37921907@github.com" repo init --depth=1 -u ${{ github.event.inputs.MANIFEST_URL }} -b ${{ github.event.inputs.MANIFEST_BRANCH }} id: pwd - name: Repo Sync run: | repo sync -j$(nproc --all) --force-sync working-directory: workspace - name: Clone device tree run: | git clone ${{ github.event.inputs.DEVICE_TREE_URL }} -b ${{ github.event.inputs.DEVICE_TREE_BRANCH }} ./${{ github.event.inputs.DEVICE_PATH }} working-directory: ${{ steps.pwd.outputs.workspace-folder }} - name: Clone common tree if: | github.event.inputs.COMMON_TREE_URL != null && github.event.inputs.COMMON_PATH != null run: | git clone ${{ github.event.inputs.COMMON_TREE_URL }} -b ${{ github.event.inputs.DEVICE_TREE_BRANCH }} ./${{ github.event.inputs.COMMON_PATH }} working-directory: ${{ steps.pwd.outputs.workspace-folder }} - name: Sync Device Dependencies run: | bash ${GITHUB_WORKSPACE}/scripts/convert.sh ${{ github.event.inputs.DEVICE_PATH }}/${{ steps.buildtree.outputs.value }}.dependencies repo sync -j$(nproc --all) working-directory: ${{ steps.pwd.outputs.workspace-folder }} continue-on-error: true - name: Set Swap Space uses: pierotofy/set-swap-space@master with: swap-size-gb: 12 - name: Switch to Python2 run: | sudo apt -y install python sudo rm -rf /usr/bin/python sudo ln -s /usr/bin/python2 /usr/bin/python # sudo ln -s /usr/bin/python3 /usr/bin/python3 continue-on-error: true - name: Building recovery run: | source build/envsetup.sh export ALLOW_MISSING_DEPENDENCIES=true lunch ${{ github.event.inputs.MAKEFILE_NAME }}-eng && make clean && make ${{ github.event.inputs.BUILD_TARGET }}image -j$(nproc --all) working-directory: ${{ steps.pwd.outputs.workspace-folder }} - name: Upload to Release uses: softprops/action-gh-release@v2 with: files: | workspace/out/target/product/${{ github.event.inputs.DEVICE_NAME }}/${{ github.event.inputs.BUILD_TARGET }}.img workspace/out/target/product/${{ github.event.inputs.DEVICE_NAME }}/*.zip workspace/out/target/product/${{ github.event.inputs.DEVICE_NAME }}/*vendor*.img name: ${{ github.event.inputs.DEVICE_NAME }}-${{ github.run_id }} tag_name: ${{ github.run_id }} body: | Manifest: ${{ github.event.inputs.MANIFEST_BRANCH }} Device: ${{ github.event.inputs.DEVICE_NAME }} Target: ${{ github.event.inputs.BUILD_TARGET }}.img env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}