-
Notifications
You must be signed in to change notification settings - Fork 72
134 lines (107 loc) · 3.72 KB
/
build.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
name: Build, Test and Release
on: push
permissions: read-all
# update in build.yml and codeql.yml at same time
env:
PROTOC_VERSION: 23.1
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
- uses: bazelbuild/setup-bazelisk@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
- 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@v3
with:
name: js
path: |
google-protobuf.js
google
package:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# for now I'm disabling linux building as we don't have the tooling to support it
# os: [ ubuntu-latest ]
# cpu:
# - k8 # this build 'linux-x86_64', is currently working but not useful without the other architectures
# would need some kind of CROSSTOOL chain to build the other architectures
# or we'd have to use the https://github.com/uraimo/run-on-arch-action (which lacks support for x86_32) to build these
# - x86_32
# - systemz
# - aarch64
# - ppc64
include:
# to ensure backwards compatibility as long as possible, use earliest versions of OSs available on Github Actions
- os: windows-2019
cpu: x64_windows
bazel_target: dist_zip
- os: windows-2019
cpu: x64_x86_windows
bazel_target: dist_zip
# disabling Mac OS releases for now since they are working through existing build process
# - os: macos-11
# cpu: darwin_arm64
# - os: macos-11
# cpu: darwin_x86_64
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
if: ${{ !env.ACT }}
with:
name: js
- uses: bazelbuild/setup-bazelisk@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
- run: mkdir out
# setup-bazelisk fails when running in ACT because the cache is not available so we need to ignore to let the bazel step run
- if: success() || env.ACT && failure()
run: bazel build --cpu=${{ matrix.cpu }} ${{ matrix.bazel_target || 'dist_all' }}
shell: bash
# need to copy to output directory as `bazel-bin` is a symlink and cannot be read by the actions/upload-artifact action
- run: cp bazel-bin/protobuf-javascript-* out/
- uses: actions/upload-artifact@v3
with:
name: releases
path: out
release:
needs: package
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v3
with:
name: releases
- name: Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: protobuf-javascript-*
file_glob: true
tag: ${{ github.ref }}
overwrite: true