CI: Use github action to build and release.
This commit is contained in:
parent
ca74974a0e
commit
742c229002
3 changed files with 196 additions and 97 deletions
59
.github/cross_build.sh
vendored
59
.github/cross_build.sh
vendored
|
@ -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
|
38
.github/workflows/cross-build.yaml
vendored
38
.github/workflows/cross-build.yaml
vendored
|
@ -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
|
||||
|
196
.github/workflows/release.yaml
vendored
Normal file
196
.github/workflows/release.yaml
vendored
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue