File tree 21 files changed +106
-67
lines changed
nodejs-javascript-builder
21 files changed +106
-67
lines changed Original file line number Diff line number Diff line change @@ -19,7 +19,17 @@ before_script:
19
19
- git remote set-branches --add origin master
20
20
- git fetch
21
21
# See issue: https://graysonkoonce.com/getting-the-current-branch-name-during-a-pull-request-in-travis-ci/
22
- - export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
22
+ - BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
23
+ - export BRANCH
24
+ # commit hashes as tags is broken, use something reliable
25
+ - export VERSION="${TRAVIS_COMMIT}"
26
+ # always build everything locally
27
+ - export PULL_FLAG=""
28
+ # it's okay to use the cache
29
+ - export CACHE_FLAG=""
30
+ # always bind all images, so that all images get synchronzide versions
31
+ - IMAGES="$(find * -maxdepth 0 -type d)"
32
+ - export IMAGES
23
33
24
34
script :
25
35
# stop immediately if there's a failure
Original file line number Diff line number Diff line change 23
23
24
24
# TODO Add make traps for docker-compose
25
25
26
+ .PHONY : build
26
27
build : # # Builds all changed images. `-e IMAGES="name"` builds single image.
27
28
@docker-compose -f docker-compose.ops.yml build \
28
29
${CACHE_FLAG} \
@@ -52,6 +53,7 @@ test: ## Tests all changed images where tests exist. `-e IMAGES="name"` runs tes
52
53
test-images || make clean
53
54
@make clean
54
55
56
+ .PHONY : push
55
57
push : # # Pushes all changed images. `-e IMAGES="name"` pushes a single image.
56
58
@docker-compose -f docker-compose.ops.yml build \
57
59
${CACHE_FLAG} \
Original file line number Diff line number Diff line change
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+
1
4
FROM koalaman/shellcheck-alpine:v0.6.0 as test
2
5
COPY *.sh ./
3
6
RUN find . -name "*.sh" | xargs shellcheck
4
7
5
- FROM avenga/ docker AS release
8
+ FROM ${IMAGE_PREFIX} docker:${VERSION} AS release
6
9
#
7
10
# DEFAULTS
8
11
#
9
12
ENV IMAGE_PREFIX=""
10
13
ENV IMAGES=""
11
- ENV IMAGE_TAG="latest"
12
14
ENV TARGET="release"
13
15
ENV LABEL_VENDOR=""
14
16
ENV LABEL_VCS_URL=""
Original file line number Diff line number Diff line change 1
- #! /bin/bash -eu
1
+ #! /usr/bin/env bash
2
+ set -eu
2
3
3
4
IMAGES=" ${IMAGES:- } "
4
5
DRY_RUN=" ${DRY_RUN:- } "
32
33
then
33
34
DOCKERFILE=" $WORKDIR /$IMAGE_NAME /Dockerfile"
34
35
CONTEXT=" $WORKDIR /$IMAGE_NAME "
35
- TAG=$IMAGE_PREFIX$IMAGE_NAME :$IMAGE_TAG
36
- COMMIT_TAG=$IMAGE_PREFIX$IMAGE_NAME :$VERSION
37
36
DOCKERFILE_FLAG=" "
38
- if [ -e " $DOCKERFILE " ]
39
- then
37
+ if [ -e " $DOCKERFILE " ]; then
40
38
DOCKERFILE_FLAG=" --file $DOCKERFILE "
41
39
fi
42
40
CACHE_FLAG=" --no-cache"
43
- if [[ -n " $CACHE " ]]
44
- then
41
+ if [[ -n " $CACHE " ]]; then
45
42
CACHE_FLAG=" "
46
43
fi
47
44
PULL_FLAG=" --pull"
48
- if [[ -n " $NO_PULL " ]]
49
- then
45
+ if [[ -n " $NO_PULL " ]]; then
50
46
PULL_FLAG=" "
51
47
fi
52
48
53
49
COMMAND=" docker build $PULL_FLAG $CACHE_FLAG \\
54
50
--build-arg IMAGE_PREFIX=$IMAGE_PREFIX \\
55
- --tag $TAG \\
56
- --tag $COMMIT_TAG \\
51
+ --tag $IMAGE_PREFIX$IMAGE_NAME :latest \\
52
+ --tag $IMAGE_PREFIX$IMAGE_NAME : $VERSION \\
57
53
--target $TARGET \\
58
54
--label org.opencontainers.image.created=\" $BUILD_DATE \" \\
59
55
--label org.opencontainers.image.revision=\" $VERSION \" \\
Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ services:
37
37
- CI_REGISTRY_USER
38
38
- CI_REGISTRY
39
39
- IMAGES
40
+ - VERSION
40
41
volumes :
41
42
- .:/work
42
43
- /var/run/docker.sock:/var/run/docker.sock
Original file line number Diff line number Diff line change
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+
1
4
FROM koalaman/shellcheck-alpine:v0.6.0 as test
2
5
COPY *.sh ./
3
6
RUN find . -name "*.sh" | xargs shellcheck
4
7
5
- FROM avenga/ docker AS release
8
+ FROM ${IMAGE_PREFIX} docker:${VERSION} AS release
6
9
#
7
10
# DEFAULTS
8
11
#
Original file line number Diff line number Diff line change 1
- #! /bin/bash -eu
1
+ #! /usr/bin/env bash
2
+ set -eu
2
3
3
4
IMAGES=" ${IMAGES:- } "
4
5
DRY_RUN=" ${DRY_RUN:- } "
@@ -12,26 +13,33 @@ if [[ -z $IMAGES ]] ; then
12
13
)
13
14
fi
14
15
15
- if [[ -z $IMAGES ]]
16
- then
16
+ if [[ -z $IMAGES ]]; then
17
17
echo " Nothing to push."
18
18
exit 0
19
19
fi
20
20
21
- if [[ -n " $DRY_RUN " ]]; then
22
- echo " $IMAGES "
21
+ # only push images if specific branch and not dry run
22
+ if [[ -n " $DRY_RUN " ]] || [[ " $CURRENT_BRANCH " != " $ONLY_BRANCH " ]]; then
23
+ [[ " $CURRENT_BRANCH " != " $ONLY_BRANCH " ]] && echo " Skipping push since CURRENT_BRANCH $CURRENT_BRANCH is not equal to ONLY_BRANCH $ONLY_BRANCH "
24
+ # for all images
25
+ for image in $IMAGES ; do
26
+ # for all tags that are equal to latest
27
+ for tagged_image in $( docker image inspect --format $' {{range .RepoTags}}{{.}} {{end}}' " $IMAGE_PREFIX$image :latest" ) ; do
28
+ # print it
29
+ echo " $tagged_image "
30
+ done
31
+ done
23
32
exit 0
24
- else
25
- # only push images if specific branch
26
- if [[ " $CURRENT_BRANCH " == " $ONLY_BRANCH " ]]
27
- then
28
- echo " $CI_REGISTRY_PASSWORD " | docker login -u " $CI_REGISTRY_USER " " $CI_REGISTRY " --password-stdin
29
- while IFS= read -r IMAGE_NAME
30
- do
31
- # push all tags:
32
- docker push " $IMAGE_PREFIX$IMAGE_NAME "
33
- done < <( echo " $IMAGES " | tr " " " \n" )
34
- else
35
- echo " Skipping since not on ONLY_BRANCH $ONLY_BRANCH "
36
- fi
37
33
fi
34
+
35
+
36
+ echo " $CI_REGISTRY_PASSWORD " | docker login -u " $CI_REGISTRY_USER " " $CI_REGISTRY " --password-stdin
37
+
38
+ # for all images
39
+ for image in $IMAGES ; do
40
+ # for all tags that are equal to latest
41
+ for tagged_image in $( docker image inspect --format $' {{range .RepoTags}}{{.}} {{end}}' " $IMAGE_PREFIX$image " ) ; do
42
+ # push it
43
+ docker push " $tagged_image "
44
+ done
45
+ done
Original file line number Diff line number Diff line change 1
1
#! /usr/bin/env bats
2
2
3
3
@test " dry run" {
4
- run docker run --rm -e IMAGES=gitlab-job -e DRY_RUN=1 " avenga/docker-push:$VERSION "
4
+ run docker run --rm -v /var/run/docker.sock:/var/run/docker.sock - e IMAGES=" $IMAGE_PREFIX / gitlab-job" -e DRY_RUN=1 " avenga/docker-push:$VERSION "
5
5
echo " $output "
6
6
[[ $status -eq 0 ]]
7
- [[ $output == " gitlab-job" ]]
7
+ [[ $output =~ " gitlab-job:latest" ]]
8
+ [[ $output =~ " gitlab-job:${VERSION} " ]]
8
9
}
9
10
@test " make dry run" {
10
11
cd ..
11
12
run make push -e IMAGES=gitlab-job -e CURRENT_BRANCH=push-test " avenga/docker-push:$VERSION "
12
13
echo " $output "
13
14
[[ $status -eq 2 ]]
14
- [[ $output =~ " Skipping since not on ONLY_BRANCH master " ]]
15
+ [[ $output =~ " Skipping push " ]]
15
16
}
Original file line number Diff line number Diff line change 1
- FROM avenga/docker AS release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}docker:${VERSION} AS release
2
4
3
5
# Install bats-core and other requirements
4
6
COPY --from=bats/bats:latest /opt/bats /opt/bats
Original file line number Diff line number Diff line change 1
- #! /bin/bash
2
-
1
+ #! /usr/bin/env bash
3
2
set -euo pipefail
4
3
5
4
CHANGES=$( git diff --name-only " $GIT_DIFF " | \
@@ -15,17 +14,19 @@ if [[ -z $IMAGES ]] ; then
15
14
exit 0
16
15
fi
17
16
18
- while IFS= read -r IMAGE_NAME
19
- do
20
- ( cd " $IMAGE_NAME "
21
- if [[ -d ./tests ]] ; then
22
- echo " Running test for $IMAGE_NAME "
23
- if [[ -f tests/test.sh ]] ; then
24
- ./tests/test.sh
25
- else
26
- bats --tap ./tests
27
- fi
17
+ # for all images
18
+ for image in $IMAGES ; do
19
+ if [[ ! -d " $image /tests" ]] ; then
20
+ echo " No tests found for $image "
21
+ continue
22
+ fi
23
+
24
+ echo " Running test for $image "
25
+ pushd " $image "
26
+ if [[ -f tests/test.sh ]] ; then
27
+ ./tests/test.sh
28
28
else
29
- echo " No tests found for $IMAGE_NAME "
30
- fi )
31
- done < <( echo " $IMAGES " | tr " " " \n" )
29
+ bats --tap ./tests
30
+ fi
31
+ popd
32
+ done
Original file line number Diff line number Diff line change 1
- FROM avenga/docker AS release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}docker:${VERSION} AS release
2
4
RUN apk --quiet --no-progress --no-cache add make coreutils curl jq docker-compose \
3
5
&& sed -i 's|ash$|bash|g' /etc/passwd
4
6
RUN docker-compose --version
Original file line number Diff line number Diff line change 1
1
ARG GITLAB_RUNNER_IMAGE_TAG=alpine
2
2
FROM gitlab/gitlab-runner:${GITLAB_RUNNER_IMAGE_TAG} AS release
3
+ ARG IMAGE_PREFIX="avenga/"
4
+ ARG VERSION="latest"
3
5
4
6
# Defaults:
5
7
ENV RUNNER_LIMIT="1"
6
8
ENV RUNNER_REQUEST_CONCURRENCY="1"
7
9
ENV RUNNER_EXECUTOR="docker"
8
- ENV DOCKER_IMAGE="avenga /gitlab-job:latest "
10
+ ENV DOCKER_IMAGE="${IMAGE_PREFIX} /gitlab-job:${VERSION} "
9
11
10
12
COPY register-runner.sh /
11
13
ENTRYPOINT ["/usr/bin/dumb-init" , "/register-runner.sh" ]
Original file line number Diff line number Diff line change 4
4
run docker run --rm --entrypoint gitlab-runner " avenga/gitlab-runner:$VERSION " --version
5
5
echo " $output "
6
6
[[ $status -eq 0 ]]
7
- [[ $output =~ Version:.* 13.1.1 ]]
7
+ [[ $output =~ Version:.* 13.5.0 ]]
8
8
}
Original file line number Diff line number Diff line change 1
- # test the version
1
+ #! /usr/bin/env bats
2
+
2
3
@test " test kubectl version" {
3
4
run bash -c " docker run --rm -e CONFIGURE_KUBECTL=false avenga/kubectl version --client -o json | jq -r '.clientVersion.gitVersion'"
4
5
echo " $output "
5
- [[ $output =~ " v1.18 " ]]
6
+ [[ $output =~ " v1.19 " ]]
6
7
[[ $status -eq 0 ]]
7
8
}
Original file line number Diff line number Diff line change 1
- ARG IMAGE_PREFIX="avenga/"
2
- FROM ${IMAGE_PREFIX}nodejs-runner:latest AS release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}nodejs-runner:${VERSION} AS release
3
4
ONBUILD COPY --from=build /app/package.json ./
4
5
ONBUILD COPY --from=build /app/src ./src
5
6
ONBUILD COPY --from=build /prod_node_modules ./node_modules
Original file line number Diff line number Diff line change 1
1
ARG IMAGE_PREFIX="avenga/"
2
- FROM ${IMAGE_PREFIX}nodejs-runner:latest AS release
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}nodejs-runner:${VERSION} AS release
3
4
ENV YARN_VERSION="1.15.0"
4
5
RUN wget -O /yarn.js https://github.com/yarnpkg/yarn/releases/download/v${YARN_VERSION}/yarn-${YARN_VERSION}.js
5
6
COPY yarn /usr/bin
Original file line number Diff line number Diff line change 1
- ARG IMAGE_PREFIX="avenga/"
2
- FROM ${IMAGE_PREFIX}nodejs-javascript-builder:latest AS build
3
- FROM ${IMAGE_PREFIX}nodejs-javascript-app:latest AS release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}nodejs-javascript-builder:${VERSION} AS build
4
+ FROM ${IMAGE_PREFIX}nodejs-javascript-app:${VERSION} AS release
Original file line number Diff line number Diff line change 1
- FROM avenga/sloppy:1.13.1 as release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ FROM ${IMAGE_PREFIX}sloppy:1.13.1 as release
2
3
ARG SLOPPY_TEMPLATE_FILE="sloppy.tmpl.yml"
3
4
ENV SLOPPY_TEMPLATE_FILE=${SLOPPY_TEMPLATE_FILE}
4
5
ENV SLOPPY_APITOKEN=""
Original file line number Diff line number Diff line change 1
- FROM avenga/sloppy as release
1
+ ARG IMAGE_PREFIX="avenga/"
2
+ ARG VERSION="latest"
3
+ FROM ${IMAGE_PREFIX}sloppy:${VERSION} AS release
2
4
ENV SLOPPY_APITOKEN=""
3
5
# If templating is used, files from this environment are used.
4
6
ENV TEMPLATE_ENVIRONMENT=""
Original file line number Diff line number Diff line change 1
- #! /bin/bash -eu
1
+ #! /usr/bin/env bash
2
+ set -eu
2
3
3
4
ENVIRONMENTS=$( vault list -format=json " $VAULT_SECRETS_PATH /$PROJECT /environments" | jq -r ' join(",")' )
4
5
Original file line number Diff line number Diff line change 1
- #! /bin/bash -eu
1
+ #! /usr/bin/env bash
2
+ set -eu
2
3
3
4
ENVIRONMENTS_PATH=/environments
4
5
ENVIRONMENTS=$( find $ENVIRONMENTS_PATH /* -type d -maxdepth 1 -print0 | xargs -0 -n 1 basename)
You can’t perform that action at this time.
0 commit comments