diff --git a/.gitea/workflows/app_update_parallel.yml b/.gitea/workflows/app_update_parallel.yml new file mode 100644 index 0000000..1239799 --- /dev/null +++ b/.gitea/workflows/app_update_parallel.yml @@ -0,0 +1,123 @@ +name: app_update +on: + schedule: + - cron: '0 23 * * *' # 每天北京时间早上7点执行 + push: + branches: + - main + paths: + - '.gitea/workflows/app_update.yml' + workflow_dispatch: # 允许手动触发 + +jobs: + update-rules: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: 并行下载并处理所有应用 + run: | + # 1. 预先创建所有目录 + mkdir -p app/ tmp/x86_64 tmp/aarch64 tmp/x86_64/7z tmp/aarch64/7z + + echo "开始并行下载..." + + # --- 任务 1: Zellij --- + ( + echo "Starting Zellij..." + curl -L "https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz" \ + -o "zellij-x86_64-unknown-linux-musl.tar.gz" \ + --fail --silent --show-error && \ + tar -xf zellij-x86_64-unknown-linux-musl.tar.gz -C tmp/x86_64/ + mv tmp/x86_64/zellij app/zellij_x86_64 + + curl -L "https://github.com/zellij-org/zellij/releases/latest/download/zellij-aarch64-unknown-linux-musl.tar.gz" \ + -o "zellij-aarch64-unknown-linux-musl.tar.gz" \ + --fail --silent --show-error && \ + tar -xf zellij-aarch64-unknown-linux-musl.tar.gz -C tmp/aarch64/ && \ + mv tmp/aarch64/zellij app/zellij_aarch64 + echo "Finished Zellij" + ) & + + # --- 任务 2: 7-zip --- + ( + echo "Starting 7-zip..." + VERSION_7Z=$(curl -s "https://api.github.com/repos/ip7z/7zip/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + + X86_64_7Z_URL="https://github.com/ip7z/7zip/releases/latest/download/7z${VERSION_7Z/./}-linux-x64.tar.xz" + AARCH64_7Z_URL="https://github.com/ip7z/7zip/releases/latest/download/7z${VERSION_7Z/./}-linux-arm64.tar.xz" + WINDOWS_7Z_URL="https://github.com/ip7z/7zip/releases/latest/download/7z${VERSION_7Z/./}.exe" + + curl -L "${X86_64_7Z_URL}" -o "7z-x86_64.tar.xz" --fail --silent --show-error + curl -L "${AARCH64_7Z_URL}" -o "7z-aarch64.tar.xz" --fail --silent --show-error + curl -L "${WINDOWS_7Z_URL}" -o "app/7z_windows.exe" --fail --silent --show-error + + tar -xf 7z-x86_64.tar.xz -C tmp/x86_64/7z + tar -xf 7z-aarch64.tar.xz -C tmp/aarch64/7z + + mv tmp/x86_64/7z/7zz app/7z_x86_64 + mv tmp/aarch64/7z/7zz app/7z_aarch64 + echo "Finished 7-zip (${VERSION_7Z})" + ) & + + # --- 任务 3: Shadowsocks-Rust --- + ( + echo "Starting SS-Rust..." + SS_RUST_VERSION=$(curl -s "https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + SS_RUST_URL="https://github.com/shadowsocks/shadowsocks-rust/releases/latest/download/shadowsocks-${SS_RUST_VERSION}.x86_64-unknown-linux-musl.tar.xz" + + curl -L "${SS_RUST_URL}" -o "shadowsocks.tar.xz" --fail --silent --show-error + tar -xf shadowsocks.tar.xz -C tmp/x86_64/ + mv tmp/x86_64/ssserver app/ + mv tmp/x86_64/sslocal app/ + echo "Finished SS-Rust (${SS_RUST_VERSION})" + ) & + + # --- 任务 4: ImageGlass --- + ( + echo "Starting ImageGlass..." + IG_VERSION=$(curl -s "https://api.github.com/repos/d2phap/ImageGlass/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + IG_URL="https://github.com/d2phap/ImageGlass/releases/latest/download/ImageGlass_${IG_VERSION}_x64.msi" + + curl -L "${IG_URL}" -o "app/ImageGlass_x64.msi" --fail --silent --show-error + echo "Finished ImageGlass (${IG_VERSION})" + ) & + + # --- 任务 5: Frp --- + ( + echo "Starting Frp..." + FRP_VERSION=$(curl -s "https://api.github.com/repos/fatedier/frp/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + FRP_URL="https://github.com/fatedier/frp/releases/latest/download/frp_${FRP_VERSION#v}_linux_amd64.tar.gz" + + curl -L "${FRP_URL}" -o "frp.tar.gz" --fail --silent --show-error + tar -zxf frp.tar.gz -C tmp/x86_64/ + mv tmp/x86_64/frp_${FRP_VERSION#v}_linux_amd64/frps app/ + mv tmp/x86_64/frp_${FRP_VERSION#v}_linux_amd64/frpc app/ + echo "Finished Frp (${FRP_VERSION})" + ) & + + # --- 任务 6: Dufs --- + ( + echo "Starting Dufs..." + DUFS_VERSION=$(curl -s "https://api.github.com/repos/sigoden/dufs/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + DUFS_URL="https://github.com/sigoden/dufs/releases/latest/download/dufs-${DUFS_VERSION}-x86_64-unknown-linux-musl.tar.gz" + + curl -L "${DUFS_URL}" -o "dufs.tar.gz" --fail --silent --show-error + tar -xf dufs.tar.gz -C tmp/x86_64/ + mv tmp/x86_64/dufs app/ + echo "Finished Dufs (${DUFS_VERSION})" + ) & + + # 等待所有后台任务完成 + wait + echo "所有下载任务完成!" + + - name: 提交更改 + run: | + git config --local user.email "gitea-actions[bot]@users.noreply.nvme.cc" + git config --local user.name "gitea-actions[bot]" + git add ./app + git diff --cached --quiet || git commit -m "Update rules: $(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M:%S')" + git push