1
+ default :
2
+ interruptible : true
3
+
1
4
variables :
2
5
GIT_SUBMODULE_STRATEGY : recursive
3
6
4
7
stages :
5
8
- check
6
9
- build
10
+ - quality
7
11
- release
8
12
9
- image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
10
-
11
13
lint :
12
14
stage : check
13
- interruptible : true
15
+ image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
14
16
script :
15
17
- >
16
18
nix-shell -I nixpkgs=./pkgs.nix --packages nodejs --run '
20
22
21
23
test :
22
24
stage : check
23
- interruptible : true
25
+ image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
24
26
script :
25
27
- >
26
28
nix-shell -I nixpkgs=./pkgs.nix --packages nodejs --run '
30
32
31
33
nix-dry :
32
34
stage : check
33
- interruptible : true
35
+ image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
34
36
script :
35
37
- nix-build -v -v --dry-run ./release.nix --attr application
36
38
- nix-build -v -v --dry-run ./release.nix --attr docker
@@ -40,35 +42,109 @@ nix-dry:
40
42
41
43
nix :
42
44
stage : build
43
- interruptible : true
45
+ image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
44
46
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
+ )"
45
55
- >
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/
50
69
only :
51
70
- 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
52
131
53
132
packages :
54
133
stage : release
55
- interruptible : true
134
+ image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
135
+ dependencies :
136
+ - nix
56
137
script :
57
138
- >
58
139
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)";
65
140
commit="$(git rev-parse --short HEAD)";
66
141
gh release \
67
- create "$commit" $ builds \
142
+ create "$commit" builds/*-linux-* builds/*-win32-* builds/*-macos-* \
68
143
--title "Build-$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
69
144
--prerelease \
70
145
--notes "" \
71
146
--repo MatrixAI/TypeScript-Demo-Lib;
72
147
'
73
148
only :
74
149
- master
150
+
0 commit comments