1
+ # Prerequisites:
2
+ # dep ensure --vendor-only
3
+ # bblfsh-sdk release
4
+
5
+ # ==============================
6
+ # Stage 1: Native Driver Build
7
+ # ==============================
8
+ FROM node:8-alpine as native
9
+
10
+ ADD native /native
11
+ WORKDIR /native
12
+
13
+ # build native driver
14
+ RUN yarn && yarn build
15
+
16
+
17
+ # ================================
18
+ # Stage 1.1: Native Driver Tests
19
+ # ================================
20
+ FROM native as native_test
21
+ # run native driver tests
22
+ RUN yarn test
23
+
24
+
25
+ # =================================
26
+ # Stage 2: Go Driver Server Build
27
+ # =================================
28
+ FROM golang:1.10-alpine as driver
29
+
30
+ ENV DRIVER_REPO=github.com/bblfsh/javascript-driver
31
+ ENV DRIVER_REPO_PATH=/go/src/$DRIVER_REPO
32
+
33
+ ADD vendor $DRIVER_REPO_PATH/vendor
34
+ ADD driver $DRIVER_REPO_PATH/driver
35
+
36
+ WORKDIR $DRIVER_REPO_PATH/
37
+
38
+ # build tests
39
+ RUN go test -c -o /tmp/fixtures.test ./driver/fixtures/
40
+ # build server binary
41
+ RUN go build -o /tmp/driver ./driver/main.go
42
+
43
+ # =======================
44
+ # Stage 3: Driver Build
45
+ # =======================
46
+ FROM node:8-alpine
47
+
48
+ LABEL maintainer="source{d}" \
49
+ bblfsh.language="javascript"
50
+
51
+ WORKDIR /opt/driver
52
+
53
+ # copy driver manifest and static files
54
+ ADD .manifest.release.toml ./etc/manifest.toml
55
+
56
+ # copy static files from driver source directory
57
+ ADD ./native/native.sh ./bin/native
58
+
59
+
60
+ # copy build artifacts for native driver
61
+ COPY --from=native /native/lib/index.js ./bin/index.js
62
+ COPY --from=native /native/node_modules ./bin/node_modules
63
+
64
+
65
+ # copy tests binary
66
+ COPY --from=driver /tmp/fixtures.test ./bin/
67
+ # move stuff to make tests work
68
+ RUN ln -s /opt/driver ../build
69
+ VOLUME /opt/fixtures
70
+
71
+ # copy driver server binary
72
+ COPY --from=driver /tmp/driver ./bin/
73
+
74
+ ENTRYPOINT ["/opt/driver/bin/driver" ]
0 commit comments