forked from protocolbuffers/protobuf-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (107 loc) · 3.75 KB
/
build.yml
File metadata and controls
130 lines (107 loc) · 3.75 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
name: Build and Test
on: push
permissions: read-all
# update in build.yml and codeql.yml at same time
env:
PROTOC_VERSION: "32.0"
jobs:
build:
runs-on: ubuntu-latest
env:
PROTOC: protoc-release/bin/protoc
PROTOC_INC: protoc-release/include
PROTOC_PLATFORM: linux-x86_64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
node-version: 20
cache: ${{ !env.ACT && 'npm' || '' }} # cache API not available in ACT
- name: Install Protoc
run: |
echo "Fetching protoc"
curl --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
-L https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-${PROTOC_PLATFORM}.zip \
--output protoc-release.zip
unzip protoc-release.zip -d protoc-release
rm protoc-release.zip
- run: npm ci
- run: npm test
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: js
path: |
google-protobuf.js
google
package:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# to ensure backwards compatibility as long as possible, use earliest versions of OSs available on Github Actions
- os: ubuntu-20.04
cpu: x86_64
bazel_target: dist_zip
- os: ubuntu-20.04
cpu: aarch64
bazel_target: dist_zip
arch: aarch64
- os: ubuntu-20.04
cpu: ppc64le
bazel_target: dist_zip
arch: ppc64le
- os: ubuntu-20.04
cpu: s390x
bazel_target: dist_zip
arch: s390x
- os: windows-2022
cpu: x64_windows
bazel_target: dist_zip
- os: windows-2022
cpu: x64_x86_windows
bazel_target: dist_zip
- os: macos-14
cpu: darwin_arm64
bazel_target: dist_zip
- os: macos-13
cpu: darwin_x86_64
bazel_target: dist_zip
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
if: ${{ !env.ACT }}
with:
name: js
- uses: bazel-contrib/setup-bazel@0.15.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
- run: mkdir out
- name: Build on emulated arch
uses: uraimo/run-on-arch-action@v3
if: matrix.arch
with:
arch: ${{ matrix.arch }}
distro: ubuntu20.04
githubToken: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
# setup-bazelisk fails when running in ACT because the cache is not available so we need to ignore to let the bazel step run
bazel build --cpu=${{ matrix.cpu }} ${{ matrix.bazel_target || 'dist_all' }}
# need to copy to output directory as `bazel-bin` is a symlink and cannot be read by the actions/upload-artifact action
cp bazel-bin/protobuf-javascript-* out/
- name: Build on native arch
if: ${{ !matrix.arch }}
run: |
set -x
# setup-bazelisk fails when running in ACT because the cache is not available so we need to ignore to let the bazel step run
bazel build --cpu=${{ matrix.cpu }} ${{ matrix.bazel_target || 'dist_all' }}
# need to copy to output directory as `bazel-bin` is a symlink and cannot be read by the actions/upload-artifact action
cp bazel-bin/protobuf-javascript-* out/
- uses: actions/upload-artifact@v4
with:
name: release-${{ matrix.os }}-${{ matrix.cpu }}
path: out