-
Notifications
You must be signed in to change notification settings - Fork 0
145 lines (138 loc) · 4.16 KB
/
publish.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
138
139
140
141
142
143
144
145
name: Publish
on:
push:
branches:
- main
jobs:
need_publish:
runs-on: ubuntu-latest
outputs:
is_bumped: ${{ steps.npm_check.outputs.bump }}
npm_target_version: ${{ steps.npm_check.outputs.target_version }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install node
uses: actions/setup-node@v3
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- id: npm_check
shell: bash
run: |
manifest=$(jq -r '.version' ./npm/robespierre/package.json)
npm=$(npm view robespierre --json | jq -r '.version')
[[ "$manifest" == "$npm" ]] && echo "bump=false" >> "$GITHUB_OUTPUT" || echo "bump=true" >> "$GITHUB_OUTPUT"
echo "target_version=$(jq -r '.version' ./npm/robespierre/package.json)" >> "$GITHUB_OUTPUT"
publish-npm-binaries:
name: Publish NPM packages
needs: need_publish
if: needs.need_publish.outputs.is_bumped == 'true'
runs-on: ${{ matrix.build.os }}
strategy:
fail-fast: false
matrix:
build:
- {
NAME: linux-x64-glibc,
OS: ubuntu-20.04,
TARGET: x86_64-unknown-linux-gnu,
TOOLCHAIN: stable,
}
- {
NAME: linux-arm64-glibc,
OS: ubuntu-20.04,
TARGET: aarch64-unknown-linux-gnu,
TOOLCHAIN: stable,
}
- {
NAME: win32-x64-msvc,
OS: windows-2022,
TARGET: x86_64-pc-windows-msvc,
TOOLCHAIN: stable,
}
- {
NAME: win32-arm64-msvc,
OS: windows-2022,
TARGET: aarch64-pc-windows-msvc,
TOOLCHAIN: nightly,
}
- {
NAME: darwin-x64,
OS: macos-11,
TARGET: x86_64-apple-darwin,
TOOLCHAIN: stable,
}
- {
NAME: darwin-arm64,
OS: macos-11,
TARGET: aarch64-apple-darwin,
TOOLCHAIN: stable,
}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.build.TOOLCHAIN }}
target: ${{ matrix.build.TARGET }}
override: true
- name: Lint
run: |
cd src
cargo fmt -- --check
cargo clippy -- -D warnings
- name: Test
run: |
cargo check
cargo test --all
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --locked --target ${{ matrix.build.TARGET }}
use-cross: ${{ matrix.build.OS == 'ubuntu-20.04' }} # use `cross` for Linux builds
- name: Install node
uses: actions/setup-node@v3
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- name: Publish to NPM
shell: bash
run: sh ./package.sh --publish
env:
BUILD_NAME: ${{ matrix.build.NAME }}
BUILD_OS: ${{ matrix.build.OS }}
BUILD_TARGET: ${{ matrix.build.TARGET }}
BUILD_VERSION: ${{needs.need_publish.outputs.npm_target_version}}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-npm-base:
name: Publish the base NPM package
needs: publish-npm-binaries
if: needs.need_publish.outputs.is_bumped == 'true'
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install node
uses: actions/setup-node@v3
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
- name: Publish the package
shell: bash
run: |
cp README.md npm/robespierre
cd npm/robespierre
npm i
npm run build
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- uses: actions-ecosystem/action-push-tag@v1
env:
TARGET_VERSION: ${{needs.need_publish.outputs.npm_target_version}}
name: Push tag
with:
tag: $TARGET_VERSION