Skip to content

Commit b9cfbf5

Browse files
authored
Merge pull request #25 from MatrixAI/vercel
Integrate Vercel/Pkg for Release Distribution
2 parents 2c24ff8 + d326ca8 commit b9cfbf5

File tree

7 files changed

+959
-60
lines changed

7 files changed

+959
-60
lines changed

.gitlab-ci.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ variables:
44
stages:
55
- check
66
- build
7+
- release
78

89
image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner
910

@@ -33,14 +34,41 @@ nix-dry:
3334
script:
3435
- nix-build -v -v --dry-run ./release.nix --attr application
3536
- nix-build -v -v --dry-run ./release.nix --attr docker
37+
- nix-build -v -v --dry-run ./release.nix --attr package.linux.x64.elf
38+
- nix-build -v -v --dry-run ./release.nix --attr package.windows.x64.exe
39+
- nix-build -v -v --dry-run ./release.nix --attr package.macos.x64.macho
3640

3741
nix:
3842
stage: build
3943
interruptible: true
4044
script:
4145
- >
4246
nix-build ./release.nix
47+
--max-jobs $(nproc)
4348
--attr application
4449
--attr docker
4550
only:
4651
- master
52+
53+
packages:
54+
stage: release
55+
interruptible: true
56+
script:
57+
- >
58+
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+
commit="$(git rev-parse --short HEAD)";
66+
gh release \
67+
create "$commit" $builds \
68+
--title "Build-$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
69+
--prerelease \
70+
--notes "" \
71+
--repo MatrixAI/TypeScript-Demo-Lib;
72+
'
73+
only:
74+
- master

default.nix

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,26 @@
11
{ runCommandNoCC
2-
, nix-gitignore
3-
, nodejs
4-
, nodePackages
5-
, pkgs
6-
, lib
2+
, callPackage
73
}:
84

95
let
10-
src = nix-gitignore.gitignoreSource [".git"] ./.;
11-
nodeVersion = builtins.elemAt (lib.versions.splitVersion nodejs.version) 0;
12-
node2nixDrv = dev: runCommandNoCC "node2nix" {} ''
13-
mkdir $out
14-
${nodePackages.node2nix}/bin/node2nix \
15-
${lib.optionalString dev "--development"} \
16-
--input ${src}/package.json \
17-
--lock ${src}/package-lock.json \
18-
--node-env $out/node-env.nix \
19-
--output $out/node-packages.nix \
20-
--composition $out/default.nix \
21-
--nodejs-${nodeVersion}
22-
'';
23-
# the shell attribute has the nodeDependencies, whereas the package does not
24-
node2nixProd = (
25-
(import (node2nixDrv false) { inherit pkgs nodejs; }).shell.override {
26-
dontNpmInstall = true;
6+
utils = callPackage ./utils.nix {};
7+
drv = runCommandNoCC
8+
"${utils.basename}-${utils.node2nixDev.version}"
9+
{
10+
version = utils.node2nixDev.version;
11+
packageName = utils.node2nixDev.packageName;
2712
}
28-
).nodeDependencies;
29-
node2nixDev = (import (node2nixDrv true) { inherit pkgs nodejs; }).package.overrideAttrs (attrs: {
30-
src = src;
31-
dontNpmInstall = true;
32-
postInstall = ''
33-
# The dependencies were prepared in the install phase
34-
# See `node2nix` generated `node-env.nix` for details.
35-
npm run build
36-
37-
# This call does not actually install packages. The dependencies
38-
# are present in `node_modules` already. It creates symlinks in
39-
# $out/lib/node_modules/.bin according to `bin` section in `package.json`.
40-
npm install
41-
'';
42-
});
43-
name = "${builtins.replaceStrings ["/" "@"] ["_" ""] node2nixDev.packageName}-${node2nixDev.version}";
44-
drv = runCommandNoCC name {} ''
45-
mkdir -p $out/lib/node_modules/${node2nixDev.packageName}
13+
''
14+
mkdir -p $out/lib/node_modules/${utils.node2nixDev.packageName}
4615
# copy only the dist
47-
cp -r ${node2nixDev}/lib/node_modules/${node2nixDev.packageName}/dist $out/lib/node_modules/${node2nixDev.packageName}/
16+
cp -r ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist $out/lib/node_modules/${utils.node2nixDev.packageName}/
4817
# copy over the production dependencies
49-
if [ -d "${node2nixProd}/lib/node_modules" ]; then
50-
cp -r ${node2nixProd}/lib/node_modules $out/lib/node_modules/${node2nixDev.packageName}/
18+
if [ -d "${utils.node2nixProd}/lib/node_modules" ]; then
19+
cp -r ${utils.node2nixProd}/lib/node_modules $out/lib/node_modules/${utils.node2nixDev.packageName}/
5120
fi
5221
# create symlink to the deployed executable folder, if applicable
53-
if [ -d "${node2nixDev}/lib/node_modules/.bin" ]; then
54-
cp -r ${node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/
22+
if [ -d "${utils.node2nixDev}/lib/node_modules/.bin" ]; then
23+
cp -r ${utils.node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/
5524
ln -s $out/lib/node_modules/.bin $out/bin
5625
fi
5726
'';

0 commit comments

Comments
 (0)