Skip to content

Commit 9205184

Browse files
Merge pull request #669 from LaurentGoderre/update-travis
Added a build stage for each variant of each version
2 parents fb0a488 + e839bbb commit 9205184

File tree

6 files changed

+214
-32
lines changed

6 files changed

+214
-32
lines changed

.travis.yml

Lines changed: 122 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1+
#### DO NOT MODIFY. THIS FILE IS AUTOGENERATED ####
2+
13
dist: trusty
24
sudo: required
35

46
language: generic
57

6-
script: ./test-build.sh $NODE_VERSION
8+
services:
9+
- docker
10+
addons:
11+
apt:
12+
packages:
13+
- docker-ce
14+
15+
script: ./test-build.sh $NODE_VERSION $VARIANT
716

817
jobs:
918
include:
@@ -28,28 +37,129 @@ jobs:
2837
packages:
2938
- shellcheck
3039

40+
# Docker Build #
41+
- stage: Build
42+
env:
43+
- NODE_VERSION: "4"
44+
- VARIANT: "default"
45+
46+
- stage: Build
47+
env:
48+
- NODE_VERSION: "4"
49+
- VARIANT: "alpine"
50+
51+
- stage: Build
52+
env:
53+
- NODE_VERSION: "4"
54+
- VARIANT: "onbuild"
55+
56+
- stage: Build
57+
env:
58+
- NODE_VERSION: "4"
59+
- VARIANT: "slim"
60+
61+
- stage: Build
62+
env:
63+
- NODE_VERSION: "4"
64+
- VARIANT: "stretch"
65+
66+
- stage: Build
67+
env:
68+
- NODE_VERSION: "4"
69+
- VARIANT: "wheezy"
70+
71+
- stage: Build
72+
env:
73+
- NODE_VERSION: "6"
74+
- VARIANT: "default"
75+
76+
- stage: Build
77+
env:
78+
- NODE_VERSION: "6"
79+
- VARIANT: "alpine"
80+
81+
- stage: Build
82+
env:
83+
- NODE_VERSION: "6"
84+
- VARIANT: "onbuild"
85+
86+
- stage: Build
87+
env:
88+
- NODE_VERSION: "6"
89+
- VARIANT: "slim"
90+
91+
- stage: Build
92+
env:
93+
- NODE_VERSION: "6"
94+
- VARIANT: "stretch"
95+
96+
- stage: Build
97+
env:
98+
- NODE_VERSION: "6"
99+
- VARIANT: "wheezy"
100+
101+
- stage: Build
102+
env:
103+
- NODE_VERSION: "8"
104+
- VARIANT: "default"
105+
106+
- stage: Build
107+
env:
108+
- NODE_VERSION: "8"
109+
- VARIANT: "alpine"
110+
111+
- stage: Build
112+
env:
113+
- NODE_VERSION: "8"
114+
- VARIANT: "onbuild"
115+
31116
- stage: Build
32-
services:
33-
- docker
34-
addons:
35-
apt:
36-
packages:
37-
- docker-ce
38117
env:
39-
- NODE_VERSION: '4'
118+
- NODE_VERSION: "8"
119+
- VARIANT: "slim"
40120

41121
- stage: Build
42122
env:
43-
- NODE_VERSION: '6'
123+
- NODE_VERSION: "8"
124+
- VARIANT: "stretch"
44125

45126
- stage: Build
46127
env:
47-
- NODE_VERSION: '8'
128+
- NODE_VERSION: "8"
129+
- VARIANT: "wheezy"
48130

49131
- stage: Build
50132
env:
51-
- NODE_VERSION: '9'
133+
- NODE_VERSION: "9"
134+
- VARIANT: "default"
52135

53136
- stage: Build
54137
env:
55-
- NODE_VERSION: 'chakracore/8'
138+
- NODE_VERSION: "9"
139+
- VARIANT: "alpine"
140+
141+
- stage: Build
142+
env:
143+
- NODE_VERSION: "9"
144+
- VARIANT: "onbuild"
145+
146+
- stage: Build
147+
env:
148+
- NODE_VERSION: "9"
149+
- VARIANT: "slim"
150+
151+
- stage: Build
152+
env:
153+
- NODE_VERSION: "9"
154+
- VARIANT: "stretch"
155+
156+
- stage: Build
157+
env:
158+
- NODE_VERSION: "9"
159+
- VARIANT: "wheezy"
160+
161+
- stage: Build
162+
env:
163+
- NODE_VERSION: "chakracore/8"
164+
- VARIANT: "default"
165+

