Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 22 additions & 24 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@ function update_node_version() {
shift
fi

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)"
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)"
(
cp "$template" "$dockerfile"
cp "${template}" "${dockerfile}"
local fromprefix=""
if [ "$arch" != "amd64" ] && [ "$variant" != "onbuild" ]; then
fromprefix="$arch\\/"
if [ "${arch}" != "amd64" ] && [ "${variant}" != "onbuild" ]; then
fromprefix="${arch}\\/"
fi

sed -E -i.bak 's/^FROM (.*)/FROM '"$fromprefix"'\1/' "$dockerfile" && rm "$dockerfile".bak
sed -E -i.bak 's/^(ENV NODE_VERSION |FROM .*node:).*/\1'"$version.${fullVersion:-0}"'/' "$dockerfile" && rm "$dockerfile".bak
sed -E -i.bak 's/^(ENV YARN_VERSION ).*/\1'"$yarnVersion"'/' "$dockerfile" && rm "$dockerfile".bak
sed -Ei -e 's/^FROM (.*)/FROM '"${fromprefix}"'\1/' "${dockerfile}"
sed -Ei -e 's/^(ENV NODE_VERSION |FROM .*node:).*/\1'"${version}.${fullVersion:-0}"'/' "${dockerfile}"
sed -Ei -e 's/^(ENV YARN_VERSION ).*/\1'"${yarnVersion}"'/' "$dockerfile"

# shellcheck disable=SC1004
new_line=' \\\
Expand All @@ -67,18 +67,16 @@ function update_node_version() {
# Add GPG keys
for key_type in "node" "yarn"; do
while read -r line; do
pattern="\"\\$\\{$(echo "$key_type" | tr '[:lower:]' '[:upper:]')_KEYS\\[@\\]\\}\""
sed -E -i.bak -e "s/([ \\t]*)($pattern)/\\1${line}${new_line}\\1\\2/" "$dockerfile" && rm "$dockerfile".bak
pattern="\"\\$\\{$(echo "${key_type}" | tr '[:lower:]' '[:upper:]')_KEYS\\[@\\]\\}\""
sed -Ei -e "s/([ \\t]*)(${pattern})/\\1${line}${new_line}\\1\\2/" "${dockerfile}"
done <"keys/$key_type.keys"
sed -E -i.bak "/$pattern/d" "$dockerfile" && rm "$dockerfile".bak
sed -Ei -e "/${pattern}/d" "${dockerfile}"
done

if [ "${version/.*/}" -ge 10 ]; then
sed -E -i.bak 's/FROM (.*)alpine:3.4/FROM \1alpine:3.7/' "$dockerfile"
rm "$dockerfile.bak"
sed -Ei -e 's/FROM (.*)alpine:3.4/FROM \1alpine:3.7/' "${dockerfile}"
elif [ "${version/.*/}" -ge 8 ] || [ "$arch" = "ppc64le" ] || [ "$arch" = "s390x" ] || [ "$arch" == "arm64" ] || [ "$arch" == "arm32v7" ]; then
sed -E -i.bak 's/FROM (.*)alpine:3.4/FROM \1alpine:3.6/' "$dockerfile"
rm "$dockerfile.bak"
sed -Ei -e 's/FROM (.*)alpine:3.4/FROM \1alpine:3.6/' "${dockerfile}"
fi
)
}
Expand All @@ -94,27 +92,27 @@ function add_stage() {
echo '
- stage: Build
env:
- NODE_VERSION: "'"$version"'"
- VARIANT: "'"$variant"'"' >>.travis.yml
- NODE_VERSION: "'"${version}"'"
- VARIANT: "'"${variant}"'"' >>.travis.yml
}

echo '#### DO NOT MODIFY. THIS FILE IS AUTOGENERATED ####
' | cat - travis.yml.template >.travis.yml

for version in "${versions[@]}"; do
# Skip "docs" and other non-docker directories
[ -f "$version/Dockerfile" ] || continue
[ -f "${version}/Dockerfile" ] || continue

parentpath=$(dirname "$version")
versionnum=$(basename "$version")
baseuri=$(get_config "$parentpath" "baseuri")
update=$(in_versions_to_update "$version")

add_stage "$baseuri" "$version" "default"
add_stage "${baseuri}" "${version}" "default"

if [ "$update" -eq 0 ]; then
if [ "${update}" -eq 0 ]; then
info "Updating version $version..."
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile.template" "$version/Dockerfile" &
update_node_version "${baseuri}" "${versionnum}" "${parentpath}/Dockerfile.template" "${version}/Dockerfile" &
fi

# Get supported variants according the target architecture
Expand All @@ -123,11 +121,11 @@ for version in "${versions[@]}"; do

for variant in "${variants[@]}"; do
# Skip non-docker directories
[ -f "$version/$variant/Dockerfile" ] || continue
add_stage "$baseuri" "$version" "$variant"
[ -f "${version}/${variant}/Dockerfile" ] || continue
add_stage "${baseuri}" "${version}" "${variant}"

if [ "$update" -eq 0 ]; then
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant" &
if [ "${update}" -eq 0 ]; then
update_node_version "${baseuri}" "${versionnum}" "${parentpath}/Dockerfile-${variant}.template" "${version}/${variant}/Dockerfile" "${variant}" &
fi
done
done
Expand Down