From d7a5f3798fe6a54542d57b7c4b54246638801372 Mon Sep 17 00:00:00 2001 From: sdttttt <0wk3btfea@mozmail.com> Date: Mon, 17 Apr 2023 12:46:56 +0800 Subject: [PATCH] chore: add release action. --- .github/workflows/github-release.yml | 82 ++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/github-release.yml diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 0000000..7493f02 --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,82 @@ +name: Publish Release + +on: + push: + tags: + - 'v*' + +jobs: + create-release: + runs-on: ubuntu-latest + outputs: + upload_url: ${{ steps.create-release.outputs.upload_url }} + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 100 + - name: Fetch all tags + run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* + - name: Generate Changelog + id: changelog + run: | + prev_tag=$(git describe --abbrev=0 --tags ${{ github.ref }}^) + log=$(git log --oneline --decorate=no $prev_tag..${{ github.ref }}) + log="${log//'%'/'%25'}" + log="${log//$'\n'/'%0A'}" + log="${log//$'\r'/'%0D'}" + echo "::set-output name=value::$log" + - name: Create Release + id: create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body: ${{ steps.changelog.outputs.value }} + draft: false + prerelease: false + + build-release: + needs: create-release + runs-on: ubuntu-latest + strategy: + matrix: + target: [x86_64-unknown-linux-musl, aarch64-unknown-linux-musl] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: nightly + targets: ${{ matrix.target }} + - name: Install Musl + if: ${{ matrix.target == 'x86_64-unknown-linux-musl' }} + run: | + sudo apt-get install -y musl-tools + cat << 'EOF' | sudo tee /usr/bin/cross + #!/bin/sh + cargo $@ + EOF + sudo chmod +x /usr/bin/cross + - name: Install Cross + if: ${{ matrix.target != 'x86_64-unknown-linux-musl' }} + run: cargo install cross + - name: Build + run: | + export LOCALE=${file%.toml} + cross build --release --target=${{ matrix.target }} + mv ./target/${{ matrix.target }}/release/ksbot ksbot-$LOCALE-${{ matrix.target }} + + cross build --release --target=${{ matrix.target }} --no-default-features --features=native-tls + mv ./target/${{ matrix.target }}/release/ksbot ksbot-$LOCALE-${{ matrix.target }}-openssl + - name: Upload Release Asset + id: upload-release-asset + uses: iovxw/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_files: "ksbot-*"