-
Notifications
You must be signed in to change notification settings - Fork 13
130 lines (123 loc) · 3.41 KB
/
publish-package.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
name: Publish package to NPM registry
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+*'
jobs:
check_version:
name: Check version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install jq
run: |
sudo apt update -y
sudo apt install -y jq
- name: Check npm version corresponds to tag
shell: bash
run: |
tag_version=$(echo $GITHUB_REF_NAME | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+(-.+)?")
npm_version=$(jq -r '.version' ./package.json)
[ "$tag_version" = "$npm_version" ]
lint:
needs:
- check_version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- name: lint
run: |
npm ci
npm run format
git diff | tee .ci-temp
exit $(test -f .ci-temp && cat .ci-temp | wc -l)
linux-build:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
shell: bash
run: |
sudo apt update
sudo apt install libpulse-dev -yq
- name: Build Linux Binary
working-directory: ${{github.workspace}}
shell: bash
run: |
npm ci
npm run build:bin
- name: Save Binary
uses: actions/upload-artifact@v3
with:
name: linux-binary
path: ./dist/addons/linux-sound-mixer.node
win-build:
needs: lint
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- name: Windows API build
working-directory: ${{github.workspace}}
shell: bash
run: |
npm ci
npm run build:bin
- name: Save Binary
uses: actions/upload-artifact@v3
with:
name: windows-binary
path: ./dist/addons/win-sound-mixer.node
publish:
needs: [win-build, linux-build]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
registry-url: 'https://registry.npmjs.org'
- name: TS build
run: |
npm ci
npm run build:ts
- name: Create addons folder
shell: bash
run: mkdir -p ./dist/addons
- name: Download windows addon
uses: actions/download-artifact@v3
with:
name: windows-binary
path: ./dist/addons/
- name: Download linux addon
uses: actions/download-artifact@v3
with:
name: linux-binary
path: ./dist/addons/
- name: Check artifacts are present
working-directory: ./dist/addons/
run: test -f linux-sound-mixer.node && test -f win-sound-mixer.node
- name: Publish package to npm registry
id: publish_package
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create compressed folder release
run: |
tar -cvf ./release.tar.gz ./dist/ ./package.json
- name: Create github release
id: create_release
uses: ncipollo/release-action@v1
with:
artifacts: "release.tar.gz"