From 14df40873871567b5d4878e0aaddbbd6d161084c Mon Sep 17 00:00:00 2001 From: eric Date: Thu, 11 Jan 2024 11:34:40 +0800 Subject: [PATCH] action --- .github/workflows/rust.yml | 158 ++++++++++--------------------------- 1 file changed, 41 insertions(+), 117 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 47e7db6..d852c52 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -5,144 +5,68 @@ on: branches: - release +# This is the example from the readme. +# On each push to the `release` branch it will create or update a GitHub release, build your app, and upload the artifacts to the release. env: CARGO_TERM_COLOR: always jobs: - build-cross: - runs-on: ubuntu-latest - env: - RUST_BACKTRACE: full + build-and-release: + permissions: + contents: write 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 - - mipsel-unknown-linux-musl + platform: [macos-latest, ubuntu-20.04, windows-latest] + runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - name: Build + run: cargo build --release - - name: Install Rust + # Set up the GitHub CLI + - name: Install GitHub CLI run: | - rustup set profile minimal - rustup toolchain install stable - rustup default stable - rustup override set stable - rustup target add --toolchain stable ${{ matrix.target }} + brew install gh + if: matrix.platform == 'macos-latest' - - name: Install cross - run: cargo install cross - - - name: Build ${{ matrix.target }} - timeout-minutes: 120 + - name: Install GitHub CLI 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: - files: build/release/* - prerelease: ${{ contains(github.ref_name, '-') }} - tag_name: ${{ inputs.tag || github.ref_name }} - - build-unix: - runs-on: ${{ matrix.os }} - env: - BUILD_EXTRA_FEATURES: "local-redir local-tun" - RUST_BACKTRACE: full - strategy: - fail-fast: false - matrix: - # os: [ubuntu-latest, macos-latest] - os: [macos-latest] - target: - - x86_64-apple-darwin - - aarch64-apple-darwin - steps: - - uses: actions/checkout@v3 + sudo apt install -y gh + if: matrix.platform == 'ubuntu-20.04' - - name: Install GNU tar - if: runner.os == 'macOS' + - name: Install GitHub CLI 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 + choco install gh + if: matrix.platform == 'windows-latest' - - 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 }} + # Log in to the GitHub CLI + - name: Login to GitHub CLI + run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token - - name: Build release - shell: bash + # Create a release + - name: Create Release + id: create_release 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 + gh release create ${{ github.ref_name }} \ + --title "Release ${{ github.ref_name }}" \ + --notes "Release notes for ${{ github.ref_name }}" \ + --draft + shell: bash - - name: Install Rust + - name: Prepare asset name + id: prep run: | - rustup set profile minimal - rustup toolchain install stable - rustup default stable - rustup override set stable + PLATFORM_TAG=$(echo ${{ matrix.platform }} | sed -e 's/-latest//' -e 's/ubuntu-20.04/linux-x86_64/' -e 's/macos/macos-x86_64/' -e 's/windows/windows-x86_64/') + echo "ASSET_NAME=ncbi-$PLATFORM_TAG$(if [ ${{ runner.os }} = 'Windows' ]; then echo '.exe'; fi)" >> $GITHUB_ENV + shell: bash - - name: Build release + - name: Upload Release Asset run: | - pwsh ./build/build-host-release.ps1 - - - name: Upload Github Assets - uses: softprops/action-gh-release@v1 + gh release upload ${{ github.ref_name }} \ + ./target/release/${{ env.ASSET_NAME }} \ + --clobber env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - files: build/release/* - prerelease: ${{ contains(github.ref_name, '-') }} - tag_name: ${{ inputs.tag || github.ref_name }} + shell: bash