aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2020-08-10 21:40:11 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2020-08-11 20:00:39 +0200
commit0da18ecfd9db456545171197796614cae7d553fc (patch)
tree99170f190aaafe729a52bacbcf8adf0bee3c01e3
parentbe4b7b3e19224b3eb20736c4b6279669866b76e0 (diff)
Compile all Functest K8s containers for arm v7 and v8
It removes sudo when useless and turns debug on when compiling K8s binaries. It avoids TravisCI timeouts (No output has been received)[1] [1] https://travis-ci.org/github/collivier/functest-kubernetes/jobs/716819529 Change-Id: I4719257596bf9a6510e2f772271b336847d1ccb5 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com> (cherry picked from commit 3c4543a8ef6f84a5f25483a6dfe50e0075a9cd0e)
-rw-r--r--.travis.yml98
-rw-r--r--build.sh22
-rw-r--r--docker/healthcheck/Dockerfile4
3 files changed, 105 insertions, 19 deletions
diff --git a/.travis.yml b/.travis.yml
index 9be60133..dec37f31 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,76 +9,140 @@ addons:
- libssl1.0.0
before_script:
+ - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- sudo add-apt-repository -y ppa:deadsnakes/ppa
- sudo apt-get update
- sudo apt-get install python3.6 python3.6-dev
- sudo pip install tox
- - sudo -E docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
+ - docker login -u="${DOCKER_USERNAME}" -p="${DOCKER_PASSWORD}"
- (cd .. && git clone https://github.com/estesp/manifest-tool)
- (cd ../manifest-tool && git checkout v0.9.0)
- - (cd ../manifest-tool && sudo -E make && sudo -E make install)
+ - (cd ../manifest-tool && make && sudo make install)
jobs:
include:
- stage: run unit tests
script: tox -e pep8,pylint,yamllint,ansiblelint,bashate,py27,py36,bandit
- - stage: build functest-kubernetes-core image
+ - stage: build functest-kubernetes-core images
script: sudo -E bash build.sh
env:
- REPO="${DOCKER_USERNAME}"
- amd64_dirs="docker/core"
+ - arm_dirs=""
- arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs="docker/core"
+ - arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs=""
+ - arm64_dirs="docker/core"
- stage: publish functest-kubernetes-core manifests
script: >
- sudo manifest-tool push from-args \
- --platforms linux/amd64 \
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm,linux/arm64 \
--template ${DOCKER_USERNAME}/functest-kubernetes-core:ARCH-iruya \
--target ${DOCKER_USERNAME}/functest-kubernetes-core:iruya
- stage: build functest-kubernetes-[healthcheck,cnf,security] images
- script: sudo -E bash build.sh
+ script: bash build.sh
env:
- REPO="${DOCKER_USERNAME}"
- amd64_dirs="docker/healthcheck"
+ - arm_dirs=""
- arm64_dirs=""
- - script: sudo -E bash build.sh
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs="docker/healthcheck"
+ - arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs=""
+ - arm64_dirs="docker/healthcheck"
+ - script: bash build.sh
env:
- REPO="${DOCKER_USERNAME}"
- amd64_dirs="docker/cnf"
+ - arm_dirs=""
- arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs="docker/cnf"
+ - arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
- arm_dirs=""
- - script: sudo -E bash build.sh
+ - arm64_dirs="docker/cnf"
+ - script: bash build.sh
env:
- REPO="${DOCKER_USERNAME}"
- amd64_dirs="docker/security"
+ - arm_dirs=""
- arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs="docker/security"
+ - arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
- arm_dirs=""
+ - arm64_dirs="docker/security"
- stage: publish functest-kubernetes-[healthcheck,cnf,security] manifests
script: >
- sudo manifest-tool push from-args \
- --platforms linux/amd64 \
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm,linux/arm64 \
--template \
${DOCKER_USERNAME}/functest-kubernetes-healthcheck:ARCH-iruya \
--target ${DOCKER_USERNAME}/functest-kubernetes-healthcheck:iruya
- script: >
- sudo manifest-tool push from-args \
- --platforms linux/amd64 \
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm,linux/arm64 \
--template ${DOCKER_USERNAME}/functest-kubernetes-cnf:ARCH-iruya \
--target ${DOCKER_USERNAME}/functest-kubernetes-cnf:iruya
- script: >
- sudo manifest-tool push from-args \
- --platforms linux/amd64 \
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm,linux/arm64 \
--template \
${DOCKER_USERNAME}/functest-kubernetes-security:ARCH-iruya \
--target ${DOCKER_USERNAME}/functest-kubernetes-security:iruya
- stage: build functest-kubernetes-smoke image
- script: sudo -E bash build.sh
+ script: bash build.sh
env:
- REPO="${DOCKER_USERNAME}"
- amd64_dirs="docker/smoke"
+ - arm_dirs=""
+ - arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs="docker/smoke"
- arm64_dirs=""
+ - script: bash build.sh
+ env:
+ - REPO="${DOCKER_USERNAME}"
+ - amd64_dirs=""
+ - arm_dirs=""
+ - arm64_dirs="docker/smoke"
- stage: publish functest-kubernetes-smoke manifests
script: >
- sudo manifest-tool push from-args \
- --platforms linux/amd64 \
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm,linux/arm64 \
--template ${DOCKER_USERNAME}/functest-kubernetes-smoke:ARCH-iruya \
--target ${DOCKER_USERNAME}/functest-kubernetes-smoke:iruya
diff --git a/build.sh b/build.sh
index 8f512aeb..46716306 100644
--- a/build.sh
+++ b/build.sh
@@ -9,6 +9,7 @@ docker/healthcheck \
docker/smoke \
docker/cnf \
docker/security"}
+arm_dirs=${arm_dirs-${amd64_dirs}}
arm64_dirs=${arm64_dirs-${amd64_dirs}}
build_opts=(--pull=true --no-cache --force-rm=true)
@@ -54,4 +55,25 @@ done
arm64v8/golang:1.12-alpine3.9 || true)
find . -name Dockerfile -exec git checkout {} +
+find . -name Dockerfile -exec sed -i \
+ -e "s|golang:1.14-alpine3.12|arm32v7/golang:1.14-alpine3.12|g" {} +
+find . -name Dockerfile -exec sed -i \
+ -e "s|opnfv/functest-kubernetes-core|\
+${repo}/functest-kubernetes-core:arm-iruya|g" {} +
+find . -name Dockerfile -exec sed -i \
+ -e "s|opnfv/functest-kubernetes-healthcheck|\
+${repo}/functest-kubernetes-healthcheck:arm-iruya|g" {} +
+for dir in ${arm_dirs}; do
+ (cd "${dir}" && docker build "${build_opts[@]}" \
+ -t "${repo}/functest-kubernetes-${dir##**/}:arm-iruya" .)
+ docker push "${repo}/functest-kubernetes-${dir##**/}:arm-iruya"
+ [ "${dir}" != "docker/core" ] &&
+ (docker rmi \
+ "${repo}/functest-kubernetes-${dir##**/}:arm-iruya" || true)
+done
+[ ! -z "${arm_dirs}" ] &&
+ (docker rmi "${repo}/functest-kubernetes-core:arm-iruya" \
+ arm32v7/golang:1.14-alpine3.12 || true)
+find . -name Dockerfile -exec git checkout {} +
+
exit $?
diff --git a/docker/healthcheck/Dockerfile b/docker/healthcheck/Dockerfile
index 9ba86f0c..69d6cb11 100644
--- a/docker/healthcheck/Dockerfile
+++ b/docker/healthcheck/Dockerfile
@@ -11,8 +11,8 @@ RUN apk --no-cache add --update make py3-pip bash git \
(cd /src/k8s.io/kubernetes && \
git fetch --tags https://github.com/kubernetes/kubernetes $K8S_TAG && \
git checkout FETCH_HEAD && \
- make kubectl ginkgo && \
- make WHAT=test/e2e/e2e.test && \
+ make kubectl ginkgo GOFLAGS=-v && \
+ make WHAT=test/e2e/e2e.test GOFLAGS=-v && \
mv _output/bin/* /usr/local/bin) && \
rm -r /src/k8s.io && \
apk del .build-deps