Skip to content

Commit d3c5f47

Browse files
committed
Add explicit "jessie" and "alpine3.4" aliases
1 parent c9954b0 commit d3c5f47

26 files changed

+134
-109
lines changed

.travis.yml

+32-23
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,51 @@ language: bash
22
services: docker
33

44
env:
5-
- VERSION=3.6 VARIANT=
6-
- VERSION=3.6 VARIANT=slim
7-
- VERSION=3.6 VARIANT=alpine
8-
- VERSION=3.6 VARIANT=alpine3.6
95
- VERSION=3.6 VARIANT=stretch
10-
- VERSION=3.5 VARIANT=
11-
- VERSION=3.5 VARIANT=slim
12-
- VERSION=3.5 VARIANT=alpine
13-
- VERSION=3.4 VARIANT=
14-
- VERSION=3.4 VARIANT=slim
15-
- VERSION=3.4 VARIANT=alpine
6+
- VERSION=3.6 VARIANT=jessie
7+
- VERSION=3.6 VARIANT=jessie/slim
8+
- VERSION=3.6 VARIANT=alpine3.6
9+
- VERSION=3.6 VARIANT=alpine3.4
10+
- VERSION=3.5 VARIANT=jessie
11+
- VERSION=3.5 VARIANT=jessie/slim
12+
- VERSION=3.5 VARIANT=alpine3.4
13+
- VERSION=3.4 VARIANT=jessie
14+
- VERSION=3.4 VARIANT=jessie/slim
1615
- VERSION=3.4 VARIANT=wheezy
17-
- VERSION=3.3 VARIANT=
18-
- VERSION=3.3 VARIANT=slim
19-
- VERSION=3.3 VARIANT=alpine
16+
- VERSION=3.4 VARIANT=alpine3.4
17+
- VERSION=3.3 VARIANT=jessie
18+
- VERSION=3.3 VARIANT=jessie/slim
2019
- VERSION=3.3 VARIANT=wheezy
21-
- VERSION=2.7 VARIANT=
22-
- VERSION=2.7 VARIANT=slim
23-
- VERSION=2.7 VARIANT=alpine
24-
- VERSION=2.7 VARIANT=alpine3.6
20+
- VERSION=3.3 VARIANT=alpine3.4
2521
- VERSION=2.7 VARIANT=stretch
22+
- VERSION=2.7 VARIANT=jessie
23+
- VERSION=2.7 VARIANT=jessie/slim
2624
- VERSION=2.7 VARIANT=wheezy
25+
- VERSION=2.7 VARIANT=alpine3.6
26+
- VERSION=2.7 VARIANT=alpine3.4
2727

2828
install:
2929
- git clone https://github.com/docker-library/official-images.git ~/official-images
3030

3131
before_script:
3232
- env | sort
33-
- cd "$VERSION"
34-
- image="$(awk '$1 == "FROM" { print $2; exit }' onbuild/Dockerfile)${VARIANT:+-$VARIANT}"
33+
- cd "$VERSION/$VARIANT"
34+
- slash='/'; image="python:${VERSION}-${VARIANT//$slash/-}"
3535

3636
script:
37-
- travis_retry docker build -t "$image" "${VARIANT:-.}"
38-
- ~/official-images/test/run.sh "$image"
39-
# the "onbuild" variant has to happen with the base variant because it's FROM it
40-
- true && [ "$VARIANT" ] || travis_retry docker build -t "${image}-onbuild" onbuild
37+
- |
38+
(
39+
set -Eeuo pipefail
40+
set -x
41+
travis_retry docker build -t "$image" .
42+
~/official-images/test/run.sh "$image"
43+
if [ -d onbuild ]; then
44+
onbuildFrom="$(awk 'toupper($1) == "FROM" { print $2; exit }' onbuild/Dockerfile)"
45+
docker tag "$image" "$onbuildFrom"
46+
docker build -t "$image-onbuild" onbuild
47+
~/official-images/test/run.sh "$image-onbuild"
48+
fi
49+
)
4150
4251
after_script:
4352
- docker images
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Dockerfile-alpine.template

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM alpine:3.4
1+
FROM alpine:%%PLACEHOLDER%%
22

