Skip to content
This repository was archived by the owner on Jun 16, 2025. It is now read-only.

Commit e78f9c0

Browse files
committed
chore: add builder docker image
1 parent e3ca670 commit e78f9c0

File tree

2 files changed

+166
-0
lines changed

2 files changed

+166
-0
lines changed

.circleci/config.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
version: 2
2+
jobs:
3+
build:
4+
docker:
5+
- image: circleci/buildpack-deps
6+
steps:
7+
- checkout
8+
- setup_remote_docker
9+
- run:
10+
name: "Build"
11+
command: docker build -t filebrowser/builder:latest .
12+
release:
13+
docker:
14+
- image: circleci/buildpack-deps
15+
steps:
16+
- checkout
17+
- setup_remote_docker
18+
- run:
19+
name: Docker login
20+
command: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
21+
- run:
22+
name: Docker build
23+
command: docker build -t filebrowser/builder:latest -t filebrowser/builder:${CIRCLE_TAG} .
24+
- run:
25+
name: Docker push
26+
command: |
27+
docker push filebrowser/builder:latest
28+
docker push filebrowser/builder:${CIRCLE_TAG}
29+
- run: docker logout
30+
workflows:
31+
version: 2
32+
build-workflow:
33+
jobs:
34+
- build:
35+
filters:
36+
tags:
37+
only: /.*/
38+
- release:
39+
context: deploy
40+
filters:
41+
tags:
42+
only: /^v.*/
43+
branches:
44+
ignore: /.*/

Dockerfile

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
FROM buildpack-deps:buster-scm
2+
3+
# gcc for cgo
4+
RUN apt-get update && apt-get install -y --no-install-recommends \
5+
g++ \
6+
gcc \
7+
libc6-dev \
8+
make \
9+
pkg-config \
10+
xz-utils \
11+
&& rm -rf /var/lib/apt/lists/*
12+
13+
# INSTALL GO
14+
15+
ENV GOLANG_VERSION 1.14.4
16+
17+
RUN set -eux; \
18+
\
19+
# this "case" statement is generated via "update.sh"
20+
dpkgArch="$(dpkg --print-architecture)"; \
21+
case "${dpkgArch##*-}" in \
22+
amd64) goRelArch='linux-amd64'; goRelSha256='aed845e4185a0b2a3c3d5e1d0a35491702c55889192bb9c30e67a3de6849c067' ;; \
23+
armhf) goRelArch='linux-armv6l'; goRelSha256='e20211425b3f797ca6cd5e9a99ab6d5eaf1b009d08d19fc8a7835544fa58c703' ;; \
24+
arm64) goRelArch='linux-arm64'; goRelSha256='05dc46ada4e23a1f58e72349f7c366aae2e9c7a7f1e7653095538bc5bba5e077' ;; \
25+
i386) goRelArch='linux-386'; goRelSha256='4179f406ea0efd455a8071eaaaf1dea92cac5c17aab89fbad18ea2a37623c810' ;; \
26+
ppc64el) goRelArch='linux-ppc64le'; goRelSha256='b335f85bc935ca3f553ad1bac37da311aaec887ffd8a48cb58a0abb0d8adf324' ;; \
27+
s390x) goRelArch='linux-s390x'; goRelSha256='17f2ae0bae968b3d909daabc5cc4a37471ddb70ec49076b78702291e6772d71a' ;; \
28+
*) goRelArch='src'; goRelSha256='7011af3bbc2ac108d1b82ea8abb87b2e63f78844f0259be20cde4d42c5c40584'; \
29+
echo >&2; echo >&2 "warning: current architecture ($dpkgArch) does not have a corresponding Go binary release; will be building from source"; echo >&2 ;; \
30+
esac; \
31+
\
32+
url="https://golang.org/dl/go${GOLANG_VERSION}.${goRelArch}.tar.gz"; \
33+
wget -O go.tgz "$url"; \
34+
echo "${goRelSha256} *go.tgz" | sha256sum -c -; \
35+
tar -C /usr/local -xzf go.tgz; \
36+
rm go.tgz; \
37+
\
38+
if [ "$goRelArch" = 'src' ]; then \
39+
echo >&2; \
40+
echo >&2 'error: UNIMPLEMENTED'; \
41+
echo >&2 'TODO install golang-any from jessie-backports for GOROOT_BOOTSTRAP (and uninstall after build)'; \
42+
echo >&2; \
43+
exit 1; \
44+
fi; \
45+
\
46+
export PATH="/usr/local/go/bin:$PATH"; \
47+
go version
48+
49+
ENV GOPATH /go
50+
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
51+
52+
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
53+
54+
# INSTALL NODE
55+
56+
ENV NODE_VERSION 12.17.0
57+
58+
RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
59+
&& case "${dpkgArch##*-}" in \
60+
amd64) ARCH='x64';; \
61+
ppc64el) ARCH='ppc64le';; \
62+
s390x) ARCH='s390x';; \
63+
arm64) ARCH='arm64';; \
64+
armhf) ARCH='armv7l';; \
65+
i386) ARCH='x86';; \
66+
*) echo "unsupported architecture"; exit 1 ;; \
67+
esac \
68+
# gpg keys listed at https://github.com/nodejs/node#release-keys
69+
&& set -ex \
70+
&& for key in \
71+
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
72+
FD3A5288F042B6850C66B31F09FE44734EB7990E \
73+
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
74+
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
75+
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
76+
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
77+
77984A986EBC2AA786BC0F66B01FBB92821C587A \
78+
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
79+
4ED778F539E3634C779C87C6D7062848A1AB005C \
80+
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
81+
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
82+
; do \
83+
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
84+
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
85+
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
86+
done \
87+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
88+
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
89+
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
90+
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
91+
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
92+
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
93+
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
94+
# smoke tests
95+
&& node --version \
96+
&& npm --version
97+
98+
ENV YARN_VERSION 1.22.4
99+
100+
RUN set -ex \
101+
&& for key in \
102+
6A010C5166006599AA17F08146C2130DFD2497F5 \
103+
; do \
104+
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
105+
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
106+
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
107+
done \
108+
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
109+
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
110+
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
111+
&& mkdir -p /opt \
112+
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
113+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
114+
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
115+
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
116+
# smoke test
117+
&& yarn --version
118+
119+
120+
121+
RUN mkdir /src
122+
WORKDIR /src

0 commit comments

Comments
 (0)