Skip to content

Commit 3f80ef3

Browse files
authored
Merge pull request #35 from MatrixAI/qa-testing
QA testing in CI/CD
2 parents 1016b22 + 44d56e2 commit 3f80ef3

23 files changed

+1293
-975
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
.env*
44
!.env.example
55
/result*
6+
/builds
67

78
# Logs
89
logs

.gitlab-ci.yml

+94-18
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1+
default:
2+
interruptible: true
3+
14
variables:
25
GIT_SUBMODULE_STRATEGY: recursive
36

47
stages:
58
- check
69
- build
10+
- quality
711
- release
812

9-
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
10-
1113
lint:
1214
stage: check
13-
interruptible: true
15+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
1416
script:
1517
- >
1618
nix-shell -I nixpkgs=./pkgs.nix --packages nodejs --run '
@@ -20,7 +22,7 @@ lint:
2022
2123
test:
2224
stage: check
23-
interruptible: true
25+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
2426
script:
2527
- >
2628
nix-shell -I nixpkgs=./pkgs.nix --packages nodejs --run '
@@ -30,7 +32,7 @@ test:
3032
3133
nix-dry:
3234
stage: check
33-
interruptible: true
35+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
3436
script:
3537
- nix-build -v -v --dry-run ./release.nix --attr application
3638
- nix-build -v -v --dry-run ./release.nix --attr docker
@@ -40,35 +42,109 @@ nix-dry:
4042

4143
nix:
4244
stage: build
43-
interruptible: true
45+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
4446
script:
47+
- mkdir -p ./builds
48+
# nix-specific application target
49+
- >
50+
build_application="$(nix-build \
51+
--max-jobs "$(nproc)" --cores "$(nproc)" \
52+
./release.nix \
53+
--attr application \
54+
)"
4555
- >
46-
nix-build ./release.nix
47-
--max-jobs $(nproc)
48-
--attr application
49-
--attr docker
56+
nix-store --export $( \
57+
nix-store --query --requisites "$build_application" \
58+
) | gzip > ./builds/typescript-demo-lib.closure.gz
59+
# non-nix targets
60+
- >
61+
builds="$(nix-build \
62+
--max-jobs "$(nproc)" --cores "$(nproc)" \
63+
./release.nix \
64+
--attr docker \
65+
--attr package.linux.x64.elf \
66+
--attr package.windows.x64.exe \
67+
--attr package.macos.x64.macho)"
68+
- cp -r $builds ./builds/
5069
only:
5170
- master
71+
artifacts:
72+
paths:
73+
- ./builds/
74+
75+
application run:
76+
stage: quality
77+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
78+
dependencies:
79+
- nix
80+
script:
81+
- >
82+
build_application="$( \
83+
gunzip -c ./builds/typescript-demo-lib.closure.gz | \
84+
nix-store --import | \
85+
tail -1 \
86+
)"
87+
- $build_application/bin/typescript-demo-lib
88+
89+
docker run:
90+
stage: quality
91+
image: docker:20.10.11
92+
dependencies:
93+
- nix
94+
services:
95+
- docker:20.10.11-dind
96+
variables:
97+
DOCKER_TLS_CERTDIR: "/certs"
98+
before_script:
99+
- docker info
100+
script:
101+
- image="$(docker load --input ./builds/*docker* | cut -d' ' -f3)"
102+
- docker run "$image"
103+
104+
linux run:
105+
stage: quality
106+
image: ubuntu:latest
107+
dependencies:
108+
- nix
109+
script:
110+
- for f in ./builds/*-linux-*; do "$f"; done
111+
112+
windows run:
113+
stage: quality
114+
dependencies:
115+
- nix
116+
script:
117+
- Get-ChildItem -File ./builds/*-win32-* | ForEach {& $_.FullName}
118+
tags:
119+
- windows
120+
121+
# macos is disabled until this repo has access
122+
# macos run:
123+
# stage: quality
124+
# image: macos-11-xcode-12
125+
# dependencies:
126+
# - nix
127+
# script:
128+
# - for f in ./builds/*-macos-*; do "$f"; done
129+
# tags:
130+
# - shared-macos-amd64
52131

53132
packages:
54133
stage: release
55-
interruptible: true
134+
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
135+
dependencies:
136+
- nix
56137
script:
57138
- >
58139
nix-shell -I nixpkgs=./pkgs.nix --packages git gitAndTools.gh --run '
59-
builds="$(nix-build \
60-
--max-jobs $(nproc) --cores $(nproc) \
61-
./release.nix \
62-
--attr package.linux.x64.elf \
63-
--attr package.windows.x64.exe \
64-
--attr package.macos.x64.macho)";
65140
commit="$(git rev-parse --short HEAD)";
66141
gh release \
67-
create "$commit" $builds \
142+
create "$commit" builds/*-linux-* builds/*-win32-* builds/*-macos-* \
68143
--title "Build-$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
69144
--prerelease \
70145
--notes "" \
71146
--repo MatrixAI/TypeScript-Demo-Lib;
72147
'
73148
only:
74149
- master
150+

.npmignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
/tmp
1313
/docs
1414
/benches
15+
/builds

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ nix-env -f ./release.nix --install --attr application
2828
Install into Docker:
2929

3030
```sh
31-
docker load --input "$(nix-build ./release.nix --attr docker)"
31+
loaded="$(docker load --input "$(nix-build ./release.nix --attr docker)")"
32+
image="$(cut -d' ' -f3 <<< "$loaded")"
33+
docker run -it "$image"
3234
```
3335

3436
## Development

default.nix

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ let
1212
}
1313
''
1414
mkdir -p $out/lib/node_modules/${utils.node2nixDev.packageName}
15-
# copy only the dist
15+
# copy the package.json
16+
cp ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/package.json $out/lib/node_modules/${utils.node2nixDev.packageName}/
17+
# copy the dist
1618
cp -r ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist $out/lib/node_modules/${utils.node2nixDev.packageName}/
1719
# copy over the production dependencies
1820
if [ -d "${utils.node2nixProd}/lib/node_modules" ]; then

docs/assets/js/search.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/classes/lib_Library.default.html

+3
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@ <h3>some<wbr>Param</h3>
153153
<li class=" tsd-kind-module">
154154
<a href="../modules/lib_NumPair.html">lib/<wbr>Num<wbr>Pair</a>
155155
</li>
156+
<li class=" tsd-kind-module">
157+
<a href="../modules/lib_test_fd_lock.html">lib/test-<wbr>fd-<wbr>lock</a>
158+
</li>
156159
<li class=" tsd-kind-module">
157160
<a href="../modules/lib_test_level.html">lib/test-<wbr>level</a>
158161
</li>

docs/classes/lib_NumPair.default.html

+3
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ <h3>num2</h3>
167167
<li class="current tsd-kind-module">
168168
<a href="../modules/lib_NumPair.html">lib/<wbr>Num<wbr>Pair</a>
169169
</li>
170+
<li class=" tsd-kind-module">
171+
<a href="../modules/lib_test_fd_lock.html">lib/test-<wbr>fd-<wbr>lock</a>
172+
</li>
170173
<li class=" tsd-kind-module">
171174
<a href="../modules/lib_test_level.html">lib/test-<wbr>level</a>
172175
</li>

0 commit comments

Comments
 (0)