build-labels 0.0.74 → 0.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/install-docker-static +164 -25
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 184e1d17e16a503f83dab878c391b8e8571c2ac71285ef697cebb75936dd556c
|
|
4
|
+
data.tar.gz: 4e9c5be493bbfda785871547691f8aa6110842917aa8277056bc671be6dd834b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad03e9efa477f1772d0c62e293f7775087620c53ab126eff6d833332f4a4d4cc1eef606968cf4035bac9fd2d1d56dfc2e820ed131961bdf2cac62194daca5d23
|
|
7
|
+
data.tar.gz: 05da2dd8fec543a246af8aaf0cca3f6b6450d68fecc0d87703d310c6e5aeedc8a5aa719d5c666c03ba715581b3b075d228e0dce8d9fe288bf21458ed8d0b6d04
|
data/bin/install-docker-static
CHANGED
|
@@ -6,16 +6,121 @@ exec "sh", "-eux", "-c", shell, "sh", *ARGV
|
|
|
6
6
|
__END__
|
|
7
7
|
set -eux
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
docker_major=""
|
|
10
|
+
docker_version_prefix=""
|
|
11
|
+
|
|
12
|
+
usage() {
|
|
13
|
+
cat <<'USAGE'
|
|
14
|
+
Usage: install-docker-static [VERSION_PREFIX] [--docker-major N]
|
|
15
|
+
|
|
16
|
+
Options:
|
|
17
|
+
VERSION_PREFIX Install latest Docker version matching prefix
|
|
18
|
+
(e.g., 28, 28.5, 28.5.2)
|
|
19
|
+
-m, --major, --docker-major N Install latest Docker version within major N
|
|
20
|
+
-h, --help Show this help
|
|
21
|
+
USAGE
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
parse_args() {
|
|
25
|
+
while [ "$#" -gt 0 ]; do
|
|
26
|
+
case "$1" in
|
|
27
|
+
-m|--major|--docker-major)
|
|
28
|
+
if [ -z "${2:-}" ]; then
|
|
29
|
+
echo "Missing value for $1" >&2
|
|
30
|
+
usage
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
docker_major="$2"
|
|
34
|
+
shift 2
|
|
35
|
+
;;
|
|
36
|
+
-h|--help)
|
|
37
|
+
usage
|
|
38
|
+
exit 0
|
|
39
|
+
;;
|
|
40
|
+
*)
|
|
41
|
+
if [ -z "$docker_version_prefix" ]; then
|
|
42
|
+
docker_version_prefix="$1"
|
|
43
|
+
shift
|
|
44
|
+
else
|
|
45
|
+
echo "Unexpected argument: $1" >&2
|
|
46
|
+
usage
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
;;
|
|
50
|
+
esac
|
|
51
|
+
done
|
|
52
|
+
|
|
53
|
+
if [ -n "$docker_version_prefix" ] && [ -n "$docker_major" ]; then
|
|
54
|
+
echo "Specify either VERSION_PREFIX or --docker-major, not both." >&2
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
if [ -n "$docker_major" ]; then
|
|
59
|
+
case "$docker_major" in
|
|
60
|
+
*[!0-9]*)
|
|
61
|
+
echo "Invalid major version: $docker_major" >&2
|
|
62
|
+
exit 1
|
|
63
|
+
;;
|
|
64
|
+
esac
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
if [ -n "$docker_version_prefix" ]; then
|
|
68
|
+
case "$docker_version_prefix" in
|
|
69
|
+
*[!0-9.]*|*.*.*.*)
|
|
70
|
+
echo "Invalid version prefix: $docker_version_prefix" >&2
|
|
71
|
+
exit 1
|
|
72
|
+
;;
|
|
73
|
+
esac
|
|
74
|
+
fi
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
detect_arch() {
|
|
78
|
+
arch="$(uname -m)"
|
|
79
|
+
case "$arch" in
|
|
80
|
+
x86_64|amd64)
|
|
81
|
+
docker_arch="x86_64"
|
|
82
|
+
buildx_arch="amd64"
|
|
83
|
+
;;
|
|
84
|
+
aarch64|arm64)
|
|
85
|
+
docker_arch="aarch64"
|
|
86
|
+
buildx_arch="arm64"
|
|
87
|
+
;;
|
|
88
|
+
armv7l|armv7)
|
|
89
|
+
docker_arch="armhf"
|
|
90
|
+
buildx_arch="arm-v7"
|
|
91
|
+
;;
|
|
92
|
+
armv6l|armv6)
|
|
93
|
+
docker_arch="armel"
|
|
94
|
+
buildx_arch="arm-v6"
|
|
95
|
+
;;
|
|
96
|
+
ppc64le)
|
|
97
|
+
docker_arch="ppc64le"
|
|
98
|
+
buildx_arch="ppc64le"
|
|
99
|
+
;;
|
|
100
|
+
s390x)
|
|
101
|
+
docker_arch="s390x"
|
|
102
|
+
buildx_arch="s390x"
|
|
103
|
+
;;
|
|
104
|
+
*)
|
|
105
|
+
echo "Unsupported architecture: $arch" >&2
|
|
106
|
+
exit 1
|
|
107
|
+
;;
|
|
108
|
+
esac
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# Dockerfile example:
|
|
112
|
+
# # FROM ruby:3.4.4-slim-bookworm AS base
|
|
113
|
+
# FROM ruby:3.2.10-alpine AS base
|
|
114
|
+
# # RUN gem install build-labels:0.0.71
|
|
115
|
+
# RUN install-docker-static
|
|
116
|
+
# # Or pin to latest Docker within a major (or prefix):
|
|
117
|
+
# # RUN install-docker-static 28
|
|
118
|
+
# # RUN install-docker-static 28.5
|
|
14
119
|
#
|
|
15
|
-
#RUN docker -v
|
|
16
|
-
|
|
120
|
+
# RUN docker -v
|
|
121
|
+
# # docker build --network=host --progress=plain .
|
|
17
122
|
|
|
18
|
-
# TODO:
|
|
123
|
+
# TODO: look for simpler script
|
|
19
124
|
# RUN apk add --no-cache ca-certificates curl tar \
|
|
20
125
|
# && arch="$(uname -m)" \
|
|
21
126
|
# && case "$arch" in x86_64|amd64) a=x86_64;; aarch64|arm64) a=aarch64;; *) exit 1;; esac \
|
|
@@ -26,28 +131,36 @@ set -eux
|
|
|
26
131
|
# && docker -v
|
|
27
132
|
|
|
28
133
|
install_docker_static() {
|
|
29
|
-
|
|
30
|
-
case "$arch" in
|
|
31
|
-
x86_64|amd64) docker_arch="x86_64" ;;
|
|
32
|
-
aarch64|arm64) docker_arch="aarch64" ;;
|
|
33
|
-
armv7l|armv7) docker_arch="armhf" ;;
|
|
34
|
-
armv6l|armv6) docker_arch="armel" ;;
|
|
35
|
-
ppc64le) docker_arch="ppc64le" ;;
|
|
36
|
-
s390x) docker_arch="s390x" ;;
|
|
37
|
-
*)
|
|
38
|
-
echo "Unsupported architecture: $arch" >&2
|
|
39
|
-
exit 1
|
|
40
|
-
;;
|
|
41
|
-
esac
|
|
134
|
+
detect_arch
|
|
42
135
|
base_url="https://download.docker.com/linux/static/stable/$docker_arch/"
|
|
43
|
-
|
|
136
|
+
versions="$(
|
|
44
137
|
curl -fsSL "$base_url" \
|
|
45
138
|
| sed -n 's/.*docker-\([0-9.][0-9.]*\)\.tgz.*/\1/p' \
|
|
46
|
-
| sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
|
|
47
|
-
| tail -n 1
|
|
139
|
+
| sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
|
|
48
140
|
)"
|
|
141
|
+
if [ -n "$docker_version_prefix" ]; then
|
|
142
|
+
latest_version="$(
|
|
143
|
+
printf '%s\n' "$versions" \
|
|
144
|
+
| awk -v p="$docker_version_prefix" 'index($0, p ".")==1 || $0==p' \
|
|
145
|
+
| tail -n 1
|
|
146
|
+
)"
|
|
147
|
+
elif [ -n "$docker_major" ]; then
|
|
148
|
+
latest_version="$(
|
|
149
|
+
printf '%s\n' "$versions" \
|
|
150
|
+
| awk -F. -v m="$docker_major" '$1==m' \
|
|
151
|
+
| tail -n 1
|
|
152
|
+
)"
|
|
153
|
+
else
|
|
154
|
+
latest_version="$(printf '%s\n' "$versions" | tail -n 1)"
|
|
155
|
+
fi
|
|
49
156
|
if [ -z "$latest_version" ]; then
|
|
50
|
-
|
|
157
|
+
if [ -n "$docker_version_prefix" ]; then
|
|
158
|
+
echo "Unable to determine latest Docker version matching $docker_version_prefix from $base_url" >&2
|
|
159
|
+
elif [ -n "$docker_major" ]; then
|
|
160
|
+
echo "Unable to determine latest Docker version for major $docker_major from $base_url" >&2
|
|
161
|
+
else
|
|
162
|
+
echo "Unable to determine latest Docker version from $base_url" >&2
|
|
163
|
+
fi
|
|
51
164
|
exit 1
|
|
52
165
|
fi
|
|
53
166
|
tmp_dir="$(mktemp -d)"
|
|
@@ -57,14 +170,40 @@ install_docker_static() {
|
|
|
57
170
|
rm -rf "$tmp_dir"
|
|
58
171
|
}
|
|
59
172
|
|
|
173
|
+
install_buildx() {
|
|
174
|
+
detect_arch
|
|
175
|
+
buildx_version="${BUILDX_VERSION:-}"
|
|
176
|
+
if [ -z "$buildx_version" ]; then
|
|
177
|
+
buildx_version="$(
|
|
178
|
+
curl -fsSL https://api.github.com/repos/docker/buildx/releases/latest \
|
|
179
|
+
| sed -n 's/.*"tag_name": "\(v[0-9.]*\)".*/\1/p' \
|
|
180
|
+
| head -n 1
|
|
181
|
+
)"
|
|
182
|
+
fi
|
|
183
|
+
if [ -z "$buildx_version" ]; then
|
|
184
|
+
echo "Unable to determine latest buildx version" >&2
|
|
185
|
+
exit 1
|
|
186
|
+
fi
|
|
187
|
+
plugin_dir="/usr/local/lib/docker/cli-plugins"
|
|
188
|
+
mkdir -p "$plugin_dir"
|
|
189
|
+
curl -fsSL \
|
|
190
|
+
-o "$plugin_dir/docker-buildx" \
|
|
191
|
+
"https://github.com/docker/buildx/releases/download/${buildx_version}/buildx-${buildx_version}.linux-${buildx_arch}"
|
|
192
|
+
chmod 0755 "$plugin_dir/docker-buildx"
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
parse_args "$@"
|
|
196
|
+
|
|
60
197
|
if command -v apt-get >/dev/null 2>&1; then
|
|
61
198
|
apt-get update
|
|
62
199
|
apt-get install -y --no-install-recommends git ca-certificates curl tar
|
|
63
200
|
install_docker_static
|
|
201
|
+
install_buildx
|
|
64
202
|
rm -rf /var/lib/apt/lists/*
|
|
65
203
|
elif command -v apk >/dev/null 2>&1; then
|
|
66
204
|
apk add --no-cache git ca-certificates curl tar
|
|
67
205
|
install_docker_static
|
|
206
|
+
install_buildx
|
|
68
207
|
else
|
|
69
208
|
echo "Unsupported package manager: expected apt or apk." >&2
|
|
70
209
|
exit 1
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: build-labels
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.76
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Artyom B
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-01-
|
|
11
|
+
date: 2026-01-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|