33
# ensure local python is preferred over distribution python
44
ENV PATH /usr/local/bin:$PATH
@@ -17,7 +17,7 @@ ENV PYTHON_VERSION %%PLACEHOLDER%%
1717
RUN set -ex \
1818
&& apk add --no-cache --virtual .fetch-deps \
1919
gnupg \
20-
openssl \
20+
libressl \
2121
tar \
2222
xz \
2323
\
@@ -43,8 +43,8 @@ RUN set -ex \
4343
linux-headers \
4444
make \
4545
ncurses-dev \
46-
openssl \
47-
openssl-dev \
46+
libressl \
47+
libressl-dev \
4848
pax-utils \
4949
readline-dev \
5050
sqlite-dev \
@@ -98,7 +98,7 @@ ENV PYTHON_PIP_VERSION %%PLACEHOLDER%%
9898

9999
RUN set -ex; \
100100
\
101-
apk add --no-cache --virtual .fetch-deps openssl; \
101+
apk add --no-cache --virtual .fetch-deps libressl; \
102102
\
103103
wget -O get-pip.py 'https://bootstrap.pypa.io/get-pip.py'; \
104104
\

Dockerfile-debian.template

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM buildpack-deps:jessie
1+
FROM buildpack-deps:%%PLACEHOLDER%%
22

33
# ensure local python is preferred over distribution python
44
ENV PATH /usr/local/bin:$PATH

Dockerfile-slim.template

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM debian:jessie
1+
FROM debian:%%PLACEHOLDER%%
22

33
# ensure local python is preferred over distribution python
44
ENV PATH /usr/local/bin:$PATH

generate-stackbrew-library.sh

+50-26
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,38 @@
1-
#!/bin/bash
2-
set -eu
1+
#!/usr/bin/env bash
2+
set -Eeuo pipefail
33

44
declare -A aliases=(
55
[3.6-rc]='rc'
66
[3.6]='3 latest'
77
[2.7]='2'
88
)
99

10+
defaultDebianSuite='stretch'
11+
declare -A debianSuites=(
12+
[2.7]='jessie'
13+
[3.3]='jessie'
14+
[3.4]='jessie'
15+
[3.5]='jessie'
16+
[3.6]='jessie'
17+
)
18+
defaultAlpineVersion='3.4'
19+
declare -A alpineVersions=(
20+
[2.7]='3.4'
21+
[3.3]='3.4'
22+
[3.4]='3.4'
23+
[3.5]='3.4'
24+
[3.6]='3.4'
25+
)
26+
1027
self="$(basename "$BASH_SOURCE")"
1128
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
1229

1330
versions=( */ )
1431
versions=( "${versions[@]%/}" )
1532

