From 27de71ba013b2a542eaa53468c49ee6059c76930 Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Tue, 21 May 2024 22:16:10 +0200
Subject: [PATCH] build debian package in docker

---
 Dockerfile.deb   | 17 +++++++++++++++++
 docker/build.sh  | 18 ++++--------------
 docker/debian.sh | 12 ++++++++++++
 3 files changed, 33 insertions(+), 14 deletions(-)
 create mode 100644 Dockerfile.deb
 create mode 100755 docker/debian.sh

diff --git a/Dockerfile.deb b/Dockerfile.deb
new file mode 100644
index 0000000..353352b
--- /dev/null
+++ b/Dockerfile.deb
@@ -0,0 +1,17 @@
+# build based on debian buster to build debian package
+FROM rust:slim-buster
+WORKDIR /app
+RUN --mount=type=cache,target=/root/.cargo \
+    cargo install cargo-deb
+COPY Cargo.toml Cargo.lock ./
+RUN --mount=type=cache,target=/app/target \
+    --mount=type=cache,target=/root/.cargo/registry \
+    mkdir src \
+    && echo "fn main() {}" > src/main.rs \
+    && cargo build --release \
+    && rm -r src
+COPY ./res ./res
+COPY ./src ./src
+RUN cargo build --release
+RUN cargo deb --no-build
+RUN rm -r /app/target/release
\ No newline at end of file
diff --git a/docker/build.sh b/docker/build.sh
index a327c02..a46e5c3 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -1,15 +1,5 @@
-#!/bin/bash
+#!/bin/sh
 
-# Also generated by chatGPT
-
-# Name of your Docker image
-IMAGE_NAME="gcli"
-
-# Version of your Docker image
-IMAGE_VERSION="latest"
-
-# Build and tag the Docker image using Docker Buildx
-docker buildx build -t "$IMAGE_NAME:$IMAGE_VERSION" .
-
-# Optionally, you can push the image to a Docker registry
-# docker push "$IMAGE_NAME:$IMAGE_VERSION"
+IMAGE_NAME=gcli
+IMAGE_VERSION=latest
+docker buildx build -t $IMAGE_NAME:$IMAGE_VERSION .
diff --git a/docker/debian.sh b/docker/debian.sh
new file mode 100755
index 0000000..928f9c7
--- /dev/null
+++ b/docker/debian.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# build debian package
+VERSION=0.2.10-1
+IMAGE_NAME=gcli_deb
+IMAGE_VERSION=latest
+docker buildx build -f Dockerfile.deb -t $IMAGE_NAME:$IMAGE_VERSION .
+
+mkdir -p ./target/debian
+id=$(docker create $IMAGE_NAME:$IMAGE_VERSION)
+docker cp $id:/app/target/debian/gcli_${VERSION}_amd64.deb ./target/debian
+docker rm -v $id
\ No newline at end of file
-- 
GitLab