File: ci.yml

package info (click to toggle)
node-graphql 16.8.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,376 kB
  • sloc: javascript: 1,492; sh: 20; makefile: 2
file content (257 lines) | stat: -rw-r--r-- 6,688 bytes parent folder | download | duplicates (3)
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
name: CI
on: workflow_call
jobs:
  lint:
    name: Lint source files
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Lint ESLint
        run: npm run lint

      - name: Check Types
        run: npm run check

      - name: Lint Prettier
        run: npm run prettier:check

      - name: Spellcheck
        run: npm run check:spelling

  checkForCommonlyIgnoredFiles:
    name: Check for commonly ignored files
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Check if commit contains files that should be ignored
        run: |
          git clone --depth 1 https://github.com/github/gitignore.git &&
          cat gitignore/Node.gitignore $(find gitignore/Global -name "*.gitignore" | grep -v ModelSim) > all.gitignore &&
          if  [[ "$(git ls-files -iX all.gitignore)" != "" ]]; then
            echo "::error::Please remove these files:"
            git ls-files -iX all.gitignore
            exit 1
          fi

  checkPackageLock:
    name: Check health of package-lock.json file
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      # Disabled due to https://github.com/milesj/docusaurus-plugin-typedoc-api/pull/19
      # - name: Check that package-lock.json doesn't have conflicts
      #  run: npm ls --depth 999

      - name: Run npm install
        run: npm install --ignore-scripts --force --package-lock-only --engine-strict --strict-peer-deps

      - name: Check that package-lock.json is in sync with package.json
        run: git diff --exit-code package-lock.json

  integrationTests:
    name: Run integration tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version-file: '.node-version'
          # We install bunch of packages during integration tests without locking them
          # so we skip cache action to not pollute cache for other jobs.

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Integration Tests
        run: npm run check:integrations

  fuzz:
    name: Run fuzzing tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Tests
        run: npm run fuzzonly

  coverage:
    name: Measure test coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run tests and measure code coverage
        run: npm run testonly:cover

      - name: Upload coverage to Codecov
        if: ${{ always() }}
        uses: codecov/codecov-action@v1
        with:
          file: ./coverage/coverage-final.json
          fail_ci_if_error: true

  test:
    name: Run tests on Node v${{ matrix.node_version_to_setup }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node_version_to_setup: [12, 14, 16, 17]
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js v${{ matrix.node_version_to_setup }}
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version: ${{ matrix.node_version_to_setup }}

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Run Tests
        run: npm run testonly

  build-npm-dist:
    name: Build 'npmDist' artifact
    runs-on: ubuntu-latest
    needs: [test, fuzz, lint, integrationTests]
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Build NPM package
        run: npm run build:npm

      - name: Upload npmDist package
        uses: actions/upload-artifact@v2
        with:
          name: npmDist
          path: ./npmDist

  build-deno-dist:
    name: Build 'denoDist' artifact
    runs-on: ubuntu-latest
    needs: [test, fuzz, lint, integrationTests]
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Build Deno package
        run: npm run build:deno

      - name: Upload denoDist package
        uses: actions/upload-artifact@v2
        with:
          name: denoDist
          path: ./denoDist

  build-website-dist:
    name: Build website
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2
        with:
          persist-credentials: false

      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          cache: npm
          node-version-file: '.node-version'

      - name: Install Dependencies
        run: npm ci --ignore-scripts

      - name: Build Docs
        run: npm run build:website

      - name: Upload denoDist package
        uses: actions/upload-artifact@v2
        with:
          name: websiteDist
          path: ./websiteDist