Skip to content

ci: use cliff to generate release notes (#571) #338

ci: use cliff to generate release notes (#571)

ci: use cliff to generate release notes (#571) #338

Workflow file for this run

name: Auto Release
on:
push:
tags:
- "v*"
branches:
- "master"
workflow_dispatch:
inputs:
tags:
description: The tags to be released. If not give, will use prerelease.
required: false
type: string
jobs:
gen_version:
name: generate version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.generated-tag.outputs.tag }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get latest tag
id: get-latest-tag
run: |
echo "tag=`gh release list -L 1 | cut -f 1`" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Bump version
id: generated-tag
uses: actions/github-script@v6
with:
script: |
if (context.ref.startsWith("refs/tags/")) {
let tag = context.ref.replace("refs/tags/", "");
core.setOutput('tag', tag);
console.log(`This event pushed a tag ${tag}, return directly.`)
return
}
if ("${{ github.event.inputs.tags }}") {
let tag = "${{ github.event.inputs.tags }}";
core.setOutput('tag', tag);
console.log(`This event triggered by workflow_dispatch with a tag ${tag}, return directly.`)
return
}
console.log('Use default tag "prerelease".')
core.setOutput('tag', 'prerelease');
build_macos:
needs: gen_version
name: build macos version binary
timeout-minutes: 60
runs-on: macos-latest
strategy:
matrix:
arch:
- x86_64
- aarch64
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get target
id: target
run: echo 'target=${{ matrix.arch }}-apple-darwin' >> $GITHUB_OUTPUT
- name: Add target
run: |
rustup target add ${{ steps.target.outputs.target }}
- name: Setup protoc
uses: arduino/[email protected]
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup rust toolchain
run: |
rustup show
# If you need to reset the cache version, increment the number after `v`
- uses: Swatinem/rust-cache@v2
with:
shared-key: auto-release-${{ steps.target.outputs.target }}-v1
- name: Build
run: |
cargo build --features node --no-default-features --release --target ${{ steps.target.outputs.target }}
zip -j rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.zip ./target/${{ steps.target.outputs.target }}/release/rings
- uses: actions/upload-artifact@v3
name: Upload artifacts
with:
name: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}
path: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.zip
retention-days: 1
build_linux:
needs: gen_version
name: build linux version binary
timeout-minutes: 60
runs-on: "ubuntu-latest"
strategy:
matrix:
arch:
- x86_64
platform:
- musl
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get target
id: target
run: echo 'target=${{ matrix.arch }}-unknown-linux-${{ matrix.platform }}' >> $GITHUB_OUTPUT
- name: Add target
run: |
rustup target add ${{ steps.target.outputs.target }}
- name: Setup protoc
uses: arduino/[email protected]
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: alias compiler
run: |
sudo ln -s /bin/g++ /bin/musl-g++
- name: Setup rust toolchain
run: |
rustup show
- name: Install musl-tools
if: matrix.platform == 'musl'
run: |
set -ex
sudo apt-get update
sudo apt-get install -y musl-tools
# If you need to reset the cache version, increment the number after `v`
- uses: Swatinem/rust-cache@v2
with:
shared-key: auto-release-${{ steps.target.outputs.target }}-v1
- name: Build
run: |
cargo build --features node --no-default-features --release --target ${{ steps.target.outputs.target }}
zip -j rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.zip ./target/${{ steps.target.outputs.target }}/release/rings
- uses: actions/upload-artifact@v3
name: Upload artifacts
with:
name: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}
path: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.zip
retention-days: 1
build_browser:
needs: gen_version
name: build browser version binary
timeout-minutes: 60
runs-on: "ubuntu-latest"
strategy:
matrix:
arch:
- wasm32
platform:
- unknown
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get target
id: target
run: echo 'target=${{ matrix.arch }}-unknown-${{ matrix.platform }}' >> $GITHUB_OUTPUT
- name: Add target
run: |
rustup target add ${{ steps.target.outputs.target }}
- uses: jetli/[email protected]
with:
version: "0.2.89"
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Setup protoc
uses: arduino/[email protected]
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup rust toolchain
run: |
rustup show
# If you need to reset the cache version, increment the number after `v`
- uses: Swatinem/rust-cache@v2
with:
shared-key: auto-release-${{ steps.target.outputs.target }}-v1
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Build
run: |
npm install && npm pack
mv ringsnetwork-rings-node-*.tgz rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.tgz
- uses: actions/upload-artifact@v3
name: Upload artifacts
with:
name: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}
path: rings-${{ needs.gen_version.outputs.version }}-${{ steps.target.outputs.target }}.tgz
retention-days: 1
release:
needs: [gen_version, build_macos, build_linux, build_browser]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Generate changelog
uses: orhun/git-cliff-action@v3
id: git-cliff
with:
config: cliff.toml
args: -vv --latest --strip header
env:
OUTPUT: CHANGES.md
- uses: actions/download-artifact@v3
- name: Display fetched artifacts
run: ls -R
- uses: softprops/[email protected]
name: Emit a Github Release
with:
token: "${{ secrets.GITHUB_TOKEN }}"
body: "${{ steps.git-cliff.outputs.content }}"
tag_name: ${{ needs.gen_version.outputs.version }}
prerelease: ${{ needs.gen_version.outputs.version == 'prerelease' }}
title: ${{ needs.gen_version.outputs.version }}
files: |
LICENSE
rings-${{ needs.gen_version.outputs.version }}-x86_64-unknown-linux-musl/*.zip
rings-${{ needs.gen_version.outputs.version }}-x86_64-apple-darwin/*.zip
rings-${{ needs.gen_version.outputs.version }}-aarch64-apple-darwin/*.zip
rings-${{ needs.gen_version.outputs.version }}-wasm32-unknown-unknown/*.tgz