-
Notifications
You must be signed in to change notification settings - Fork 0
178 lines (153 loc) · 4.87 KB
/
release.yml
File metadata and controls
178 lines (153 loc) · 4.87 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
check-branch:
runs-on: ubuntu-latest
outputs:
on_main: ${{ steps.check.outputs.on_main }}
steps:
- name: Set git default branch
shell: bash
run: |
git config --global init.defaultBranch main
git config --global advice.detachedHead false
- uses: actions/checkout@v6
with:
fetch-depth: 0
- id: check
run: |
# Check if the tag is reachable from the main branch
if git branch -r --contains ${{ github.ref_name }} | grep -q 'origin/main'; then
echo "on_main=true" >> $GITHUB_OUTPUT
else
echo "on_main=false" >> $GITHUB_OUTPUT
fi
build-rust:
needs: check-branch
if: needs.check-branch.outputs.on_main == 'true'
strategy:
matrix:
include:
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
artifact_name: docgraph
asset_name: docgraph-x86_64-unknown-linux-gnu.tar.gz
- os: ubuntu-22.04
target: aarch64-unknown-linux-gnu
artifact_name: docgraph
asset_name: docgraph-aarch64-unknown-linux-gnu.tar.gz
use_cross: true
- os: macos-latest
target: x86_64-apple-darwin
artifact_name: docgraph
asset_name: docgraph-x86_64-apple-darwin.tar.gz
- os: macos-latest
target: aarch64-apple-darwin
artifact_name: docgraph
asset_name: docgraph-aarch64-apple-darwin.tar.gz
- os: windows-latest
target: x86_64-pc-windows-msvc
artifact_name: docgraph.exe
asset_name: docgraph-x86_64-pc-windows-msvc.zip
runs-on: ${{ matrix.os }}
steps:
- name: Set git default branch
shell: bash
run: |
git config --global init.defaultBranch main
git config --global advice.detachedHead false
- uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install Cross
if: matrix.use_cross
run: cargo install cross --git https://github.com/cross-rs/cross
- name: Build
shell: bash
run: |
if [ "${{ matrix.use_cross }}" == "true" ]; then
cross build --release --target ${{ matrix.target }}
else
cargo build --release --target ${{ matrix.target }}
fi
- name: Package (Unix)
if: runner.os != 'Windows'
run: |
cd target/${{ matrix.target }}/release
tar -czf ../../../${{ matrix.asset_name }} ${{ matrix.artifact_name }}
- name: Package (Windows)
if: runner.os == 'Windows'
run: |
cd target/${{ matrix.target }}/release
Compress-Archive -Path ${{ matrix.artifact_name }} -DestinationPath ../../../${{ matrix.asset_name }}
- name: Upload Artifact
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.asset_name }}
path: ${{ matrix.asset_name }}
build-vsix:
needs: check-branch
if: needs.check-branch.outputs.on_main == 'true'
runs-on: ubuntu-latest
steps:
- name: Set git default branch
shell: bash
run: |
git config --global init.defaultBranch main
git config --global advice.detachedHead false
- uses: actions/checkout@v6
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Dependencies
run: cd vsix && npm install
- name: Package VSIX
run: |
cd vsix
npx vsce package -o ../docgraph.vsix
- name: Upload VSIX
uses: actions/upload-artifact@v6
with:
name: docgraph.vsix
path: docgraph.vsix
create-release:
needs: [build-rust, build-vsix]
runs-on: ubuntu-latest
steps:
- name: Set git default branch
shell: bash
run: |
git config --global init.defaultBranch main
git config --global advice.detachedHead false
- uses: actions/checkout@v6
- name: Download all artifacts
uses: actions/download-artifact@v7
with:
path: artifacts
merge-multiple: true
- name: Generate Release Notes
uses: orhun/git-cliff-action@v4
with:
config: cliff.toml
args: --latest --strip header
env:
OUTPUT: RELEASE_NOTES.md
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/*.tar.gz
artifacts/*.zip
artifacts/*.vsix
body_path: RELEASE_NOTES.md
generate_release_notes: false
draft: false
prerelease: false