CI: Use github action to build and release.

This commit is contained in:
hev 2022-10-29 23:40:09 +08:00
parent ca74974a0e
commit 742c229002
No known key found for this signature in database
GPG key ID: DE8BBEBCEBBBDB92
3 changed files with 196 additions and 97 deletions

View file

@ -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

View file

@ -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
View 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