-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·74 lines (60 loc) · 3.74 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·74 lines (60 loc) · 3.74 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
#!/bin/bash
rclone_ver=${rclone_ver:-$(curl -s https://downloads.rclone.org/version.txt | cut -d"v" -f2)}
build_date=${build_date:-$(date +"%Y%m%dT%H%M%S")}
for docker_arch in amd64 arm32v6 arm64v8; do
case ${docker_arch} in
amd64 ) qemu_arch="x86_64" rclone_arch="amd64" image_arch="amd64" ;;
arm32v6 ) qemu_arch="arm" rclone_arch="arm" image_arch="arm" ;;
arm64v8 ) qemu_arch="aarch64" rclone_arch="arm64" image_arch="arm64" ;;
esac
cp Dockerfile.cross Dockerfile.${docker_arch}
sed -i "s|__BASEIMAGE_ARCH__|${docker_arch}|g" Dockerfile.${docker_arch}
sed -i "s|__QEMU_ARCH__|${qemu_arch}|g" Dockerfile.${docker_arch}
sed -i "s|__RCLONE_ARCH__|${rclone_arch}|g" Dockerfile.${docker_arch}
sed -i "s|__RCLONE_VER__|${rclone_ver}|g" Dockerfile.${docker_arch}
sed -i "s|__BUILD_DATE__|${build_date}|g" Dockerfile.${docker_arch}
if [ ${docker_arch} == 'amd64' ]; then
sed -i "/__CROSS__/d" Dockerfile.${docker_arch}
cp Dockerfile.${docker_arch} Dockerfile
else
sed -i "s/__CROSS__//g" Dockerfile.${docker_arch}
fi
# Check for qemu static bins
if [[ ! -f qemu-${qemu_arch}-static ]]; then
echo "Downloading the qemu static binaries for ${docker_arch}"
wget -q -N https://github.com/multiarch/qemu-user-static/releases/download/v4.0.0-4/x86_64_qemu-${qemu_arch}-static.tar.gz
tar -xvf x86_64_qemu-${qemu_arch}-static.tar.gz
rm x86_64_qemu-${qemu_arch}-static.tar.gz
fi
# Build
if [ "$EUID" -ne 0 ]; then
sudo docker build -f Dockerfile.${docker_arch} -t lucashalbert/rclone:${docker_arch}-${rclone_ver} .
sudo docker push lucashalbert/rclone:${docker_arch}-${rclone_ver}
else
docker build -f Dockerfile.${docker_arch} -t lucashalbert/rclone:${docker_arch}-${rclone_var} .
docker push lucashalbert/rclone:${docker_arch}-${rclone_ver}
# Create and annotate arch-version manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create lucashalbert/rclone:${docker_arch}-${rclone_ver} lucashalbert/rclone:${docker_arch}-${rclone_ver}
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate lucashalbert/rclone:${docker_arch}-${rclone_ver} lucashalbert/rclone:${docker_arch}-${rclone_ver} --os linux --arch ${image_arch}
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push lucashalbert/rclone:${docker_arch}-${rclone_ver}
fi
done
# Create version specific docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create lucashalbert/rclone:${rclone_ver} lucashalbert/rclone:amd64-${rclone_ver} lucashalbert/rclone:arm32v6-${rclone_ver} lucashalbert/rclone:arm64v8-${rclone_ver}
# Create latest docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create lucashalbert/rclone:latest lucashalbert/rclone:amd64-${rclone_ver} lucashalbert/rclone:arm32v6-${rclone_ver} lucashalbert/rclone:arm64v8-${rclone_ver}
for docker_arch in amd64 arm32v6 arm64v8; do
case ${docker_arch} in
amd64 ) image_arch="amd64" ;;
arm32v6 ) image_arch="arm" ;;
arm64v8 ) image_arch="arm64" ;;
esac
# Annotate version specific docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate lucashalbert/rclone:${rclone_ver} lucashalbert/rclone:${docker_arch}-${rclone_ver} --os linux --arch ${image_arch}
# Annotate latest docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate lucashalbert/rclone:latest lucashalbert/rclone:${docker_arch}-${rclone_ver} --os linux --arch ${image_arch}
done
# Push version specific docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push lucashalbert/rclone:${rclone_ver}
# Push latest docker manifest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push lucashalbert/rclone:latest