Skip to content

Commit 0af854c

Browse files
Merge pull request #784 from nodejs/skip
Add skip/security option to update.sh
2 parents 368e72d + d50660f commit 0af854c

File tree

1 file changed

+63
-11
lines changed

1 file changed

+63
-11
lines changed

update.sh

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,46 @@
11
#!/bin/bash
22
set -ue
33

4+
function usage() {
5+
cat <<EOF
6+
7+
Update the node docker images.
8+
9+
Usage:
10+
$0 [-s] [MAJOR_VERSION] [VARIANT]
11+
12+
Examples:
13+
- update.sh # Update all images
14+
- update.sh -s # Update all images, skip updating Alpine and Yarn
15+
- update.sh 8 # Update version 8 and variants (default, slim, alpine etc.)
16+
- update.sh -s 8 # Update version 8 and variants, skip updating Alpine and Yarn
17+
- update.sh 8 slim # Update all variants for version 8
18+
- update.sh -s 8 slim # Update all variants for version 8, skip updating Alpine and Yarn
19+
20+
OPTIONS:
21+
-s Security update; skip updating the yarn and alpine versions.
22+
-h Show this message
23+
24+
EOF
25+
}
26+
27+
SKIP=false
28+
while getopts "sh" opt; do
29+
case "${opt}" in
30+
s)
31+
SKIP=true
32+
;;
33+
h)
34+
usage
35+
exit
36+
;;
37+
\?)
38+
usage
39+
exit
40+
;;
41+
esac
42+
done
43+
444
. functions.sh
545

646
cd "$(cd "${0%/*}" && pwd -P)"
@@ -17,7 +57,10 @@ fi
1757
# TODO: Should be able to specify target architecture manually
1858
arch=$(get_arch)
1959

20-
yarnVersion="$(curl -sSL --compressed https://yarnpkg.com/latest-version)"
60+
if [ "${SKIP}" != true ]; then
61+
alpine_version=$(get_config "./" "alpine_version")
62+
yarnVersion="$(curl -sSL --compressed https://yarnpkg.com/latest-version)"
63+
fi
2164

2265
function in_versions_to_update() {
2366
local version=$1
@@ -50,20 +93,25 @@ function update_node_version() {
5093

5194
fullVersion="$(curl -sSL --compressed "${baseuri}" | grep '<a href="v'"${version}." | sed -E 's!.*<a href="v([^"/]+)/?".*!\1!' | cut -d'.' -f2,3 | sort -n | tail -1)"
5295
(
53-
cp "${template}" "${dockerfile}"
96+
cp "${template}" "${dockerfile}-tmp"
5497
local fromprefix=""
5598
if [ "${arch}" != "amd64" ] && [ "${variant}" != "onbuild" ]; then
5699
fromprefix="${arch}\\/"
57100
fi
58101

59102
nodeVersion="${version}.${fullVersion:-0}"
60103

61-
sed -Ei -e 's/^FROM (.*)/FROM '"$fromprefix"'\1/' "${dockerfile}"
62-
sed -Ei -e 's/^(ENV NODE_VERSION ).*/\1'"${nodeVersion}"'/' "${dockerfile}"
63-
sed -Ei -e 's/^(ENV YARN_VERSION ).*/\1'"${yarnVersion}"'/' "${dockerfile}"
104+
sed -Ei -e 's/^FROM (.*)/FROM '"$fromprefix"'\1/' "${dockerfile}-tmp"
105+
sed -Ei -e 's/^(ENV NODE_VERSION ).*/\1'"${nodeVersion}"'/' "${dockerfile}-tmp"
106+
107+
if [ "${SKIP}" = true ]; then
108+
# Get the currently used Yarn version
109+
yarnVersion="$(grep "ENV YARN_VERSION" "${dockerfile}" | cut -d' ' -f3)"
110+
fi
111+
sed -Ei -e 's/^(ENV YARN_VERSION ).*/\1'"${yarnVersion}"'/' "${dockerfile}-tmp"
64112

65113
# Only for onbuild variant
66-
sed -Ei -e 's/^(FROM .*node:)[^-]*(-.*)/\1'"${nodeVersion}"'\2/' "${dockerfile}"
114+
sed -Ei -e 's/^(FROM .*node:)[^-]*(-.*)/\1'"${nodeVersion}"'\2/' "${dockerfile}-tmp"
67115

68116
# shellcheck disable=SC1004
69117
new_line=' \\\
@@ -75,18 +123,22 @@ function update_node_version() {
75123
pattern='"\$\{'$(echo "${key_type}" | tr '[:lower:]' '[:upper:]')'_KEYS\[@\]\}"'
76124
sed -Ei -e "s/([ \\t]*)(${pattern})/\\1${line}${new_line}\\1\\2/" "${dockerfile}"
77125
done <"keys/${key_type}.keys"
78-
sed -Ei -e "/${pattern}/d" "${dockerfile}"
126+
sed -Ei -e "/${pattern}/d" "${dockerfile}-tmp"
79127
done
80128

81129
if [ "${variant}" = "alpine" ]; then
82-
alpine_version=$(get_config "./" "alpine_version")
83-
sed -Ei -e "s/(alpine:)0.0/\\1${alpine_version}/" "${dockerfile}"
130+
if [ "${SKIP}" = true ]; then
131+
# Get the currently used Alpine version
132+
alpine_version=$(grep "FROM" "${dockerfile}" | cut -d':' -f2)
133+
fi
134+
sed -Ei -e "s/(alpine:)0.0/\\1${alpine_version}/" "${dockerfile}-tmp"
84135
fi
85136

86137
# Required for POSIX sed
87-
if [ -f "${dockerfile}-e" ]; then
88-
rm "${dockerfile}-e"
138+
if [ -f "${dockerfile}-tmp-e" ]; then
139+
rm "${dockerfile}-tmp-e"
89140
fi
141+
mv -f "${dockerfile}-tmp" "${dockerfile}"
90142
)
91143
}
92144

0 commit comments

Comments
 (0)