blob: 10ee86bc0d5a14aa8b4140824b17a3494a8518ae (
plain)
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
|
# https://taskfile.dev
#inlcuded by the ci main taskfile to produce containerized builds, and also
#be included by the container itself to run build tasks inside the container
version: "3"
vars:
INCLUDE_FILES: "Dockerfile, docker-compose.yaml"
includes:
install:
taskfile: ../install.taskfile.yaml
optional: true #not needed for inside container build
tasks:
#called from inside the container to build native libraries
build-libs:
vars:
OUT_DIR: "{{.USER_WORKING_DIR}}/out"
#build stage generates the following libraries
generates:
- "{{.USER_WORKING_DIR}}/out/libvn_rpmalloc.so"
cmds:
#build rpmalloc library
- cd lib/vnlib_rpmalloc/ && task && cp build/libvn_rpmalloc.so {{.OUT_DIR}}/libvn_rpmalloc.so
#called from ci pipline to build the package
build:
cmds:
# clean up the run.sh script to remove windows line endings in my wsl default instance
- cmd: wsl dos2unix ./run.sh
platforms: [ windows/amd64 ]
#init build image
- task: setup-container-image
#remove the default config file as it's not needed in the container
- powershell -Command "rm -Force -Recurse build/app/config/"
#install rpmalloc
- task: install-rpmalloc-lib
postbuild_success:
cmds:
#tar up the build directory and move it to the output bin directory
- cmd: cd build/ && tar -czf '{{ .BINARY_DIR }}/{{.PACKAGE_FILE_NAME}}' .
#clean up all the build files after build succeeds
- task: clean
clean:
ignore_error: true
cmds:
- cmd: powershell -Command "rm -Recurse -Force ./build"
install-rpmalloc-lib:
internal: true
cmds:
#install compressor plugin
- task: install:install
vars:
PROJECT_NAME: 'vnlib_rpmalloc'
MODULE_NAME: "VNLib.Core"
FILE_NAME: "src.tgz"
DIR: './build/app/lib/vnlib_rpmalloc'
setup-container-image:
internal: true
cmds:
#make build directory
- powershell -Command "mkdir build, build/app, build/app/config-templates/, build/app/static/ -Force"
#copy the existing linux-x64 build to the build folder, this will be the container base
- powershell -Command "cp -Recurse -Force ../build/linux-x64/* build/app/"
#copy local scripts and config data into the build folder
- powershell -Command "cp -Force run.sh, Taskfile.yaml build/app/"
- powershell -Command "cp -Force Dockerfile, docker-compose.yaml build/"
- powershell -Command "cp -Force static/* build/app/static/"
- powershell -Command "cp -Force config-templates/* build/app/config-templates/"
|