-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (115 loc) · 3.62 KB
/
Copy pathrelease.yml
File metadata and controls
137 lines (115 loc) · 3.62 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
name: Release
on:
push:
tags: ["v*"]
permissions:
contents: write
jobs:
build:
name: Build (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
cross: false
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
cross: true
- os: macos-latest
target: x86_64-apple-darwin
cross: false
- os: macos-latest
target: aarch64-apple-darwin
cross: false
- os: windows-latest
target: x86_64-pc-windows-msvc
cross: false
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cross-linker (aarch64-linux)
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- name: Configure cross-linker (aarch64-linux)
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
mkdir -p ~/.cargo
cat >> ~/.cargo/config.toml << 'EOF'
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
EOF
- name: Build
run: cargo build --release --target ${{ matrix.target }} -p loopkit
- name: Package (unix)
if: runner.os != 'Windows'
run: |
cd target/${{ matrix.target }}/release
tar czf loopkit-${{ matrix.target }}.tar.gz loopkit
- name: Package (windows)
if: runner.os == 'Windows'
run: |
cd target/${{ matrix.target }}/release
7z a loopkit-${{ matrix.target }}.zip loopkit.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: loopkit-${{ matrix.target }}
path: target/${{ matrix.target }}/release/loopkit-${{ matrix.target }}.*
github_release:
name: GitHub Release
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: artifacts/**/loopkit-*
generate_release_notes: true
npm_publish:
name: Publish to npm
runs-on: ubuntu-latest
needs: github_release
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- name: Set version from tag
run: |
TAG=${GITHUB_REF#refs/tags/v}
echo "Version: $TAG"
cd npm
npm version "$TAG" --no-git-tag-version --allow-same-version
- name: Publish
run: |
cd npm
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
crates_publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Publish loopkit-core
run: cargo publish -p loopkit-core --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
continue-on-error: true
- name: Publish loopkit-graph
run: cargo publish -p loopkit-graph --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
continue-on-error: true
- name: Publish loopkit
run: cargo publish -p loopkit --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
continue-on-error: true