-
Notifications
You must be signed in to change notification settings - Fork 0
140 lines (121 loc) · 3.92 KB
/
release.yml
File metadata and controls
140 lines (121 loc) · 3.92 KB
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
138
139
140
name: Build & Release
on:
push:
branches: [main]
tags: ['v*']
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# macOS
- target: x86_64-apple-darwin
os: macos-latest
artifact_name: ash
asset_name: ash-macos-x86_64
- target: aarch64-apple-darwin
os: macos-latest
artifact_name: ash
asset_name: ash-macos-aarch64
# Linux
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
artifact_name: ash
asset_name: ash-linux-x86_64
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
artifact_name: ash
asset_name: ash-linux-aarch64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cross-compilation tools (Linux aarch64)
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Build
run: |
if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" ]]; then
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
fi
cargo build --release --target ${{ matrix.target }}
- name: Package artifacts
run: |
mkdir -p dist
cp target/${{ matrix.target }}/release/ash dist/${{ matrix.asset_name }}
cp target/${{ matrix.target }}/release/ash-mcp dist/${{ matrix.asset_name }}-mcp
chmod +x dist/*
# Create tarball
cd dist
tar -czvf ${{ matrix.asset_name }}.tar.gz ${{ matrix.asset_name }} ${{ matrix.asset_name }}-mcp
# Create sha256
shasum -a 256 ${{ matrix.asset_name }}.tar.gz > ${{ matrix.asset_name }}.tar.gz.sha256
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.asset_name }}
path: |
dist/${{ matrix.asset_name }}.tar.gz
dist/${{ matrix.asset_name }}.tar.gz.sha256
release:
name: Create Release
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List artifacts
run: find artifacts -type f
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: |
artifacts/**/*.tar.gz
artifacts/**/*.sha256
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Also upload artifacts on push to main (dev builds)
dev-release:
name: Dev Release
needs: build
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Update dev release
uses: softprops/action-gh-release@v1
with:
tag_name: dev
name: Development Build
prerelease: true
files: |
artifacts/**/*.tar.gz
artifacts/**/*.sha256
body: |
⚠️ **Development Build** - Built from latest `main` branch.
Not recommended for production use. For stable releases, see the [latest release](../../releases/latest).
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}