-
Notifications
You must be signed in to change notification settings - Fork 15
137 lines (113 loc) · 3.09 KB
/
rust-build-release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: Rust Build and Release
on:
push:
branches:
- master
tags:
- '*'
jobs:
build:
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
include:
- runs-on: windows-latest
os: windows
- runs-on: ubuntu-latest
os: linux
- runs-on: macos-latest
os: mac
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.runs-on }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Build
run: cargo build --release
- name: Prepare artifacts
shell: bash
run: |-
mkdir dist
for file in autokuma autokuma.exe kuma kuma.exe; do
if [[ ! -e "target/release/$file" ]]; then
continue
fi
filename=$(basename "$file")
if [[ "$filename" == *.* ]]; then
extension=".${filename##*.}"
filename="${filename%.*}"
else
extension=""
fi
mv "target/release/${filename}${extension}" "dist/${filename}-${{ matrix.os }}${extension}"
done
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: autokuma-${{ matrix.os }}
path: dist/*
github-release:
needs: [build]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install cargo-release
uses: taiki-e/install-action@v2
with:
tool: cargo-release
- name: Parse Changelog
id: changelog
uses: coditory/changelog-parser@v1
- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: dist
pattern: autokuma-*
merge-multiple: true
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: Release ${{ github.ref_name }}
body: ${{ steps.changelog.outputs.description }}
files: dist/*
crates-io:
needs: [build]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install tools
uses: taiki-e/install-action@v2
with:
tool: cargo-release,markdown-extract
- name: setup git
shell: bash
run: |-
git config user.email "[email protected]"
git config user.name "Github Runner"
- name: Publish to crates.io
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo release --workspace --execute --no-confirm "${GITHUB_REF_NAME#v}"