aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBohdan Horbeshko <bodqhrohro@gmail.com>2024-03-29 14:39:10 +0300
committerBohdan Horbeshko <bodqhrohro@gmail.com>2024-03-29 14:39:10 +0300
commit908bd76aacfae7ae11b49e83da060232703bfa4f (patch)
treec49d52cf07889697505484185858081f896a11c2
parent67c38823f2b053928c6c0a5a13261b891e9db4d3 (diff)
Add staging.Dockerfile
-rw-r--r--Dockerfile2
-rw-r--r--Makefile6
-rw-r--r--staging.Dockerfile43
3 files changed, 49 insertions, 2 deletions
diff --git a/Dockerfile b/Dockerfile
index 6fea570..c3858e9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -29,7 +29,7 @@ WORKDIR /src
RUN make ${MAKEOPTS}
FROM scratch AS telegabber
-COPY --from=build /src/telegabber /usr/local/bin/
+COPY --from=build /src/release/telegabber /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/telegabber"]
FROM scratch AS binaries
diff --git a/Makefile b/Makefile
index c859606..69375be 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,8 @@ VERSION := "v1.9.1"
MAKEOPTS := "-j4"
all:
- go build -ldflags "-X main.commit=${COMMIT}" -o telegabber
+ mkdir -p release
+ go build -ldflags "-X main.commit=${COMMIT}" -o release/telegabber
test:
go test -v ./config ./ ./telegram ./xmpp ./xmpp/gateway ./persistence ./telegram/formatter ./badger
@@ -16,3 +17,6 @@ lint:
build_indocker:
docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "VERSION=${VERSION}" --build-arg "MAKEOPTS=${MAKEOPTS}" --output=release --target binaries .
+
+build_indocker_staging:
+ DOCKER_BUILDKIT=1 docker build --build-arg "TD_COMMIT=${TD_COMMIT}" --build-arg "MAKEOPTS=${MAKEOPTS}" --network host --output=release --target binaries -f staging.Dockerfile .
diff --git a/staging.Dockerfile b/staging.Dockerfile
new file mode 100644
index 0000000..7b9a91b
--- /dev/null
+++ b/staging.Dockerfile
@@ -0,0 +1,43 @@
+FROM golang:1.19-bullseye AS base
+
+RUN apt-get update
+RUN apt-get install -y libssl-dev cmake build-essential gperf libz-dev make git php
+
+FROM base AS tdlib
+
+ARG TD_COMMIT
+ARG MAKEOPTS
+RUN git clone https://github.com/tdlib/td /src/
+RUN git -C /src/ checkout "${TD_COMMIT}"
+RUN mkdir build
+WORKDIR /build/
+RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/compiled/ /src/
+RUN cmake --build . --target prepare_cross_compiling ${MAKEOPTS}
+WORKDIR /src/
+RUN php SplitSource.php
+WORKDIR /build/
+RUN cmake --build . ${MAKEOPTS}
+RUN make install
+
+FROM base AS cache
+ARG VERSION
+COPY --from=tdlib /compiled/ /usr/local/
+WORKDIR /src
+RUN --mount=type=cache,target=/go \
+ --mount=type=cache,target=/root/.cache/go-build \
+ --mount=type=bind,source=./,target=/src \
+ go get
+
+FROM cache AS build
+ARG MAKEOPTS
+WORKDIR /src
+RUN --mount=type=bind,source=./,target=/src,rw \
+ --mount=type=cache,destination=/src/release \
+ make ${MAKEOPTS}
+
+FROM build AS release
+RUN --mount=type=cache,destination=/src/release \
+ cp /src/release/telegabber /
+
+FROM scratch AS binaries
+COPY --from=release /telegabber /