Merge pull request #669 from LaurentGoderre/update-travis

Added a build stage for each variant of each version
This commit is contained in:
Laurent Goderre 2018-03-27 09:16:33 -04:00 committed by GitHub
commit 92051845f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 214 additions and 32 deletions

View File

@ -1,9 +1,18 @@
#### DO NOT MODIFY. THIS FILE IS AUTOGENERATED ####
dist: trusty
sudo: required
language: generic
script: ./test-build.sh $NODE_VERSION
services:
- docker
addons:
apt:
packages:
- docker-ce
script: ./test-build.sh $NODE_VERSION $VARIANT
jobs:
include:
@ -28,28 +37,129 @@ jobs:
packages:
- shellcheck
# Docker Build #
- stage: Build
services:
- docker
addons:
apt:
packages:
- docker-ce
env:
- NODE_VERSION: '4'
- NODE_VERSION: "4"
- VARIANT: "default"
- stage: Build
env:
- NODE_VERSION: '6'
- NODE_VERSION: "4"
- VARIANT: "alpine"
- stage: Build
env:
- NODE_VERSION: '8'
- NODE_VERSION: "4"
- VARIANT: "onbuild"
- stage: Build
env:
- NODE_VERSION: '9'
- NODE_VERSION: "4"
- VARIANT: "slim"
- stage: Build
env:
- NODE_VERSION: 'chakracore/8'
- NODE_VERSION: "4"
- VARIANT: "stretch"
- stage: Build
env:
- NODE_VERSION: "4"
- VARIANT: "wheezy"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "default"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "alpine"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "onbuild"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "slim"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "stretch"
- stage: Build
env:
- NODE_VERSION: "6"
- VARIANT: "wheezy"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "default"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "alpine"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "onbuild"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "slim"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "stretch"
- stage: Build
env:
- NODE_VERSION: "8"
- VARIANT: "wheezy"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "default"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "alpine"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "onbuild"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "slim"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "stretch"
- stage: Build
env:
- NODE_VERSION: "9"
- VARIANT: "wheezy"
- stage: Build
env:
- NODE_VERSION: "chakracore/8"
- VARIANT: "default"

View File

@ -56,10 +56,29 @@ function get_variants() {
shift
local arch
arch=$(get_arch)
local availablevariants
local variantsfilter
local variants
variants=$(grep "^$arch" "$dir/architectures" | sed -E 's/'"$arch"'[[:space:]]*//' | sed -E 's/,/ /g')
echo "$variants"
arch=$(get_arch)
variantsfilter=( "$@" )
IFS=' ' read -ra availablevariants <<< "$(grep "^$arch" "$dir/architectures" | sed -E 's/'"$arch"'[[:space:]]*//' | sed -E 's/,/ /g')"
if [ ${#variantsfilter[@]} -gt 0 ]; then
for variant1 in "${availablevariants[@]}"; do
for variant2 in "${variantsfilter[@]}"; do
if [[ "$variant1" = "$variant2" ]]; then
variants+=("$variant1")
fi
done
done
if [ ${#variants[@]} -gt 0 ]; then
echo "${variants[@]}"
fi
else
echo "${availablevariants[@]}"
fi
}
# Get supported architectures for a specific version and variant
@ -201,7 +220,7 @@ function sort_versions () {
local sorted
local lines
local line
IFS=$'\n'
lines="${versions[*]}"
unset IFS

View File

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

View File

@ -37,7 +37,7 @@ function build () {
cd "$(cd "${0%/*}" && pwd -P)" || exit;
IFS=' ' read -ra versions <<< "$(get_versions . "$@")"
IFS=' ' read -ra versions <<< "$(IFS=','; get_versions . "$1")"
if [ ${#versions[@]} -eq 0 ]; then
fatal "No valid versions found!"
fi
@ -53,9 +53,9 @@ for version in "${versions[@]}"; do
# Get supported variants according to the target architecture.
# See details in function.sh
variants=$(get_variants "$(dirname "$version")")
IFS=' ' read -ra variants <<< "$(IFS=','; get_variants "$(dirname "$version")" "$2")"
for variant in $variants; do
for variant in "${variants[@]}"; do
# Skip non-docker directories
[ -f "$version/$variant/Dockerfile" ] || continue

38
travis.yml.template Normal file
View File

@ -0,0 +1,38 @@
dist: trusty
sudo: required
language: generic
services:
- docker
addons:
apt:
packages:
- docker-ce
script: ./test-build.sh $NODE_VERSION $VARIANT
jobs:
include:
- stage: Test
env:
- TEST: Doc Toc Check
language: node_js
install: npm i -g doctoc
script:
- cp README.md README.md.tmp &&
doctoc --title='## Table of Contents' --github README.md &&
diff -q README.md README.md.tmp
- stage: Test
env:
- TEST: Shell Check
script: shellcheck *.sh
addons:
apt:
sources:
- debian-sid
packages:
- shellcheck
# Docker Build #

View File

@ -52,10 +52,27 @@ function update_node_version {
)
}
function add_stage {
local baseuri=$1
shift
local version=$1
shift
local variant=$1
shift
echo ' - stage: Build
env:
- 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" ] || exit
[ -f "$version/Dockerfile" ] || continue
info "Updating version $version..."
@ -63,21 +80,19 @@ for version in "${versions[@]}"; do
versionnum=$(basename "$version")
baseuri=$(get_config "$parentpath" "baseuri")
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile.template" "$version/Dockerfile"
add_stage "$baseuri" "$version" "default"
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile.template" "$version/Dockerfile" &
# Get supported variants according the target architecture
# See details in function.sh
variants=$(get_variants "$parentpath")
IFS=' ' read -ra variants <<< "$(get_variants "$parentpath")"
for variant in $variants; do
{
for variant in "${variants[@]}"; do
# Skip non-docker directories
[ -f "$version/$variant/Dockerfile" ] || exit
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant"
} &
[ -f "$version/$variant/Dockerfile" ] || continue
add_stage "$baseuri" "$version" "$variant"
update_node_version "$baseuri" "$versionnum" "$parentpath/Dockerfile-$variant.template" "$version/$variant/Dockerfile" "$variant" &
done
wait
} &
done
wait