From dc3f74a431b2ed9c0560cfb4cbc39ca8b411962a Mon Sep 17 00:00:00 2001 From: David Chalifoux Date: Tue, 24 Oct 2023 22:12:06 -0400 Subject: [PATCH] Use release action from shadowsocks-rust --- .github/workflows/release.yml | 167 ++++++++++++++++++++++++++++------ 1 file changed, 138 insertions(+), 29 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de6644b..625ebd1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,44 +6,153 @@ permissions: on: push: tags: - - v[0-9]+.* + - v* + workflow_dispatch: + inputs: + tag: + description: "Release Tag" + required: true + type: string + +env: + CARGO_TERM_COLOR: always jobs: - create-release: + build-cross: runs-on: ubuntu-latest + env: + RUST_BACKTRACE: full + strategy: + fail-fast: false + matrix: + target: + - i686-unknown-linux-musl + - x86_64-pc-windows-gnu + - x86_64-unknown-linux-gnu + - x86_64-unknown-linux-musl + - armv7-unknown-linux-musleabihf + - armv7-unknown-linux-gnueabihf + - arm-unknown-linux-gnueabi + - arm-unknown-linux-gnueabihf + - arm-unknown-linux-musleabi + - arm-unknown-linux-musleabihf + - aarch64-unknown-linux-gnu + - aarch64-unknown-linux-musl + - mips-unknown-linux-musl + - mips-unknown-linux-gnu + - mipsel-unknown-linux-musl + steps: - uses: actions/checkout@v3 - - uses: taiki-e/create-gh-release-action@v1 + + - name: Install Rust + run: | + rustup set profile minimal + rustup toolchain install stable + rustup default stable + rustup override set stable + rustup target add --toolchain stable ${{ matrix.target }} + + - name: Install cross + run: cargo install cross + + - name: Build ${{ matrix.target }} + timeout-minutes: 120 + run: | + compile_target=${{ matrix.target }} + + if [[ "$compile_target" == *"-linux-"* || "$compile_target" == *"-apple-"* ]]; then + compile_features="-f local-redir -f local-tun" + fi + + if [[ "$compile_target" == "mips-"* || "$compile_target" == "mipsel-"* || "$compile_target" == "mips64-"* || "$compile_target" == "mips64el-"* ]]; then + sudo apt-get update -y && sudo apt-get install -y upx; + if [[ "$?" == "0" ]]; then + compile_compress="-u" + fi + fi + + cd build + ./build-release -t ${{ matrix.target }} $compile_features $compile_compress + + - name: Upload Github Assets + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - # (optional) Path to changelog. - # changelog: CHANGELOG.md - # (required) GitHub token for creating GitHub Releases. - token: ${{ secrets.GITHUB_TOKEN }} + files: build/release/* + prerelease: ${{ contains(github.ref_name, '-') }} + tag_name: ${{ inputs.tag || github.ref_name }} - upload-assets: + build-unix: + runs-on: ${{ matrix.os }} + env: + BUILD_EXTRA_FEATURES: "local-redir local-tun" + RUST_BACKTRACE: full strategy: + fail-fast: false matrix: - include: - - target: aarch64-unknown-linux-gnu - os: ubuntu-latest - - target: aarch64-apple-darwin - os: macos-latest - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - - target: x86_64-apple-darwin - os: macos-latest - # Universal macOS binary is supported as universal-apple-darwin. - - target: universal-apple-darwin - os: macos-latest - runs-on: ${{ matrix.os }} + # os: [ubuntu-latest, macos-latest] + os: [macos-latest] + target: + - x86_64-apple-darwin + - aarch64-apple-darwin + steps: + - uses: actions/checkout@v3 + + - name: Install GNU tar + if: runner.os == 'macOS' + run: | + brew install gnu-tar + # echo "::add-path::/usr/local/opt/gnu-tar/libexec/gnubin" + echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH + + - name: Install Rust + run: | + rustup set profile minimal + rustup toolchain install stable + rustup default stable + rustup override set stable + rustup target add --toolchain stable ${{ matrix.target }} + + - name: Build release + shell: bash + run: | + ./build/build-host-release -t ${{ matrix.target }} + + - name: Upload Github Assets + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: build/release/* + prerelease: ${{ contains(github.ref_name, '-') }} + tag_name: ${{ inputs.tag || github.ref_name }} + + build-windows: + runs-on: windows-latest + env: + RUSTFLAGS: "-C target-feature=+crt-static" + RUST_BACKTRACE: full steps: - uses: actions/checkout@v3 - - uses: taiki-e/upload-rust-binary-action@v1 + + - name: Install Rust + run: | + rustup set profile minimal + rustup toolchain install stable + rustup default stable + rustup override set stable + + - name: Build release + run: | + pwsh ./build/build-host-release.ps1 + + - name: Upload Github Assets + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - # (required) Comma-separated list of binary names (non-extension portion of filename) to build and upload. - # Note that glob pattern is not supported yet. - bin: kaput - # (optional) Target triple, default is host triple. - target: ${{ matrix.target }} - # (required) GitHub token for uploading assets to GitHub Releases. - token: ${{ secrets.GITHUB_TOKEN }} + files: build/release/* + prerelease: ${{ contains(github.ref_name, '-') }} + tag_name: ${{ inputs.tag || github.ref_name }}