Skip to content

Commit 0ca4891

Browse files
feat: add github workflow to releases code
1 parent 64159f7 commit 0ca4891

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

.github/workflows/release.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: Build and Release CLI
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # 当推送带有 v* 前缀的 tag 时触发工作流
7+
8+
jobs:
9+
build:
10+
name: Build CLI for All Platforms
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
matrix:
14+
os: [ubuntu-latest, macos-latest, windows-latest]
15+
target:
16+
- x86_64-unknown-linux-gnu
17+
- x86_64-apple-darwin
18+
- x86_64-pc-windows-gnu
19+
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v3
23+
24+
- name: Set up Rust
25+
uses: actions-rs/toolchain@v1
26+
with:
27+
toolchain: stable
28+
target: ${{ matrix.target }}
29+
override: true
30+
31+
- name: Install cross (for Linux builds)
32+
if: matrix.os == 'ubuntu-latest'
33+
run: cargo install cross
34+
35+
- name: Build with cargo (or cross for Linux)
36+
run: |
37+
if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then
38+
cross build --release --target ${{ matrix.target }}
39+
else
40+
cargo build --release --target ${{ matrix.target }}
41+
fi
42+
43+
- name: Upload binary artifact
44+
uses: actions/upload-artifact@v3
45+
with:
46+
name: ${{ matrix.target }}-cli
47+
path: |
48+
target/${{ matrix.target }}/release/gcs
49+
50+
release:
51+
name: Create GitHub Release
52+
runs-on: ubuntu-latest
53+
needs: build
54+
steps:
55+
- name: Checkout repository
56+
uses: actions/checkout@v3
57+
58+
- name: Create GitHub Release
59+
id: create_release
60+
uses: actions/create-release@v1
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
with:
64+
tag_name: ${{ github.ref }}
65+
release_name: Release ${{ github.ref }}
66+
draft: false
67+
prerelease: false
68+
69+
- name: Upload Release Asset (Linux)
70+
uses: actions/upload-release-asset@v1
71+
with:
72+
upload_url: ${{ steps.create_release.outputs.upload_url }}
73+
asset_path: target/x86_64-unknown-linux-gnu/release/gcs
74+
asset_name: your-cli-linux
75+
asset_content_type: application/octet-stream
76+
77+
- name: Upload Release Asset (macOS)
78+
uses: actions/upload-release-asset@v1
79+
with:
80+
upload_url: ${{ steps.create_release.outputs.upload_url }}
81+
asset_path: target/x86_64-apple-darwin/release/gcs
82+
asset_name: your-cli-macos
83+
asset_content_type: application/octet-stream
84+
85+
- name: Upload Release Asset (Windows)
86+
uses: actions/upload-release-asset@v1
87+
with:
88+
upload_url: ${{ steps.create_release.outputs.upload_url }}
89+
asset_path: target/x86_64-pc-windows-gnu/release/gcs.exe
90+
asset_name: your-cli-windows.exe
91+
asset_content_type: application/octet-stream

0 commit comments

Comments
 (0)