1+ default :
2+ interruptible : true
3+
14variables :
25 GIT_SUBMODULE_STRATEGY : recursive
36
47stages :
58 - check
69 - build
10+ - quality
711 - release
812
9- image : registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
10-
1113lint :
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 '
2022
2123test :
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 '
3032
3133nix-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
4143nix :
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
53132packages :
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+
0 commit comments