33+
# sort version numbers with highest first
34+
IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS
35+
1636
# get the most recent commit which modified any of "$@"
1737
fileCommit() {
1838
git log -1 --format='format:%H' HEAD -- "$@"
@@ -39,7 +59,7 @@ getArches() {
3959
local repo="$1"; shift
4060
local officialImagesUrl='https://github.com/docker-library/official-images/raw/master/library/'
4161

42-
eval "declare -A -g parentRepoToArches=( $(
62+
eval "declare -g -A parentRepoToArches=( $(
4363
find -name 'Dockerfile' -exec awk '
4464
toupper($1) == "FROM" && $2 !~ /^('"$repo"'|scratch|microsoft\/[^:]+)(:|$)/ {
4565
print "'"$officialImagesUrl"'" $2
@@ -67,30 +87,14 @@ join() {
6787
}
6888

6989
for version in "${versions[@]}"; do
70-
commit="$(dirCommit "$version")"
71-
72-
parent="$(awk 'toupper($1) == "FROM" { print $2 }' "$version/Dockerfile")"
73-
arches="${parentRepoToArches[$parent]}"
74-
75-
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '$1 == "ENV" && $2 == "PYTHON_VERSION" { print $3; exit }')"
76-
77-
versionAliases=(
78-
$fullVersion
79-
$version
80-
${aliases[$version]:-}
81-
)
82-
83-
echo
84-
cat <<-EOE
85-
Tags: $(join ', ' "${versionAliases[@]}")
86-
Architectures: $(join ', ' $arches)
87-
GitCommit: $commit
88-
Directory: $version
89-
EOE
90+
debianSuite="${debianSuites[$version]:-$defaultDebianSuite}"
91+
alpineVersion="${alpineVersions[$version]:-$defaultAlpineVersion}"
9092

9193
for v in \
92-
slim alpine alpine3.6 wheezy onbuild \
94+
{stretch,jessie,wheezy}{,/slim,/onbuild} \
95+
alpine{3.6,3.4} \
9396
windows/windowsservercore windows/nanoserver \
97+
onbuild \
9498
; do
9599
dir="$version/$v"
96100
variant="$(basename "$v")"
@@ -99,14 +103,34 @@ for version in "${versions[@]}"; do
99103

100104
commit="$(dirCommit "$dir")"
101105

106+
versionDockerfile="$dir/Dockerfile"
107+
if [ "$variant" = 'onbuild' ]; then
108+
versionDockerfile="$(dirname "$dir")/Dockerfile"
109+
fi
110+
fullVersion="$(git show "$commit":"$versionDockerfile" | awk '$1 == "ENV" && $2 == "PYTHON_VERSION" { print $3; exit }')"
111+
112+
versionAliases=(
113+
$fullVersion
114+
$version
115+
${aliases[$version]:-}
116+
)
117+
102118
variantAliases=( "${versionAliases[@]/%/-$variant}" )
119+
if [ "$variant" = "$debianSuite" ]; then
120+
variantAliases+=( "${versionAliases[@]}" )
121+
elif [ "$variant" = "alpine${alpineVersion}" ]; then
122+
variantAliases+=( "${versionAliases[@]/%/-alpine}" )
123+
fi
103124
variantAliases=( "${variantAliases[@]//latest-/}" )
104125

105126
case "$v" in
106127
windows/*) variantArches='windows-amd64' ;;
107-
onbuild) variantArches="$arches" ;;
128+
*/onbuild)
129+
variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$(dirname "$dir")/Dockerfile")"
130+
variantArches="${parentRepoToArches[$variantParent]}"
131+
;;
108132
*)
109-
variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$version/$v/Dockerfile")"
133+
variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")"
110134
variantArches="${parentRepoToArches[$variantParent]}"
111135
;;
112136
esac

update.sh

+45-53
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
set -Eeuo pipefail
33
shopt -s nullglob
44

