diff --git a/.github/workflows/Make.yml b/.github/workflows/Make.yml new file mode 100644 index 0000000..33dbb65 --- /dev/null +++ b/.github/workflows/Make.yml @@ -0,0 +1,119 @@ +name: Make Recovery + +on: + workflow_dispatch: + inputs: + LIBRARY_NAME: + description: 'LIBRARY_NAME' + required: true + default: 'omni' + LIBRARY_URL: + description: 'LIBRARY_URL' + required: true + default: 'git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git' + LIBRARY_BRANCH: + description: 'LIBRARY_BRANCH' + required: true + default: 'twrp-9.0' + DEVICE_REMOTE: + description: 'DEVICE_REMOTE' + required: true + default: 'github' + DEVICE_URL: + description: 'DEVICE_URL' + required: true + default: 'https://github.com/azwhikaru/twrp_device_xiaomi_archytas' + DEVICE_BRANCH: + description: 'DEVICE_BRANCH' + required: true + default: 'twrp-9.0' + DEVICE_PATH: + description: 'DEVICE_PATH' + required: true + default: 'device/xiaomi/Archytas' + DEVICE_NAME: + description: 'DEVICE_NAME' + required: true + default: 'Archytas' + +jobs: + build: + if: github.event.repository.owner.id == github.event.sender.id + runs-on: ubuntu-18.04 + + steps: + - name: Check Out + uses: actions/checkout@main + + - name: Clean Up + run: | + docker rmi `docker images -q` + sudo rm -rf /usr/share/dotnet /etc/mysql /etc/php /etc/sudo apt/sources.list.d + sudo apt -y purge azure-cli ghc* zulu* hhvm llvm* firefox google* dotnet* powershell openjdk* mysql* php* + sudo apt -y autoremove --purge + sudo apt -y autoclean + sudo apt clean + sudo apt update + + - name: Install packages + run: | + sudo apt -y upgrade + + - name: Install required packages + run: sudo apt -y install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev tree lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip jq bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev imagemagick libbz2-dev libssl-dev lzma ncftp bash-completion python openjdk-8-jdk qemu-user-static + + - name: Set variables + run: | + echo "::set-output name=date::$(date +%F)" + id: var + + - name: Install repo + run: | + mkdir ~/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo + chmod a+x ~/bin/repo + export PATH=~/bin:$PATH + + - name: Initialize repo + run: | + PATH=~/bin:$PATH + mkdir workspace + cd workspace + echo "::set-output name=pwd::$(pwd)" + git config --global user.name "Hikaru's Action-Build-Bot" + git config --global user.email "Android@teio.tk" + repo init --depth=1 -u ${{ github.event.inputs.LIBRARY_URL }} -b ${{ github.event.inputs.LIBRARY_BRANCH }} + id: pwd + + - name: Repo Sync + run: | + PATH=~/bin:$PATH + cd workspace + repo sync -j$(nproc --all) -f --force-sync + ls -al + + - name: Clone device + run: | + PATH=~/bin:$PATH + cd ${{ steps.pwd.outputs.pwd }} + git clone ${{ github.event.inputs.DEVICE_URL }} -b ${{ github.event.inputs.DEVICE_URL }} ./${{ github.event.inputs.DEVICE_PATH }} + + - name: Building + run: | + PATH=~/bin:$PATH + cd ${{ steps.pwd.outputs.pwd }} + export ALLOW_MISSING_DEPENDENCIES=true + source build/envsetup.sh + lunch ${{ github.event.inputs.LIBRARY_NAME }}_${{ github.event.inputs.DEVICE_NAME }}-eng + make clean + make recoveryimage -j$(nproc --all) + + - name: Upload to Release + uses: softprops/action-gh-release@v1 + with: + files: workspace/out/target/product/${{ github.event.inputs.DEVICE_NAME }}/recovery.img + name: ${{ github.event.inputs.DEVICE_NAME }} + tag_name: ${{ github.run_id }} + body: TWRP Recovery for ${{ github.event.inputs.DEVICE_NAME }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a5a886 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +
+ Use Github Action to build recovery +
+ + +## 配置 + +配置文件位于仓库根目录 [Config.json](config.json) + +| 名称 | 类型 | 描述 | +| ------------------ | ------- | ------------------------------------------------------------ | +| `twrp_url` | String | 编译使用的源码地址 | +| `twrp_branch` | String | 编译使用的源码分支 | +| `git_username` | String | Git 的用户名 | +| `git_email` | String | Git 的邮箱(Github 可使用`Github ID + Github用户名@users.noreply.github.com`) | +| `use_own_dt` | Boolean | 指示是否使用个人设备树(此项为 `true` 后以下三项起效) | +| `dt_url` | String | 您使用的设备树的地址(格式: `USER/REPO` ) | +| `dt_branch` | String | 您使用的设备树的分支 | +| `dt_remote` | String | 您使用设备树的存储库(如 `github/gitlab` ) | +| `dt_path` | String | 指示设备树本地保存位置(示例 `device/huawei/kiwi` ) | +| `device_code` | String | 您将要编译机型的机型代号 | +| `use_omin_head` | Boolean | 指示设备树的 `*.mk` 文件是否包含 `omni_` 头(例如你的 `*.mk` 文件如同 `omni_kiwi.mk` 则需开启此选项) | +| `use_repair_manifest` | Boolean | 是否下载修复环境(注意,此项目为后面三项的前置条件。此项为 `true` 后以下四项起效) | +| `fix_product` | Boolean | 指示是否修复无法找到设备的问题 | +| `fix_misscom` | Boolean | 指示是否修复缺少 `device/qcom/common` 的问题 | +| `fix_busybox` | Boolean | 指示是否修复缺少 `busybox` 的问题 | +| `fix_branch` | String | 指示修复以上问题所使用的分支(你一般无需修改此项,只需要替换 `Android` 版本对应分支即可) | + +## 开始 + +Fork 此仓库后,修改 [Config.json](config.json),点击右上角 Star 就会开始,你可以在 [Worker](../../actions) 界面查看进度 + +## 编译结果 +可以在 [Release](../../releases) 下载