diff options
author | Cédric Ollivier <cedric.ollivier@orange.com> | 2020-08-10 21:40:11 +0200 |
---|---|---|
committer | Cédric Ollivier <cedric.ollivier@orange.com> | 2020-08-11 10:29:29 +0200 |
commit | 3c4543a8ef6f84a5f25483a6dfe50e0075a9cd0e (patch) | |
tree | cbd718b0a676d46d5aa47a411e9478d3608df53e | |
parent | e4f32ecf5777e24e0898ee65f6c1c4c27c647dc5 (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>
-rw-r--r-- | .travis.yml | 100 | ||||
-rw-r--r-- | build.sh | 22 | ||||
-rw-r--r-- | docker/healthcheck/Dockerfile | 4 |
3 files changed, 106 insertions, 20 deletions
diff --git a/.travis.yml b/.travis.yml index 46ea017d..aa8a2b67 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.8 python3.8-dev python3.8-distutils - 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,py38,bandit - - stage: build functest-kubernetes-core image - script: sudo -E bash build.sh + - stage: build functest-kubernetes-core images + script: 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-latest \ --target ${DOCKER_USERNAME}/functest-kubernetes-core:latest - 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-latest \ --target ${DOCKER_USERNAME}/functest-kubernetes-healthcheck:latest - 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-latest \ --target ${DOCKER_USERNAME}/functest-kubernetes-cnf:latest - 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-latest \ --target ${DOCKER_USERNAME}/functest-kubernetes-security:latest - 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-latest \ --target ${DOCKER_USERNAME}/functest-kubernetes-smoke:latest @@ -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.14-alpine3.12 || 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-latest|g" {} + +find . -name Dockerfile -exec sed -i \ + -e "s|opnfv/functest-kubernetes-healthcheck|\ +${repo}/functest-kubernetes-healthcheck:arm-latest|g" {} + +for dir in ${arm_dirs}; do + (cd "${dir}" && docker build "${build_opts[@]}" \ + -t "${repo}/functest-kubernetes-${dir##**/}:arm-latest" .) + docker push "${repo}/functest-kubernetes-${dir##**/}:arm-latest" + [ "${dir}" != "docker/core" ] && + (docker rmi \ + "${repo}/functest-kubernetes-${dir##**/}:arm-latest" || true) +done +[ ! -z "${arm_dirs}" ] && + (docker rmi "${repo}/functest-kubernetes-core:arm-latest" \ + 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 1467f857..1413aa61 100644 --- a/docker/healthcheck/Dockerfile +++ b/docker/healthcheck/Dockerfile @@ -11,8 +11,8 @@ RUN apk --no-cache add --update make 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 |