From 742c22900255d8fd3e29df769aac6deaca71210b Mon Sep 17 00:00:00 2001 From: hev Date: Sat, 29 Oct 2022 23:40:09 +0800 Subject: [PATCH] CI: Use github action to build and release. --- .github/cross_build.sh | 59 --------- .github/workflows/cross-build.yaml | 38 ------ .github/workflows/release.yaml | 196 +++++++++++++++++++++++++++++ 3 files changed, 196 insertions(+), 97 deletions(-) delete mode 100644 .github/cross_build.sh delete mode 100644 .github/workflows/cross-build.yaml create mode 100644 .github/workflows/release.yaml diff --git a/.github/cross_build.sh b/.github/cross_build.sh deleted file mode 100644 index 8ad2d84..0000000 --- a/.github/cross_build.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# make apt slient if you want -function apt { sudo /usr/bin/apt "$@" >/dev/null; } -# function apt { sudo /usr/bin/apt "$@"; } -set -e -SELF_DIR=$(readlink -f "$(dirname "$0")") -echo "$SELF_DIR" - -######### set up ABIS -apt -qq -o "Acquire::https::Verify-Peer=false" update && apt -qq -o "Acquire::https::Verify-Peer=false" install -y ca-certificates -apt -qq install build-essential git -y -defaultTargetAbis="x86_64-linux-gnu,i686-linux-gnu,\ -aarch64-linux-gnu,arm-linux-gnueabi,arm-linux-gnueabihf,\ -mips-linux-gnu,mips64-linux-gnuabi64,mipsel-linux-gnu,mips64-linux-gnuabi64,mips64el-linux-gnuabi64" -TARGET_ABIS=${TARGET_ABIS:-$defaultTargetAbis} -hostABI=$(gcc -dumpmachine) -echo "HOST ABI is:" "$hostABI" -[[ "$hostABI" == "x86_64"* ]] || ( - echo "HOST ABI must be x86_64 !!!" - exit 1 -) - -echo "selected cross build ABIS: $TARGET_ABIS" - -######### CONFIG -BUILD_DIR=${BUILD_DIR:-"/build"} -OUTPUT_DIR=${OUTPUT_DIR:-"${BUILD_DIR}/target-binary"} -PROJECT_DIR=${CI_PROJECT_DIR:-"./"} - -cd "$BUILD_DIR" - -IFS="," -for abi in $TARGET_ABIS; do - IFS="" - CROSS_PREFIX=${abi}"-" - - command -v "${abi}-gcc" || apt -qq install gcc-"${abi}" -y - - ENABLE_STATIC=${ENABLE_STATIC:-""} - if [[ "$ENABLE_STATIC" == "1" ]]; then - echo "selected static build" - targetBinaryDir=${OUTPUT_DIR}/${abi}"-static" - else - echo "selected none static build" - targetBinaryDir=${OUTPUT_DIR}/${abi} - ENABLE_STATIC="" - fi - mkdir -p "${targetBinaryDir}" - cd "$PROJECT_DIR" - make CROSS_PREFIX="$CROSS_PREFIX" ENABLE_STATIC="$ENABLE_STATIC" -j $(nproc) >/dev/null || \ - make V=1 CROSS_PREFIX="$CROSS_PREFIX" ENABLE_STATIC="$ENABLE_STATIC" -j 1 - mv bin/* "${targetBinaryDir}" - make clean -done - -apt -qq install file tree -y - -tree "$OUTPUT_DIR" || exit 0 -file "$OUTPUT_DIR"/*/* || exit 0 \ No newline at end of file diff --git a/.github/workflows/cross-build.yaml b/.github/workflows/cross-build.yaml deleted file mode 100644 index 86ba509..0000000 --- a/.github/workflows/cross-build.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: CROSS BUILD -on: - repository_dispatch: - workflow_dispatch: - push: - branches: - - main - - ci -env: - BUILD_DIR: ${{ github.workspace }}/ci-build - TZ: Asia/Shanghai - DEBIAN_FRONTEND: noninteractive - CI_PROJECT_DIR: ${{ github.workspace }} - ENABLE_STATIC: 1 -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: checkout - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - name: Cross build - run: | - git submodule init && git submodule update - mkdir -p "${BUILD_DIR}" - sudo apt install libyaml-dev -qq - bash .github/cross_build.sh - - name: Upload - uses: actions/upload-artifact@v3 - with: - if-no-files-found: error - # name: ci-build - path: | - ${{ env.BUILD_DIR }}/target-binary/**/* - retention-days: 5 - \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..a359749 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,196 @@ +name: Release + +on: + push: + tags: + - '*' + +env: + OPENWRT_SDK_URL: https://downloads.openwrt.org/releases/21.02.3/targets + OPENWRT_SDK_X86_32: x86/generic/openwrt-sdk-21.02.3-x86-generic_gcc-8.4.0_musl.Linux-x86_64.tar.xz + OPENWRT_SDK_X86_64: x86/64/openwrt-sdk-21.02.3-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz + OPENWRT_SDK_ARM_32: armvirt/32/openwrt-sdk-21.02.3-armvirt-32_gcc-8.4.0_musl_eabi.Linux-x86_64.tar.xz + OPENWRT_SDK_ARM_64: armvirt/64/openwrt-sdk-21.02.3-armvirt-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz + OPENWRT_SDK_MIPSEL: ramips/mt7621/openwrt-sdk-21.02.3-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64.tar.xz + OPENWRT_SDK_MIPS: realtek/generic/openwrt-sdk-21.02.3-realtek-generic_gcc-8.4.0_musl.Linux-x86_64.tar.xz + +jobs: + build: + name: Build and release + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 1 + submodules: true + - name: Init + run: | + sudo apt -qq update + sudo apt -qq install -y wget git build-essential \ + crossbuild-essential-arm64 crossbuild-essential-armhf \ + crossbuild-essential-i386 crossbuild-essential-riscv64 + - name: Build Linux + run: | + make clean + make CROSS_PREFIX=x86_64-linux-gnu- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-linux-amd64 + make clean + make CROSS_PREFIX=i686-linux-gnu- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-linux-i686 + make clean + make CROSS_PREFIX=aarch64-linux-gnu- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-linux-arm64 + make clean + make CROSS_PREFIX=arm-linux-gnueabihf- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-linux-armhf + make clean + make CROSS_PREFIX=riscv64-linux-gnu- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-linux-riscv64 + - name: Build OpenWrt + run: | + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_X86_32 }} + tar xf $(basename ${{ env.OPENWRT_SDK_X86_32 }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_X86_32 }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-i386_pentium4_gcc-8.4.0_musl/bin/i486-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-i486 + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_X86_64 }} + tar xf $(basename ${{ env.OPENWRT_SDK_X86_64 }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_X86_64 }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-x86_64_gcc-8.4.0_musl/bin/x86_64-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-amd64 + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_ARM_32 }} + tar xf $(basename ${{ env.OPENWRT_SDK_ARM_32 }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_ARM_32 }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-arm_cortex-a15+neon-vfpv4_gcc-8.4.0_musl_eabi/bin/arm-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-armhf + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_ARM_64 }} + tar xf $(basename ${{ env.OPENWRT_SDK_ARM_64 }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_ARM_64 }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-aarch64_cortex-a53_gcc-8.4.0_musl/bin/aarch64-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-arm64 + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_MIPSEL }} + tar xf $(basename ${{ env.OPENWRT_SDK_MIPSEL }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_MIPSEL }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-mipsel_24kc_gcc-8.4.0_musl/bin/mipsel-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-mipsel + wget -q ${{ env.OPENWRT_SDK_URL }}/${{ env.OPENWRT_SDK_MIPS }} + tar xf $(basename ${{ env.OPENWRT_SDK_MIPS }}) + export STAGING_DIR=$(pwd)/$(basename ${{ env.OPENWRT_SDK_MIPS }} .tar.xz)/staging_dir + make clean + make CROSS_PREFIX=${STAGING_DIR}/toolchain-mips_4kec_gcc-8.4.0_musl/bin/mips-openwrt-linux- -j + cp bin/hev-socks5-tproxy hev-socks5-tproxy-openwrt-mips + - name: Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + - name: Upload linux-i686 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-linux-i686 + asset_name: hev-socks5-tproxy-linux-i686 + asset_content_type: application/octet-stream + - name: Upload linux-amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-linux-amd64 + asset_name: hev-socks5-tproxy-linux-amd64 + asset_content_type: application/octet-stream + - name: Upload linux-armhf + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-linux-armhf + asset_name: hev-socks5-tproxy-linux-armhf + asset_content_type: application/octet-stream + - name: Upload linux-arm64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-linux-arm64 + asset_name: hev-socks5-tproxy-linux-arm64 + asset_content_type: application/octet-stream + - name: Upload linux-riscv64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-linux-riscv64 + asset_name: hev-socks5-tproxy-linux-riscv64 + asset_content_type: application/octet-stream + - name: Upload openwrt-i486 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-i486 + asset_name: hev-socks5-tproxy-openwrt-i486 + asset_content_type: application/octet-stream + - name: Upload openwrt-amd64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-amd64 + asset_name: hev-socks5-tproxy-openwrt-amd64 + asset_content_type: application/octet-stream + - name: Upload openwrt-armhf + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-armhf + asset_name: hev-socks5-tproxy-openwrt-armhf + asset_content_type: application/octet-stream + - name: Upload openwrt-arm64 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-arm64 + asset_name: hev-socks5-tproxy-openwrt-arm64 + asset_content_type: application/octet-stream + - name: Upload openwrt-mipsel + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-mipsel + asset_name: hev-socks5-tproxy-openwrt-mipsel + asset_content_type: application/octet-stream + - name: Upload openwrt-mips + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./hev-socks5-tproxy-openwrt-mips + asset_name: hev-socks5-tproxy-openwrt-mips + asset_content_type: application/octet-stream