forked from homebridge/node-pty-prebuilt-multiarch
-
Notifications
You must be signed in to change notification settings - Fork 2
158 lines (138 loc) · 4.38 KB
/
release.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
146
147
148
149
150
151
152
153
154
155
156
157
158
name: "Release"
on:
workflow_dispatch:
inputs:
dryrun:
description: 'Add --dry-run flag to npm publish'
default: true
type: boolean
jobs:
prebuild:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
name: [
alpine-x86_64,
alpine-arm32v6,
alpine-arm64v8,
debian-x86_64,
debian-i386,
debian-arm32v6,
debian-arm64v8,
darwin-x86_64,
darwin-arm64,
windows-x86_64,
]
include:
- name: alpine-x86_64
os: ubuntu-latest
BASE_IMAGE: library/node:16-alpine
DOCKERFILE: Dockerfile.alpine
QEMU_ARCH: x86_64
- name: alpine-arm32v6
os: ubuntu-latest
BASE_IMAGE: arm32v6/node:16-alpine
DOCKERFILE: Dockerfile.alpine
QEMU_ARCH: arm
- name: alpine-arm64v8
os: ubuntu-latest
BASE_IMAGE: arm64v8/node:16-alpine
DOCKERFILE: Dockerfile.alpine
QEMU_ARCH: aarch64
- name: debian-x86_64
os: ubuntu-latest
BASE_IMAGE: library/debian:11.7-slim
DOCKERFILE: Dockerfile.debian
QEMU_ARCH: x86_64
- name: debian-i386
os: ubuntu-latest
BASE_IMAGE: i386/debian:11.7-slim
DOCKERFILE: Dockerfile.debian
QEMU_ARCH: i386
- name: debian-arm32v6
os: ubuntu-latest
BASE_IMAGE: balenalib/raspberry-pi-debian:bullseye
DOCKERFILE: Dockerfile.debian
QEMU_ARCH: arm
- name: debian-arm64v8
os: ubuntu-latest
BASE_IMAGE: arm64v8/debian:11.7-slim
DOCKERFILE: Dockerfile.debian
QEMU_ARCH: aarch64
- name: darwin-x86_64
os: macOS-latest
- name: darwin-arm64
# xlarge is arm64
# https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners#about-macos-larger-runners
os: macos-13-xlarge
- name: windows-x86_64
os: windows-2022
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 20.x
- name: Linux - Setup Dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get --yes --no-install-recommends install binfmt-support qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static:register --reset
- name: Linux - Build Docker Image
if: runner.os == 'Linux'
run: |
docker build -f .prebuild/${{ matrix.DOCKERFILE }} --build-arg BASE_IMAGE=${{ matrix.BASE_IMAGE }} --build-arg QEMU_ARCH=${{ matrix.QEMU_ARCH }} -t multiarch-build .
- name: Linux - Prebuild Binaries
if: runner.os == 'Linux'
run: |
docker run --rm -v $(pwd):/node-pty multiarch-build
- name: macOS - Setup Python
if: runner.os == 'macOS'
uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: x64
- name: macOS - Prebuild Binaries
if: runner.os == 'macOS'
run: |
corepack enable # we use yarn
yarn install --ignore-scripts
node .prebuild/buildify.js
- name: Windows - Prebuild Binaries
if: runner.os == 'Windows'
shell: bash
run: |
yarn install --ignore-scripts
node .prebuild/buildify-windows.js
- uses: actions/upload-artifact@v3
with:
name: prebuilds
path: prebuilds
release:
runs-on: ubuntu-latest
needs:
- prebuild
steps:
- uses: actions/checkout@v1
- uses: actions/[email protected]
with:
node-version: 20.x
registry-url: "https://registry.npmjs.org" # required to use auth
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
- uses: actions/download-artifact@v3
with:
name: prebuilds
path: prebuilds
- run: tree prebuilds
- run: yarn
- run: yarn lint
- run: yarn build
- run: yarn test
- name: Simulate Publishing to NPM
if: ${{ inputs.dryrun }}
run: npm publish --access public --dry-run
- name: Publish to NPM
if: ${{ !inputs.dryrun }}
run: npm publish --access public