functions.sh

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,29 @@ function get_variants() {
5656
shift
5757

5858
local arch
59-
arch=$(get_arch)
59+
local availablevariants
60+
local variantsfilter
6061
local variants
61-
variants=$(grep "^$arch" "$dir/architectures" | sed -E 's/'"$arch"'[[:space:]]*//' | sed -E 's/,/ /g')
62-
echo "$variants"
62+
63+
arch=$(get_arch)
64+
variantsfilter=( "$@" )
65+
IFS=' ' read -ra availablevariants <<< "$(grep "^$arch" "$dir/architectures" | sed -E 's/'"$arch"'[[:space:]]*//' | sed -E 's/,/ /g')"
66+
67+
if [ ${#variantsfilter[@]} -gt 0 ]; then
68+
for variant1 in "${availablevariants[@]}"; do
69+
for variant2 in "${variantsfilter[@]}"; do
70+
if [[ "$variant1" = "$variant2" ]]; then
71+
variants+=("$variant1")
72+
fi
73+
done
74+
done
75+
76+
if [ ${#variants[@]} -gt 0 ]; then
77+
echo "${variants[@]}"
78+
fi
79+
else
80+
echo "${availablevariants[@]}"
81+
fi
6382
}
6483

6584
# Get supported architectures for a specific version and variant
@@ -201,7 +220,7 @@ function sort_versions () {
201220
local sorted
202221
local lines
203222
local line
204-
223+
205224
IFS=$'\n'
206225
lines="${versions[*]}"
207226
unset IFS

generate-stackbrew-library.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ for version in "${versions[@]}"; do
7070

7171
# Get supported variants according to the target architecture.
7272
# See details in function.sh
73-
variants=$(get_variants "$(dirname "$version")")
74-
for variant in $variants; do
73+
IFS=' ' read -ra variants <<< "$(get_variants "$(dirname "$version")")"
74+
for variant in "${variants[@]}"; do
7575
# Skip non-docker directories
7676
[ -f "$version/$variant/Dockerfile" ] || continue
7777

test-build.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ function build () {
3737

3838
cd "$(cd "${0%/*}" && pwd -P)" || exit;
3939

40-
IFS=' ' read -ra versions <<< "$(get_versions . "$@")"
40+
IFS=' ' read -ra versions <<< "$(IFS=','; get_versions . "$1")"
4141
if [ ${#versions[@]} -eq 0 ]; then
4242
fatal "No valid versions found!"
4343
fi
@@ -53,9 +53,9 @@ for version in "${versions[@]}"; do
5353

5454
# Get supported variants according to the target architecture.
5555
# See details in function.sh
56-
variants=$(get_variants "$(dirname "$version")")
56+
IFS=' ' read -ra variants <<< "$(IFS=','; get_variants "$(dirname "$version")" "$2")"
5757

58-
for variant in $variants; do
58+
for variant in "${variants[@]}"; do
5959
# Skip non-docker directories
6060
[ -f "$version/$variant/Dockerfile" ] || continue
6161

travis.yml.template

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
dist: trusty
2+
sudo: required
3+
4+
language: generic
5+
6+
services:
7+
- docker
8+
addons:
9+
apt:
10+
packages:
11+
- docker-ce
12+
13+
script: ./test-build.sh $NODE_VERSION $VARIANT
14+
15+
jobs:
16+
include:
17+
- stage: Test
18+
env:
19+
- TEST: Doc Toc Check
20+
language: node_js
21+
install: npm i -g doctoc
22+
script:
23+
- cp README.md README.md.tmp &&
24+
doctoc --title='## Table of Contents' --github README.md &&
25+
diff -q README.md README.md.tmp
26+
27+
- stage: Test
28+
env:
29+
- TEST: Shell Check
30+
script: shellcheck *.sh
31+
addons:
32+
apt:
33+
sources:
34+
- debian-sid
35+
packages:
36+
- shellcheck
37+
38+
# Docker Build #

update.sh

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,32 +52,47 @@ function update_node_version {
5252
)
5353
}
5454

55+
function add_stage {
56+
local baseuri=$1
57+
shift
58+
local version=$1
59+
shift
60+
local variant=$1
61+
shift
62+
63+
echo ' - stage: Build
64+
env:
65+
- NODE_VERSION: "'"$version"'"
66+
- VARIANT: "'"$variant"'"
67+
' >> .travis.yml
68+
}
69+
70+
echo '#### DO NOT MODIFY. THIS FILE IS AUTOGENERATED ####
71+
' | cat - travis.yml.template > .travis.yml
72+
5573
for version in "${versions[@]}"; do
56-
{
5774
# Skip "docs" and other non-docker directories
58-
[ -f "$version/Dockerfile" ] || exit
75+
[ -f "$version/Dockerfile" ] || continue
5976

6077
info "Updating version $version..."
6178

6279
parentpath=$(dirname "$version")
6380
versionnum=$(basename "$version")
6481
baseuri=$(get_config "$parentpath" "baseuri")
6582

66-
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile.template" "$version/Dockerfile"
83+
add_stage "$baseuri" "$version" "default"
84+
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile.template" "$version/Dockerfile" &
6785

6886
# Get supported variants according the target architecture
6987
# See details in function.sh
70-
variants=$(get_variants "$parentpath")
88+
IFS=' ' read -ra variants <<< "$(get_variants "$parentpath")"
7189

72-
for variant in $variants; do
73-
{
90+
for variant in "${variants[@]}"; do
7491
# Skip non-docker directories
75-
[ -f "$version/$variant/Dockerfile" ] || exit
76-
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant"
77-
} &
92+
[ -f "$version/$variant/Dockerfile" ] || continue
93+
add_stage "$baseuri" "$version" "$variant"
94+
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant" &
7895
done
79-
wait
80-
} &
8196
done
8297

8398
wait

0 commit comments

Comments
 (0)