Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
112 lines (83 loc) · 2.91 KB
/
Copy pathDockerfile
File metadata and controls
112 lines (83 loc) · 2.91 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
FROM golang:1.13.4-alpine3.10 as build
ARG LIBCO_VER=v20
ARG RAFT_VER=v0.9.18
ARG DQLITE_VER=v1.4.1
ARG GO_DQLITE_VER=v1.5.1
ENV PREFIX /usr/local
ENV CONFIG_FLAGS --prefix=$PREFIX
ENV PKG_CONFIG_PATH $PREFIX/lib/pkgconfig/
WORKDIR /build
RUN apk -U --no-cache add \
coreutils git gcc make autoconf automake build-base gperf bison flex texinfo libtool tcl help2man \
curl wget tar sed gawk zip unzip xz bash vim less file python3 py3-pip \
musl-dev gettext-dev ncurses-dev openssl-dev libffi-dev libseccomp-dev libuv-dev libuv-static abuild
RUN rm -rf /usr/local/lib /usr/local/include
COPY patch /patch/
# --- Build patched sqlite
RUN apk add sudo
RUN adduser -h /home/build -G abuild -D -s /bin/bash build
COPY sqlite sqlite
RUN cd sqlite && \
chown -R build . && \
sudo -u build -- abuild-keygen -a -n && \
sudo -u build -- abuild -r
RUN apk add --allow-untrusted /home/build/packages/build/*/*.apk
RUN mkdir -p $PREFIX/packages && \
cp /home/build/packages/build/*/*.apk $PREFIX/packages
# --- Build libco
RUN git clone -b $LIBCO_VER https://github.com/canonical/libco.git && \
cd libco && \
ls /patch/libco-* | xargs -r -n1 patch -p1 -i && \
make && \
make install
# --- Build raft
RUN git clone https://github.com/canonical/raft.git && \
cd raft && \
git checkout $RAFT_VER && \
ls /patch/raft-* | xargs -r -n1 patch -p1 -i && \
autoreconf -i && \
./configure $CONFIG_FLAGS && \
make && \
make install
# --- Build dqlite
RUN git clone --depth 1 https://github.com/canonical/dqlite.git -b $DQLITE_VER && \
cd dqlite && \
ls /patch/dqlite-* | xargs -r -n1 patch -p1 -i && \
autoreconf -i && \
./configure $CONFIG_FLAGS && \
make && \
make install
# --- Build static dqlite-demo
RUN go get -d github.com/spf13/cobra
RUN go get -d github.com/canonical/go-dqlite && \
cd /go/src/github.com/canonical/go-dqlite && \
git checkout $GO_DQLITE_VER && \
ls /patch/go-dqlite-* | xargs -r -n1 patch -p1 -i && \
( [ -f go.mod ] || go mod init ) && \
go install \
-tags libsqlite3 \
-ldflags "-w -s -extldflags '-static'" \
./cmd/dqlite-demo
# --- Create artifact
ENV DIST /dist/artifacts
ARG DRONE_STAGE_ARCH
ENV ARCH $DRONE_STAGE_ARCH
RUN mkdir -p $DIST && \
tar czf $DIST/dqlite-$ARCH.tgz $PREFIX/lib $PREFIX/include $PREFIX/packages
# --- Perform release
RUN GO111MODULE=on go get github.com/drone-plugins/drone-github-release@v1.0.0
ARG GITHUB_TOKEN
ENV GITHUB_TOKEN $GITHUB_TOKEN
ARG DRONE_BUILD_EVENT
ENV DRONE_BUILD_EVENT $DRONE_BUILD_EVENT
ARG DRONE_REPO_OWNER
ENV DRONE_REPO_OWNER $DRONE_REPO_OWNER
ARG DRONE_REPO_NAME
ENV DRONE_REPO_NAME $DRONE_REPO_NAME
ARG DRONE_COMMIT_REF
ENV DRONE_COMMIT_REF $DRONE_COMMIT_REF
RUN if [ "$DRONE_BUILD_EVENT" = "tag" ]; then \
drone-github-release --files="$DIST/*"; \
fi
FROM scratch
COPY --from=build /dist/artifacts/dqlite*.tgz /dist/artifacts/dqlite.tgz