add release ci action
This commit is contained in:
parent
0ea38bf267
commit
35891f8f49
1 changed files with 104 additions and 0 deletions
104
.github/workflows/release.yml
vendored
Normal file
104
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["[0-9]+.[0-9]+.[0-9]+*"]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create:
|
||||||
|
name: create release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ github.ref_name }}
|
||||||
|
- name: verify version matches
|
||||||
|
shell: bash
|
||||||
|
run: grep -q 'version = "${{ github.ref_name }}"' Cargo.toml || { echo version mismatch >&2 && exit 1; }
|
||||||
|
- name: create release
|
||||||
|
run: gh release create ${{ github.ref_name }} --draft --verify-tag --title "Release ${{ github.ref_name }}"
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: build
|
||||||
|
needs: ['create']
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
target: x86_64-unknown-linux-gnu
|
||||||
|
- os: ubuntu-latest
|
||||||
|
target: i686-unknown-linux-musl
|
||||||
|
- os: macos-latest
|
||||||
|
target: x86_64-apple-darwin
|
||||||
|
- os: macos-latest
|
||||||
|
target: aarch64-apple-darwin
|
||||||
|
- os: windows-latest
|
||||||
|
target: x86_64-pc-windows-msvc
|
||||||
|
- os: windows-latest
|
||||||
|
target: i686-pc-windows-msvc
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ github.ref_name }}
|
||||||
|
|
||||||
|
- name: install rust
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
rustup update stable
|
||||||
|
rustup target add ${{ matrix.target }}
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ -n "${{ matrix.linker }}" ]; then
|
||||||
|
export RUSTFLAGS="-Clinker=${{ matrix.linker }}"
|
||||||
|
fi
|
||||||
|
cargo build --verbose --release --target ${{ matrix.target }}
|
||||||
|
find .
|
||||||
|
bin="target/${{ matrix.target }}/release/jotdown"
|
||||||
|
[ "${{ matrix.os }}" = "windows-latest" ] && bin="$bin.exe"
|
||||||
|
echo "BIN=$bin" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: strip
|
||||||
|
if: ${{ startsWith(matrix.os, 'ubuntu') }}
|
||||||
|
run: strip $BIN
|
||||||
|
|
||||||
|
- name: set archive name
|
||||||
|
shell: bash
|
||||||
|
run: echo "ARCHIVE=jotdown-${{ github.ref_name }}-${{ matrix.target }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: init archive dir
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir "$ARCHIVE"/
|
||||||
|
cp "$BIN" "$ARCHIVE"/
|
||||||
|
cp {COPYING,CHANGELOG.md,README.md} "$ARCHIVE"/
|
||||||
|
|
||||||
|
- name: archive (win)
|
||||||
|
if: ${{ startsWith(matrix.os, 'windows') }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
7z a "$ARCHIVE.zip" "$ARCHIVE"
|
||||||
|
echo "ASSET=$ARCHIVE.zip" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: archive (unix)
|
||||||
|
if: ${{ ! startsWith(matrix.os, 'windows') }}
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
tar czf "$ARCHIVE.tar.gz" "$ARCHIVE"
|
||||||
|
echo "ASSET=$ARCHIVE.tar.gz" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Upload release archive
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
gh release upload ${{ github.ref_name }} ${{ env.ASSET }}
|
Loading…
Reference in a new issue