Compile all Functest K8s containers for arm v7 and v8 21/70721/1
authorCédric Ollivier <cedric.ollivier@orange.com>
Mon, 10 Aug 2020 19:40:11 +0000 (21:40 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Tue, 11 Aug 2020 17:48:19 +0000 (19:48 +0200)
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)

.travis.yml
build.sh
docker/healthcheck/Dockerfile

index 11961a2..cf0612f 100644 (file)
@@ -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.7 python3.7-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,py37,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-jerma \
           --target ${DOCKER_USERNAME}/functest-kubernetes-core:jerma
     - 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-jerma \
           --target ${DOCKER_USERNAME}/functest-kubernetes-healthcheck:jerma
     - 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-jerma \
           --target ${DOCKER_USERNAME}/functest-kubernetes-cnf:jerma
     - 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-jerma \
           --target ${DOCKER_USERNAME}/functest-kubernetes-security:jerma
     - 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-jerma \
           --target ${DOCKER_USERNAME}/functest-kubernetes-smoke:jerma
index cd3035e..1cc4fc3 100644 (file)
--- 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.13-alpine3.10 || 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-jerma|g" {} +
+find . -name Dockerfile -exec sed -i \
+    -e "s|opnfv/functest-kubernetes-healthcheck|\
+${repo}/functest-kubernetes-healthcheck:arm-jerma|g" {} +
+for dir in ${arm_dirs}; do
+    (cd "${dir}" && docker build "${build_opts[@]}" \
+        -t "${repo}/functest-kubernetes-${dir##**/}:arm-jerma" .)
+    docker push "${repo}/functest-kubernetes-${dir##**/}:arm-jerma"
+    [ "${dir}" != "docker/core" ] &&
+        (docker rmi \
+            "${repo}/functest-kubernetes-${dir##**/}:arm-jerma" || true)
+done
+[ ! -z "${arm_dirs}" ] &&
+    (docker rmi "${repo}/functest-kubernetes-core:arm-jerma" \
+        arm32v7/golang:1.14-alpine3.12 || true)
+find . -name Dockerfile -exec git checkout {} +
+
 exit $?
index 46d5017..ff4e729 100644 (file)
@@ -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