-
Notifications
You must be signed in to change notification settings - Fork 53
177 lines (146 loc) · 4.84 KB
/
pipeline.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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
name: graphql-ppx-pipeline
on: [pull_request, push]
jobs:
test_and_build_linux:
name: ${{ matrix.os }}/node-${{ matrix.node-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [16.x]
os: [ubuntu-latest]
ocaml-compiler: ["5.1"]
container:
image: alexfedoseev/alpine-node-yarn-esy:0.0.4
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Set-up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- run: opam install . --deps-only --with-test
- run: opam exec -- dune build
- name: native tests
run: opam exec -- dune runtest -f
env:
CI: true
- name: snapshot tests
env:
GRAPHQL_CI: true
run: |
npm ci --no-optional --ignore-scripts
./tests.sh
esy release-static
- name: Release build
run: opam exec -- dune build --root . --only-packages 'graphql-ppx' --ignore-promoted-rules --no-config --profile release-static
- name: (only on release) Upload artifacts ${{ matrix.os }}
uses: actions/upload-artifact@master
with:
name: ${{ matrix.os }}
path: _build/default/src/bin/bin.exe
test_and_build:
name: ${{ matrix.os }}/node-${{ matrix.node-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [16.x]
os: [windows-latest, macOS-13, macOS-latest]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install esy
run: |
npm install -g esy@0.6.12
- name: Install
run: esy install
- name: Print esy cache
id: print_esy_cache
run: node .github/workflows/print_esy_cache.js
- name: Try to restore dependencies cache
id: deps-cache
uses: actions/cache@v2
with:
path: ${{ steps.print_esy_cache.outputs.esy_cache }}
key: ${{ matrix.os }}-${{ hashFiles('**/index.json') }}
- name: build
run: esy b
- name: test-native
run: |
esy b dune runtest -f
env:
CI: true
- name: npm ci
if: runner.os != 'Windows'
run: |
npm ci --no-optional
env:
GRAPHQL_CI: true
- name: snaphot tests
if: runner.os != 'Windows'
run: |
esy test
- name: (only on release) Upload artifacts ${{ matrix.os }}
uses: actions/upload-artifact@master
with:
name: ${{ matrix.os }}
path: _build/default/src/bin/bin.exe
publish:
needs: [test_and_build, test_and_build_linux]
name: (only on release) Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: "12.x"
registry-url: "https://registry.npmjs.org"
- name: Download linux artifacts
if: success()
uses: actions/download-artifact@master
with:
name: ubuntu-latest
path: binaries/linux
- name: Download macOS artifacts (arm)
if: success()
uses: actions/download-artifact@master
with:
name: macOS-latest
path: binaries/darwin-arm64
- name: Download macOS artifacts
if: success()
uses: actions/download-artifact@master
with:
name: macOS-13
path: binaries/darwin
- name: Download windows artifacts
if: success()
uses: actions/download-artifact@master
with:
name: windows-latest
path: binaries/windows
- name: Move artifacts
if: success()
run: |
mkdir -p bin
mv binaries/darwin/bin.exe bin/graphql-ppx-darwin-x64.exe
mv binaries/darwin-arm64/bin.exe bin/graphql-ppx-darwin-arm64.exe
mv binaries/windows/bin.exe bin/graphql-ppx-win-x64.exe
mv binaries/linux/bin.exe bin/graphql-ppx-linux-x64.exe
- name: Publish
if: success() && github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/')
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN_JAAP }}
- name: Publish Prerelease
if: success() && github.event_name != 'pull_request' && !startsWith(github.ref, 'refs/tags/')
run: |
npm version prerelease -preid $(git rev-parse --short HEAD) -no-git-tag-version
npm publish --tag=dev
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN_JAAP }}