Build arm* functest-vnf containers via travis-ci 34/67634/5
authorCédric Ollivier <cedric.ollivier@orange.com>
Fri, 19 Apr 2019 18:13:38 +0000 (20:13 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Sat, 20 Apr 2019 16:36:51 +0000 (18:36 +0200)
It doesn't build juju deps if arm* as they can't be cross-compiled.
Then that deps won't be built in releng on native arm64 hosts
It's worth mentioning that containers have never been executed in
OPNFV gates.

That change allows running all other VNFs on Raspberry PI and
building containers without arm build servers.

Change-Id: I836a72f049e7f0e6ae704f5b829914692d5b2c09
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
.travis.yml
docker/vnf/Dockerfile
functest/opnfv_tests/vnf/epc/juju_epc.py

index 39bab9d..3c6d578 100644 (file)
@@ -152,6 +152,18 @@ jobs:
         - amd64_dirs="docker/vnf"
         - arm64_dirs=""
         - arm_dirs=""
+    - script: sudo -E bash build.sh
+      env:
+        - REPO="${DOCKER_USERNAME}"
+        - amd64_dirs=""
+        - arm64_dirs="docker/vnf"
+        - arm_dirs=""
+    - script: sudo -E bash build.sh
+      env:
+        - REPO="${DOCKER_USERNAME}"
+        - amd64_dirs=""
+        - arm64_dirs=""
+        - arm_dirs="docker/vnf"
     - stage: publish all manifests
       script: >
         sudo manifest-tool push from-args \
@@ -175,6 +187,6 @@ jobs:
           --target ${DOCKER_USERNAME}/functest-features:latest
     - script: >
         sudo manifest-tool push from-args \
-          --platforms linux/amd64 \
+          --platforms linux/amd64,linux/arm,linux/arm64 \
           --template ${DOCKER_USERNAME}/functest-vnf:ARCH-latest \
           --target ${DOCKER_USERNAME}/functest-vnf:latest
index fe5dbfb..fc9294d 100644 (file)
@@ -55,22 +55,25 @@ RUN apk --no-cache add --update \
     (cd /home/opnfv/functest/data/router/opnfv-vnf-data && \
         git fetch --tags https://github.com/oolorg/opnfv-vnf-data.git $VROUTER_TAG && \
         git checkout FETCH_HEAD) && \
-    git init /src/epc-requirements/abot_charm && \
-    (cd /src/epc-requirements/abot_charm && \
-        git fetch --tags https://github.com/RebacaInc/abot_charm.git $ABOT_CHARM && \
-        git checkout FETCH_HEAD) && \
-    python3 -m pip install --no-cache-dir --src /src -cupper-constraints.txt -cupper-constraints.opnfv.txt \
-        juju-wait==$JUJU_WAIT_TAG && \
-    go get -d github.com/rogpeppe/godeps && \
-    (cd $GOPATH/src/github.com/rogpeppe/godeps && git checkout $GODEPS_TAG && go install -v github.com/rogpeppe/godeps) && \
-    go get -d -v github.com/juju/juju/... || true && \
-    (cd $GOPATH/src/github.com/juju/juju && git checkout $JUJU_TAG && godeps -u dependencies.tsv) && \
-    go install -v github.com/juju/juju/... && \
-    rm -r $GOPATH/src/ $GOPATH/pkg && \
+    case "$(uname -m)" in \
+    "armv7l" | "aarch64") ;; \
+    *) \
+        git init /src/epc-requirements/abot_charm && \
+        (cd /src/epc-requirements/abot_charm && \
+            git fetch --tags https://github.com/RebacaInc/abot_charm.git $ABOT_CHARM && \
+            git checkout FETCH_HEAD) && \
+        python3 -m pip install --no-cache-dir --src /src -cupper-constraints.txt -cupper-constraints.opnfv.txt \
+            juju-wait==$JUJU_WAIT_TAG && \
+        go get -d github.com/rogpeppe/godeps && \
+        (cd $GOPATH/src/github.com/rogpeppe/godeps && git checkout $GODEPS_TAG && go install -v github.com/rogpeppe/godeps) && \
+        go get -d -v github.com/juju/juju/... || true && \
+        (cd $GOPATH/src/github.com/juju/juju && git checkout $JUJU_TAG && godeps -u dependencies.tsv) && \
+        go install -v github.com/juju/juju/... && \
+        rm -r $GOPATH/src/ $GOPATH/pkg /src/epc-requirements/abot_charm/.git /root/.cache/go-build;; \
+    esac && \
     (cd /src/vims-test && bundle config build.nokogiri --use-system-libraries && bundle install --system && bundle update rest-client) && \
     rm -r upper-constraints.txt upper-constraints.opnfv.txt /src/vims-test/.git /src/cloudify_vims/.git /src/heat_vims/.git /src/vims-test/quaff/.git \
         /src/vims-test/build-infra/.git /src/opnfv-vnf-vyos-blueprint/.git \
-        /src/epc-requirements/abot_charm/.git /root/.cache/go-build \
         /tmp/clearwater-heat-singlenet-deps.patch && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/xtesting/ci/testcases.yaml
index 102f77d..cbf531b 100644 (file)
@@ -147,6 +147,12 @@ class JujuEpc(singlevm.VmReady2):
         self.flavor_alt = None
 
     def check_requirements(self):
+        if not os.path.exists("/src/epc-requirements/go/bin/juju"):
+            self.__logger.warn(
+                "Juju cannot be cross-compiled (arm and arm64) from the time "
+                "being")
+            self.is_skipped = True
+            self.project.clean()
         if env.get('NEW_USER_ROLE').lower() == "admin":
             self.__logger.warn(
                 "Defining NEW_USER_ROLE=admin will easily break the testcase "