@@ -80,64 +80,56 @@ for version in "${versions[@]}"; do
8080
echo
8181
} >&2
8282
exit 1
83-
else
84-
if [[ "$version" != 2.* ]]; then
85-
for variant in \
86-
debian \
87-
alpine \
88-
slim \
89-
onbuild \
90-
windows/windowsservercore \
91-
; do
92-
if [ "$variant" = 'debian' ]; then
93-
dir="$version"
94-
else
95-
dir="$version/$variant"
96-
variant="$(basename "$variant")"
97-
fi
98-
[ -d "$dir" ] || continue
99-
template="Dockerfile-$variant.template"
100-
{ generated_warning; cat "$template"; } > "$dir/Dockerfile"
101-
done
102-
fi
103-
(
104-
set -x
105-
sed -ri \
106-
-e 's/^(ENV GPG_KEY) .*/\1 '"${gpgKeys[$rcVersion]}"'/' \
107-
-e 's/^(ENV PYTHON_VERSION) .*/\1 '"$fullVersion"'/' \
108-
-e 's/^(ENV PYTHON_RELEASE) .*/\1 '"${fullVersion%%[a-z]*}"'/' \
109-
-e 's/^(ENV PYTHON_PIP_VERSION) .*/\1 '"$pipVersion"'/' \
110-
-e 's/^(FROM python):.*/\1:'"$version"'/' \
111-
"$version"/{,*/,*/*/}Dockerfile
112-
)
11383
fi
114-
for variant in wheezy stretch alpine3.6 alpine slim ''; do
115-
[ -d "$version/$variant" ] || continue
11684

117-
case "$variant" in
118-
alpine3.6)
119-
sed -r \
120-
-e 's!(alpine):3.4!\1:3.6!g' \
121-
-e 's!openssl!libressl!g' \
122-
"$version/alpine/Dockerfile" > "$version/$variant/Dockerfile"
123-
;;
85+
echo "$version: $fullVersion"
12486

125-
wheezy|stretch)
126-
sed -r \
127-
-e "s!(buildpack-deps|debian):jessie!\1:${variant}!g" \
128-
"$version/Dockerfile" > "$version/$variant/Dockerfile"
129-
if [ "$variant" = 'wheezy' ]; then
130-
sed -ri -e 's/dpkg-architecture --query /dpkg-architecture -q/g' "$version/$variant/Dockerfile"
131-
fi
132-
;;
87+
for v in \
88+
alpine{3.4,3.6} \
89+
{wheezy,jessie,stretch}{/slim,/onbuild,} \
90+
windows/{windowsservercore,nanoserver} \
91+
; do
92+
dir="$version/$v"
93+
variant="$(basename "$v")"
94+
95+
[ -d "$dir" ] || continue
96+
97+
case "$variant" in
98+
slim|onbuild|windowsservercore) template="$variant"; tag="$(basename "$(dirname "$dir")")" ;;
99+
alpine*) template='alpine'; tag="${variant#alpine}" ;;
100+
*) template='debian'; tag="$variant" ;;
133101
esac
102+
template="Dockerfile-${template}.template"
134103

135-
travisEnv='\n - VERSION='"$version VARIANT=$variant$travisEnv"
136-
done
137-
for winVariant in windowsservercore nanoserver; do
138-
if [ -d "$version/windows/$winVariant" ]; then
139-
appveyorEnv='\n - version: '"$version"'\n variant: '"$winVariant$appveyorEnv"
104+
if [[ "$version" == 2.* ]]; then
105+
echo " TODO: vimdiff ${versions[-1]}/$v/Dockerfile $version/$v/Dockerfile"
106+
else
107+
{ generated_warning; cat "$template"; } > "$dir/Dockerfile"
140108
fi
109+
110+
sed -ri \
111+
-e 's/^(ENV GPG_KEY) .*/\1 '"${gpgKeys[$rcVersion]}"'/' \
112+
-e 's/^(ENV PYTHON_VERSION) .*/\1 '"$fullVersion"'/' \
113+
-e 's/^(ENV PYTHON_RELEASE) .*/\1 '"${fullVersion%%[a-z]*}"'/' \
114+
-e 's/^(ENV PYTHON_PIP_VERSION) .*/\1 '"$pipVersion"'/' \
115+
-e 's/^(FROM python):.*/\1:'"$version"'/' \
116+
-e 's/^(FROM (debian|buildpack-deps|alpine)):.*/\1:'"$tag"'/' \
117+
"$dir/Dockerfile"
118+
119+
case "$variant" in
120+
alpine3.4) sed -ri -e 's/libressl/openssl/g' "$dir/Dockerfile" ;;
121+
wheezy) sed -ri -e 's/dpkg-architecture --query /dpkg-architecture -q/g' "$dir/Dockerfile" ;;
122+
esac
123+
124+
case "$v" in
125+
*/onbuild) ;;
126+
windows/*)
127+
appveyorEnv='\n - version: '"$version"'\n variant: '"$variant$appveyorEnv"
128+
;;
129+
*)
130+
travisEnv='\n - VERSION='"$version VARIANT=$v$travisEnv"
131+
;;
132+
esac
141133
done
142134
done
143135

0 commit comments

Comments
 (0)