Skip to content

Commit 6d6aa38

Browse files
committed
wip: primitive automation to build for different docker-based linuxes
1 parent ae4ebcf commit 6d6aa38

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed

scripts/Dockerfile.template

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
ARG OS
2+
FROM $OS
3+
4+
ARG PAC
5+
6+
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
7+
RUN $PAC update && $PAC install -y git gcc curl
8+
9+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup && sh /tmp/rustup -y
10+
ADD scripts/build-internal.sh /
11+
RUN mkdir -p /dummy/src
12+
COPY Cargo.toml /dummy
13+
RUN source $HOME/.cargo/env && cd /dummy && echo "// dummy file" > src/lib.rs && cargo build --release

scripts/PLATFORMS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# short name # docker from # pac mgr cmd
2+
centos7 centos:7.9.2009 yum
3+
rocky9 rockylinux:9.3 yum
4+
debian12 debian:12.4 apt-get

scripts/build-internal.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
3+
if [ $# -ne 1 ]; then
4+
echo usage $0 \<os_ident\>
5+
exit 1
6+
fi
7+
8+
cd /
9+
git clone /src/ bigarchiver && \
10+
cd bigarchiver/ && \
11+
cargo test --release && cargo build --release && \
12+
mkdir -pv /src/scripts/build/$1/ && \
13+
cp -v target/release/bigarchiver /src/scripts/build/$1/

scripts/build.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [ $# -eq 0 ]; then
6+
echo usage $0 --image\|--app [ os_ident ]
7+
exit 1
8+
fi
9+
10+
cat PLATFORMS | sed '/^#/d;/^[[:space:]]*$/d' | while read LINE; do
11+
WORDS=($LINE)
12+
if [ ${#WORDS[@]} -ne 3 ]; then
13+
echo Invalid PLATFORMS file
14+
exit 1
15+
fi
16+
17+
IDENT=${WORDS[0]}
18+
IMAGE_FROM=${WORDS[1]}
19+
PAC_MGR=${WORDS[2]}
20+
21+
if [ -n "$2" ]; then
22+
if [ x"$IDENT" != x"$2" ] ; then
23+
continue
24+
fi
25+
fi
26+
27+
cd ..
28+
case $1 in
29+
--image)
30+
echo preparing build image for $IDENT
31+
docker build -t bigarchiver-$IDENT -f scripts/Dockerfile.template --build-arg OS=$IMAGE_FROM --build-arg PAC=$PAC_MGR .
32+
;;
33+
--app)
34+
echo building application for $IDENT
35+
docker run -v=.:/src bigarchiver-$IDENT /bin/bash -l -c "/build-internal.sh $IDENT"
36+
;;
37+
*)
38+
echo invalid usage
39+
exit 3
40+
esac
41+
cd scripts
42+
done
43+
44+
echo all done

0 commit comments

Comments
 (0)