diff options
Diffstat (limited to 'docker')
78 files changed, 2282 insertions, 3862 deletions
diff --git a/docker/LICENSE b/docker/LICENSE index 20f96ba86..e2c1e1a09 100644 --- a/docker/LICENSE +++ b/docker/LICENSE @@ -1,36 +1,4 @@ ----------- -MIT License - -Copyright (c) 2019 snergfdio - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ------------ - -The above MIT license applies to all files and their contents at the time -they were copied from - https://github.com/snergfdio/csit-shim - https://github.com/snergfdio/csit-sut - -All subsequent changes to the files and/or contents shall be subject to -the Apache license below: - ------------ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/docker/README b/docker/README deleted file mode 100644 index 2cbe9cd3f..000000000 --- a/docker/README +++ /dev/null @@ -1,18 +0,0 @@ -This directory contains the docker image definitions for executor images -which run CI jobs on the FD.io Nomad cluster. - -The files in the following repositories were originally created by Ed Kern -for the Nomad container proof of concept build infrastructure for FD.io -projects. The original source files and commit history can be found in the -respective repositories at - - https://github.com/snergfdio/csit-shim - https://github.com/snergfdio/csit-sut - https://github.com/snergfdio/vpp-arm-centos8 - https://github.com/snergfdio/vpp-arm-ubuntu16 - https://github.com/snergfdio/vpp-arm-ubuntu18 - https://github.com/snergfdio/vpp-centos8 - https://github.com/snergfdio/vpp-centos - https://github.com/snergfdio/vpp-ubuntu16 - https://github.com/snergfdio/vpp-ubuntu18 - https://github.com/snergfdio/vpp-ubuntu20 diff --git a/docker/csit/csit-shim/Dockerfile b/docker/csit/csit-shim/Dockerfile deleted file mode 100644 index 288c49b19..000000000 --- a/docker/csit/csit-shim/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM ubuntu:18.04 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="CSIT shim container" -LABEL Vendor="cisco.com" -LABEL Version="1.2" - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV NOTVISIBLE "in users profile" -RUN echo "export VISIBLE=now" >> /etc/profile - -ADD files/wrapdocker /usr/local/bin/wrapdocker -RUN chmod +x /usr/local/bin/wrapdocker - -# Install packages and Docker -RUN apt-get -q update \ - && apt-get install -y -qq \ - bash \ - curl \ - iproute2 \ - locales \ - ssh \ - sudo \ - tzdata \ - uuid-runtime \ - && curl -fsSL https://get.docker.com | sh \ - && rm -rf /var/lib/apt/lists/* - -# Configure locales -RUN locale-gen en_US - -RUN mkdir /var/run/sshd -RUN echo 'root:Csit1234' | chpasswd -RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config - -# SSH login fix. Otherwise user is kicked off after login -RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd - -# Need volume for sidecar docker launches -VOLUME /var/lib/docker - -# SSH to listen on port 6022 in shim -RUN echo 'Port 6022' >>/etc/ssh/sshd_config -RUN echo 'Port 6023' >>/etc/ssh/sshd_config -ADD files/badkeypub /root/.ssh/authorized_keys -ADD files/sshconfig /root/.ssh/config - -# Start sshd by default -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/docker/csit/csit-shim/files/badkeypub b/docker/csit/csit-shim/files/badkeypub deleted file mode 100644 index 574268450..000000000 --- a/docker/csit/csit-shim/files/badkeypub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyUNd/iRk5Ajw4ZBB0gXyjzecEzQHh/MctgvHGJjasqJDkwYyZBrunUorOZ3n82W8VGdd5+eNINCWOM/ERjuaHjnutfade+ocPgZRdk+kEgTvetDVNWIgBd0PMVcnp57jJfx7CZVqTNgGeVQ8OJ2RbJGeOb/EKApQI74IPkAfc0PSieSw5gC0eqEOHb39Awgp0ycrzsUHF/OEicfCmo+6vvrMGenDe7frKUoTKYMWs7l3DOyFC8NaOxhGD3J1Ne5u3A/r4w6mN1HVI0rFwIcoms+t0B4lb2ODWKZiZikQdn8/eqwsmbSEZZsWN3FkshgjPS83+dNqVwB6pPY5Yqte7 ejk@bhima.local diff --git a/docker/csit/csit-shim/files/sshconfig b/docker/csit/csit-shim/files/sshconfig deleted file mode 100644 index 85ad6f74a..000000000 --- a/docker/csit/csit-shim/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host 172.17.0.* - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/csit/csit-shim/files/wrapdocker b/docker/csit/csit-shim/files/wrapdocker deleted file mode 100644 index 2ca579fdf..000000000 --- a/docker/csit/csit-shim/files/wrapdocker +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -# Ensure that all nodes in /dev/mapper correspond to mapped devices currently loaded by the device-mapper kernel driver -dmsetup mknodes - -# First, make sure that cgroups are mounted correctly. -CGROUP=/sys/fs/cgroup -: {LOG:=stdio} - -[ -d $CGROUP ] || - mkdir $CGROUP - -mountpoint -q $CGROUP || - mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup $CGROUP || { - echo "Could not make a tmpfs mount. Did you use --privileged?" - exit 1 - } - -if [ -d /sys/kernel/security ] && ! mountpoint -q /sys/kernel/security -then - mount -t securityfs none /sys/kernel/security || { - echo "Could not mount /sys/kernel/security." - echo "AppArmor detection and --privileged mode might break." - } -fi - -# Mount the cgroup hierarchies exactly as they are in the parent system. -for SUBSYS in $(cut -d: -f2 /proc/1/cgroup) -do - [ -d $CGROUP/$SUBSYS ] || mkdir $CGROUP/$SUBSYS - mountpoint -q $CGROUP/$SUBSYS || - mount -n -t cgroup -o $SUBSYS cgroup $CGROUP/$SUBSYS - - # The two following sections address a bug which manifests itself - # by a cryptic "lxc-start: no ns_cgroup option specified" when - # trying to start containers withina container. - # The bug seems to appear when the cgroup hierarchies are not - # mounted on the exact same directories in the host, and in the - # container. - - # Named, control-less cgroups are mounted with "-o name=foo" - # (and appear as such under /proc/<pid>/cgroup) but are usually - # mounted on a directory named "foo" (without the "name=" prefix). - # Systemd and OpenRC (and possibly others) both create such a - # cgroup. To avoid the aforementioned bug, we symlink "foo" to - # "name=foo". This shouldn't have any adverse effect. - echo $SUBSYS | grep -q ^name= && { - NAME=$(echo $SUBSYS | sed s/^name=//) - ln -s $SUBSYS $CGROUP/$NAME - } - - # Likewise, on at least one system, it has been reported that - # systemd would mount the CPU and CPU accounting controllers - # (respectively "cpu" and "cpuacct") with "-o cpuacct,cpu" - # but on a directory called "cpu,cpuacct" (note the inversion - # in the order of the groups). This tries to work around it. - [ $SUBSYS = cpuacct,cpu ] && ln -s $SUBSYS $CGROUP/cpu,cpuacct -done - -# Note: as I write those lines, the LXC userland tools cannot setup -# a "sub-container" properly if the "devices" cgroup is not in its -# own hierarchy. Let's detect this and issue a warning. -grep -q :devices: /proc/1/cgroup || - echo "WARNING: the 'devices' cgroup should be in its own hierarchy." -grep -qw devices /proc/1/cgroup || - echo "WARNING: it looks like the 'devices' cgroup is not mounted." - -# Now, close extraneous file descriptors. -pushd /proc/self/fd >/dev/null -for FD in * -do - case "$FD" in - # Keep stdin/stdout/stderr - [012]) - ;; - # Nuke everything else - *) - eval exec "$FD>&-" - ;; - esac -done -popd >/dev/null - - -# If a pidfile is still around (for example after a container restart), -# delete it so that docker can start. -rm -rf /var/run/docker.pid - -# If we were given a PORT environment variable, start as a simple daemon; -# otherwise, spawn a shell as well -if [ "$PORT" ] -then - exec dockerd -H 0.0.0.0:$PORT -H unix:///var/run/docker.sock \ - $DOCKER_DAEMON_ARGS -else - if [ "$LOG" == "file" ] - then - dockerd $DOCKER_DAEMON_ARGS &>/var/log/docker.log & - else - dockerd $DOCKER_DAEMON_ARGS & - fi - (( timeout = 60 + SECONDS )) - until docker info >/dev/null 2>&1 - do - if (( SECONDS >= timeout )); then - echo 'Timed out trying to connect to internal docker host.' >&2 - break - fi - sleep 1 - done - [[ $1 ]] && exec "$@" - exec bash --login -fi diff --git a/docker/csit/csit-sut/Dockerfile b/docker/csit/csit-sut/Dockerfile deleted file mode 100644 index ba212dc96..000000000 --- a/docker/csit/csit-sut/Dockerfile +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -FROM ubuntu:18.04 -MAINTAINER csit-dev <csit-dev@lists.fd.io> -LABEL Description="CSIT vpp-device ubuntu 18.04 SUT image" -LABEL Version="0.7" - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -ENV NOTVISIBLE "in users profile" -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python - -# Install packages and Docker -RUN apt-get -q update \ - && apt-get install -y -qq \ - # general tools - apt-transport-https \ - bridge-utils \ - cloud-init \ - curl \ - gdb \ - locales \ - net-tools \ - openssh-server \ - pciutils \ - rsyslog \ - software-properties-common \ - ssh \ - sudo \ - supervisor \ - tar \ - vim \ - wget \ - # csit requirements - cmake \ - dkms \ - gfortran \ - libblas-dev \ - libffi-dev \ - liblapack-dev \ - libpcap-dev \ - libssl-dev \ - python-all \ - python-apt \ - python-cffi \ - python-cffi-backend \ - python-dev \ - python-enum34 \ - python-pip \ - python-setuptools \ - python-virtualenv \ - python3-all \ - python3-apt \ - python3-cffi \ - python3-cffi-backend \ - python3-dev \ - python3-pip \ - python3-setuptools \ - python3-virtualenv \ - qemu-system \ - socat \ - strongswan \ - unzip \ - tcpdump \ - zlib1g-dev \ - # vpp requirements - ca-certificates \ - libapr1 \ - libmbedcrypto1 \ - libmbedtls10 \ - libmbedx509-0 \ - libnuma1 \ - sshpass \ - && curl -L https://packagecloud.io/fdio/master/gpgkey | sudo apt-key add - \ - && curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash \ - # temp hack due to build.sh - && apt-get install -y -qq vpp-ext-deps \ - && curl -fsSL https://get.docker.com | sh \ - && rm -rf /var/lib/apt/lists/* - -# Configure locales -RUN locale-gen en_US.UTF-8 \ - && dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -# Create directory structure -RUN mkdir -p /tmp/dumps \ - && mkdir -p /var/cache/vpp/python \ - && mkdir -p /var/run/sshd - -# CSIT PIP pre-cache -RUN pip3 install \ - ecdsa==0.13.3 \ - paramiko==2.6.0 \ - pycrypto==2.6.1 \ - pypcap==1.2.3 \ - PyYAML==5.1.1 \ - requests==2.22.0 \ - robotframework==3.1.2 \ - scapy==2.4.3 \ - scp==0.13.2 \ - ansible==2.7.8 \ - dill==0.2.8.2 \ - numpy==1.17.3 \ - hdrhistogram==0.6.1 \ - pandas==0.25.3 \ - plotly==4.1.1 \ - PTable==0.9.2 \ - Sphinx==2.2.1 \ - sphinx-rtd-theme==0.4.0 \ - sphinxcontrib-programoutput==0.15 \ - sphinxcontrib-robotdoc==0.11.0 \ - alabaster==0.7.12 \ - Babel==2.7.0 \ - bcrypt==3.1.7 \ - certifi==2019.9.11 \ - cffi==1.13.2 \ - chardet==3.0.4 \ - cryptography==2.8 \ - docutils==0.15.2 \ - future==0.18.2 \ - idna==2.8 \ - imagesize==1.1.0 \ - Jinja2==2.10.3 \ - MarkupSafe==1.1.1 \ - packaging==19.2 \ - pbr==5.4.3 \ - pycparser==2.19 \ - Pygments==2.4.2 \ - PyNaCl==1.3.0 \ - pyparsing==2.4.4 \ - python-dateutil==2.8.1 \ - pytz==2019.3 \ - retrying==1.3.3 \ - six==1.13.0 \ - snowballstemmer==2.0.0 \ - sphinxcontrib-applehelp==1.0.1 \ - sphinxcontrib-devhelp==1.0.1 \ - sphinxcontrib-htmlhelp==1.0.2 \ - sphinxcontrib-jsmath==1.0.1 \ - sphinxcontrib-qthelp==1.0.2 \ - sphinxcontrib-serializinghtml==1.1.3 \ - urllib3==1.25.6 - -# ARM workaround -RUN pip3 install scipy==1.1.0 - -# SSH settings -RUN echo 'root:Csit1234' | chpasswd \ - && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \ - && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \ - && echo "export VISIBLE=now" >> /etc/profile - -EXPOSE 2222 - -COPY supervisord.conf /etc/supervisor/supervisord.conf - -CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /usr/sbin/sshd -D -p 2222"] diff --git a/docker/csit/csit-sut/supervisord.conf b/docker/csit/csit-sut/supervisord.conf deleted file mode 100644 index 4a6fe9656..000000000 --- a/docker/csit/csit-sut/supervisord.conf +++ /dev/null @@ -1,24 +0,0 @@ -[unix_http_server] -file = /tmp/supervisor.sock -chmod = 0777 - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl = unix:///tmp/supervisor.sock - -[supervisord] -pidfile = /tmp/supervisord.pid -identifier = supervisor -directory = /tmp -logfile = /tmp/supervisord.log -loglevel = debug -nodaemon = false - -[program:vpp] -command = /usr/bin/vpp -c /etc/vpp/startup.conf -autostart = false -autorestart = true -redirect_stderr = true -priority = 1 diff --git a/docker/scripts/README.md b/docker/scripts/README.md new file mode 100644 index 000000000..5fb4cee40 --- /dev/null +++ b/docker/scripts/README.md @@ -0,0 +1,271 @@ +# Automated Building Of FD.io CI Executor Docker Images + +This collection of bash scripts and libraries is used to automate the process +of building FD.io docker 'builder' images (aka Nomad executors). The goal is to +create a completely automated CI/CD pipeline. The bash code is designed to be +run in a regular Linux bash shell in order to bootstrap the CI/CD pipeline +as well as in a docker 'builder' image started by a ci-management jenkins job. +The Dockerfile is generated prior to executing 'docker build' based on the os +parameter specified. The project git repos are also copied into the docker +container and retained for optimization of git object retrieval by the Jenkins +jobs running the CI/CD tasks. + +## Image Builder Algorithm + +The general algorithm to automate the generation of the docker images such that +the downloadable requirements for each project are pre-installed or cached in +the executor image is as follows: + +1. Run the docker image builder on a host of the target architecture. Bootstrap + images will be built 'by hand' on target hosts until such a time when the + CI is capable of executing the docker image builder scripts inside docker + images running on Nomad instances via jenkins jobs. + +2. For each OS package manager, there is a bash function which generates the + Dockerfile for the specified OS which uses said package manager. For example, + lib_apt.sh contains 'generate_apt_dockerfile()' which is executed for Ubuntu + and debian OS's. + +3. The Dockerfiles contain the following sections: + - a. Environment setup and copying of project workspace git repos + - b. Installation of OS package pre-requisites + - c. Docker install and project requirements installation (more on this below) + - d. Working environment setup + - e. Build cleanup + +4. The Project installation section (c.) above is where all of the packages + for each of the supported project branches are installed or cached to + save time and bandwidth when the CI jobs are run. Each project script + defines the branches supported for each OS and iterates over them from + oldest to newest using the dependency and requirements files or build + targets in each supported project branch. + +5. `docker build` is run on the generated Dockerfile. + +## Bash Libraries (lib_*.sh) + +The bash libraries are designed to be sourced both inside of the docker build +environment (e.g. from a script invoked in a Dockerfile RUN statement) as well +as in a normal Linux shell. These scripts create environment variables and +bash functions for use by the operational scripts. + +- `lib_apt.sh`: Dockerfile generation functions for apt package manager. + +- `lib_common.sh`: Common utility functions and environment variables + +- `lib_csit.sh`: CSIT specific functions and environment variables + +- `lib_vpp.sh`: VPP specific functions and environment variables + + +## Bash Scripts + +There are two types of bash scripts, those intended to be run solely inside +the docker build execution environment, the other run either inside or +outside of it. + +### Docker Build (dbld_*.sh) Scripts + +These scripts run inside the 'docker build' environment are either per-project +scripts that install OS and python packages or scripts that install other docker +image runtime requirements. + +Python packages are not retained because they are typically installed in virtual +environments. However installing the python packages in the Docker Build scripts +populates the pip/http caches. Therefore packages are installed from the cache +files during CI job execution instead of being downloaded from the Internet. + +- `dbld_csit_find_ansible_packages.sh`: Script to find OS packages installed by +CSIT using ansible. + +- `dbld_csit_install_packages.sh`: Install OS and python packages for CSIT +branches + +- `dbld_dump_build_logs.sh`: Find warnings/errors in the build logs and dump +the build_executor_docker_image.sh execution log. + +- `dbld_install_docker.sh`: Install docker ce + +- `dbld_lfit_requirements.sh`: Install requirements for LFIT global-jjb +macros / scripts + +- `dbld_vpp_install_packages.sh`: Install OS and python packages for VPP +branches + +### Executor Docker Image Management Bash Scripts + +These scripts are used to build executor docker images, inspect the results, and +manage the docker image tags in the Docker Hub fdiotools repositories. + +- `build_executor_docker_image.sh`: Build script to create one or more executor +docker images. + +- `update_dockerhub_prod_tags.sh`: Inspect/promote/revert production docker tag +in the Docker Hub fdiotools repositories. + +## Running The Scripts + +### Bootstrapping The Builder Images + +The following commands are useful to build the initial builder images: + +`cd <ci-managment repository directory>` + +`sudo ./docker/scripts/build_executor_docker_image.sh ubuntu-20.04 2>&1 | tee u2004-$(uname -m).log | grep -ve '^+'` + +`sudo ./docker/scripts/build_executor_docker_image.sh -apr sandbox 2>&1 | tee all-sandbox-$(uname -m).log | grep -ve '^+'` + +Note: The initial population of a Docker Hub repository is performed manually by +tagging and pushing the verified sandbox image as 'prod-<arch>' and +'prod-prev-<arch>' as the update_dockerhub_prod_tags.sh script assumes that +both labels exist in the repo. After the intial images have been pushed to the +Docker Hub respository, the update script is used to prevent inadvertently +applying the wrong tags to images in the repository. + +### Building in a Builder Image + +By running the docker image with docker socket mounted in the container, +the docker build environment runs on the host's docker daemon. This +avoids the pitfalls encountered with Docker-In-Docker environments: + +`sudo docker run -it -v /var/run/docker.sock:/var/run/docker.sock <docker-image>` + +The environment in the docker shell contains all of the necessary +environment variable definitions so the docker scripts can be run +directly on the cli. Here is an example command that would be used in a CI job +which automates the generation and testing of a new ubuntu-20.04 docker image +and push it to Docker Hub fdiotools/builder-ubuntu2004:test-<arch>: + +`build_executor_docker_image.sh -pr test ubuntu-20.04` + +In the future, a fully automated CI/CD pipeline may be created for production +docker images. + +# Docker Image Script Workflow + +This section describes the current workflow used for managing the CI/CD pipeline +for the Docker Images used by the FD.io CI Jobs. + +Note: all operations that push images or image tags to Docker Hub require an +account with management privileges of the fdiotools repositories. + +## Update Production Docker Images + +Note: Presently only the 'builder' class executor docker images are supported. +The others will be supported in the near future. + +### Build Docker Images and Push to Docker Hub with Sandbox CI Tag + +For each hardware architecture, the build_executor_docker_image.sh script is +used to build all variants of the each executor class: + +1. `git clone https://gerrit.fd.io/r/ci-management && cd ci-management` + +2. `sudo ./docker/scripts/build_executor_docker_image.sh -p -r sandbox -a | tee builder-all-sandbox-$(uname -m).log | grep -ve '^+'`` + +3. `Inspect the build log for Errors and other build anomalies` + +This step will take a very long time so best to do it overnight. There is not +currently an option to automatically run builds in parallel, so if optimizing +build times is important, then run the jobs in separate shells for each OS. +The aarch64 builds are particularly slow, thus may benefit from being run on +separate hosts in parallel. + +Note: the 'prod' role is disallowed in the build script to prevent accidental +deployment of untested docker images to production. + +### Test Docker Images in the Jenkins Sandbox + +In the future, this step will be automated using the role 'test' and associated +tags, but for now testing is a manual operation. + +1. `git clone https://gerrit.fd.io/r/vpp ../vpp && source ../vpp/extras/bash/functions.sh` + +2. Edit jjb/vpp/vpp.yam (or other project yaml file) and replace '-prod-' with '-sandbox-' for all of the docker image + +3. `jjb-sandbox-env` + +4. For each job using one of the docker images: + + a. `jjsb-update <job name(s)>` # bash function created by jjb-sandbox-env to + push job to the sandbox + + b. manually run the job in https://jenkins.fd.io/sandbox + + c. Inspect the console output of each job for unnecessary downloads & errors. + +### Promote Docker Images to Production + +Once all of the docker images have been tested, promote each one to production: + +`sudo ./docker/scripts/update_dockerhub_prod_tags.sh promote <image name>` + +Note: this script currently requires human acceptance via the terminal to ensure +correctness. +It pulls all tags from the Docker Hub repos, does an Inspect action (displaying +the current state of 'prod' & 'prod-prev' tags) and local Promotion action (i.e. +tags local images with 'prod-<arch>' and 'prod-prev-<arch>') with a required +confirmation to continue the promotion by pushing the tags to Docker Hub. If +'no' is specified, it restores the previous local tags so they match the state +of Docker Hub and does a new Inspect action for verification. If 'yes' is +specified, it prints out the command to use to restore the existing state of the +production tags on Docker Hub in case the script is terminated prior to +completion. If necessary, the restore command can be repeated multiple times +until it completes successfully since it promotes the 'prod-prev-<arch>' image, +then the 'prod-<arch>' image in succession. + +## Other Docker Hub Operations + +### Inspect Production Docker Image Tags + +Inspect the current production docker image tags: + +`sudo ./docker/scripts/update_dockerhub_prod_tags.sh inspect fdiotools/<class>-<os name>:prod-$(uname -m)` + +### Revert Production Docker Image To Previous Docker Image + +Inspect the current production docker image tags: + +`sudo ./docker/scripts/update_dockerhub_prod_tags.sh revert fdiotools/<class>-<os name>:prod-$(uname -m)` + +### Restoring Previous Production Image State + +Assuming that the images still exist in the Docker Hub repository, any previous +state of the production image tags can be restored by executing the 'restore +command' as output by the build_executor_docker_image.sh script. This script +writes a copy of all of the terminal output to a log file in +/tmp/build_executor_docker_image.sh.<date>.log thus providing a history of the +restore commands. When the building of executor docker images is peformed by a +CI job, the logging can be removed since the job execution will be captured in +the Jenkins console output log. + +### Docker Image Garbage Collection + +Presently, cleaning up the Docker Hub repositories of old images/tags is a +manual process using the Docker Hub WebUI. In the future, a garbage collection +script will be written to automate the process. + +# DockerHub Repository & Docker Image Tag Nomenclature: + +## DockerHub Repositories + +- fdiotools/builder-debian11 +- fdiotools/builder-ubuntu2004 +- fdiotools/builder-ubuntu2204 +- fdiotools/csit_dut-ubuntu2004 +- fdiotools/csit_shim-ubuntu2004 + +## Docker Image Tags + +- prod-x86_64: Tag used to select the x86_64 production image by the associated +Jenkins-Nomad Label. +- prod-prev-x86_64: Tag of the previous x86_64 production image used to revert +a production image to the previous image used in production. +- prod-aarch64: Tag used to select the aarch64 production image by the +associated Jenkins-Nomad Label. +- prod-prev-aarch64 Tag of the previous aarch64 production image used to revert +a production image to the previous image used in production. +- sandbox-x86_64: Tag used to select the x86_64 sandbox image by the associated +Jenkins-Nomad Label. +- sandbox-aarch64: Tag used to select the aarch64 sandbox image by the +associated Jenkins-Nomad Label. diff --git a/docker/scripts/build_executor_docker_image.sh b/docker/scripts/build_executor_docker_image.sh new file mode 100755 index 000000000..7a731956e --- /dev/null +++ b/docker/scripts/build_executor_docker_image.sh @@ -0,0 +1,151 @@ +#! /bin/bash + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euxo pipefail + +# Log all output to stdout & stderr to a log file +export DOCKER_DATE=${DOCKER_DATE:-"$(date -u +%Y_%m_%d_%H%M%S_UTC)"} +logname="/tmp/$(basename $0).${DOCKER_DATE}.log" +echo -e "\n*** Logging output to $logname ***\n\n" +exec > >(tee -a $logname) 2>&1 + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_vpp.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_csit.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_apt.sh" + +all_os_names="" +ci_tag="" +ci_image="" +os_names="" +push_to_docker_hub="" +dump_dockerfile="" + +usage() { + set +x + echo + echo "Usage: $0 [-c <class>] [-p] [-r <role>] -a | <os name> [... <os name>]" + echo " -a Run all OS's supported on class $EXECUTOR_CLASS & arch $OS_ARCH" + echo " -c <class> Default is '$EXECUTOR_DEFAULT_CLASS'" + executor_list_classes + echo " -d Generate Dockerfile, dump it to stdout, and exit" + echo " -p Push docker images to Docker Hub" + echo " -r <role> Add a role based tag (e.g. sandbox-x86_64):" + executor_list_roles + executor_list_os_names + exit 1 +} + +must_be_run_as_root_or_docker_group +while getopts ":ac:dhpr:" opt; do + case "$opt" in + a) all_os_names="1" ;; + c) if executor_verify_class "$OPTARG" ; then + EXECUTOR_CLASS="$OPTARG" + EXECUTOR_CLASS_ARCH="$EXECUTOR_CLASS-$OS_ARCH" + else + echo "ERROR: Invalid executor class '$OPTARG'!" + usage + fi ;; + d) dump_dockerfile="1"; set +x ;; + h) usage ;; + p) push_to_docker_hub="1" ;; + r) if executor_verify_role "$OPTARG" ; then + ci_tag="${OPTARG}-$OS_ARCH" + else + echo "ERROR: Invalid executor role: '$OPTARG'!" + usage + fi ;; + \?) + echo "ERROR: Invalid option: -$OPTARG" >&2 + usage ;; + :) + echo "ERROR: Option -$OPTARG requires an argument." >&2 + usage ;; + esac +done +shift $(( $OPTIND-1 )) + +if [ -n "$all_os_names" ] ; then + os_names="${EXECUTOR_CLASS_ARCH_OS_NAMES[$EXECUTOR_CLASS_ARCH]}" +else + os_names="$@" +fi + +# Validate arguments +if [ -z "$os_names" ] ; then + echo "ERROR: Missing executor OS name(s) for class '$EXECUTOR_CLASS'!" + usage +fi +for executor_os_name in $os_names ; do + if ! executor_verify_os_name "$executor_os_name" ; then + set_opts="$-" + set +x # disable trace output + echo "ERROR: Invalid executor OS name for class '$EXECUTOR_CLASS': $executor_os_name!" + executor_list_os_names + echo + exit 1 + fi +done + +# Build the specified docker images +docker_build_setup_ciman +docker_build_setup_vpp +docker_build_setup_csit +for executor_os_name in $os_names ; do + docker_from_image="$(echo $executor_os_name | sed -e 's/-/:/')" + # Remove '-' and '.' from executor_os_name in Docker Hub repo name + os_name="${executor_os_name//-}" + repository="fdiotools/${EXECUTOR_CLASS}-${os_name//.}" + executor_docker_image="$repository:$DOCKER_TAG" + + case "$executor_os_name" in + ubuntu*) + generate_apt_dockerfile "$EXECUTOR_CLASS" "$executor_os_name" \ + "$docker_from_image" "$executor_docker_image" ;; + debian*) + generate_apt_dockerfile "$EXECUTOR_CLASS" "$executor_os_name" \ + "$docker_from_image" "$executor_docker_image" ;; + *) + echo "ERROR: Don't know how to generate dockerfile for OS $executor_os_name!" + usage ;; + esac + + if [ -n "$dump_dockerfile" ] ; then + line="===========================================================================" + echo -e "\nDockerfile for '$EXECUTOR_CLASS' executor docker image on OS '$executor_os_name':\n$line" + cat "$DOCKERFILE" + echo -e "$line\n" + else + docker build -t "$executor_docker_image" "$DOCKER_BUILD_DIR" + rm -f "$DOCKERFILE" + if [ -n "$ci_tag" ] ; then + ci_image="$repository:$ci_tag" + echo -e "\nAdding docker tag $ci_image to $executor_docker_image" + docker tag "$executor_docker_image" "$ci_image" + fi + if [ -n "$push_to_docker_hub" ] ; then + echo -e "\nPushing $executor_docker_image to Docker Hub..." + docker login + docker push "$executor_docker_image" + if [ -n "$ci_image" ] ; then + echo -e "\nPushing $ci_image to Docker Hub..." + docker push "$ci_image" + fi + fi + fi +done + +echo -e "\n$(basename $BASH_SOURCE) COMPLETE\nHave a great day! :D" diff --git a/docker/scripts/dbld_csit_find_ansible_packages.py b/docker/scripts/dbld_csit_find_ansible_packages.py new file mode 100755 index 000000000..52ed4c3b0 --- /dev/null +++ b/docker/scripts/dbld_csit_find_ansible_packages.py @@ -0,0 +1,91 @@ +#! /usr/bin/env python3 + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import pprint +import sys +from typing import List +import yaml +import logging + +logging.basicConfig(format='%(message)s') +log = logging.getLogger(__name__) + +def print_yaml_struct(yaml_struct, depth=0): + indent = " " * depth + for k,v in sorted(yaml_struct.items(), key=lambda x: x[0]): + if isinstance(v, dict): + log.warning(f"{indent}{k}") + print_yaml_struct(v, depth+1) + else: + log.warning(f"{indent}{k} {v}") + +class CsitAnsibleYamlStruct: + def __init__(self, **entries): + self.__dict__.update(entries) + +def packages_in_csit_ansible_yaml_file(yamlfile: str, distro, arch) -> list: + with open(yamlfile) as yf: + csit_ansible_yaml = yaml.safe_load(yf) + if csit_ansible_yaml is None: + return "" + cays = CsitAnsibleYamlStruct(**csit_ansible_yaml) + try: + packages = [pkg for pkg in cays.packages_base if type(pkg) is str] + except AttributeError: + return "" + if arch in [*cays.packages_by_arch]: + packages += [pkg for pkg in cays.packages_by_arch[arch] + if type(pkg) is str] + if distro in [*cays.packages_by_distro]: + packages += [pkg for pkg in cays.packages_by_distro[distro] + if type(pkg) is str] + return packages + +def is_csit_ansible_yaml_file(filename: str): + (root,ext) = os.path.splitext(filename) + if ext == '.yaml' \ + and filename.find('csit/') >= 0 \ + and filename.find('ansible/') > 0 \ + and os.path.isfile(filename): + return True + else: + return False + +def main(args: List[str]) -> None: + if len(args) < 1: + log.warning('Must have at least 1 file name') + return + pkg_list = [] + distro = 'ubuntu' + arch = 'x86_64' + + for arg in args: + if arg.lower() == '--ubuntu': + distro = 'ubuntu' + elif arg.lower() == '--x86_64': + arch = 'x86_64' + elif arg.lower() == '--aarch64': + arch = 'aarch64' + elif is_csit_ansible_yaml_file(arg): + pkg_list += packages_in_csit_ansible_yaml_file(arg, distro, arch) + else: + log.warning(f'Invalid CSIT Ansible YAML file: {arg}') + pkg_list = list(set(pkg_list)) + pkg_list.sort() + print(" ".join(pkg_list)) + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/docker/scripts/dbld_csit_install_packages.sh b/docker/scripts/dbld_csit_install_packages.sh new file mode 100755 index 000000000..e303ce28e --- /dev/null +++ b/docker/scripts/dbld_csit_install_packages.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euxo pipefail + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_csit.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_vpp.sh" + +must_be_run_in_docker_build + +echo_log + +if ! csit_supported_executor_class "$FDIOTOOLS_EXECUTOR_CLASS" ; then + echo_log "CSIT is not supported on executor class '$FDIOTOOLS_EXECUTOR_CLASS'. Skipping $(basename $0)..." + exit 0 +elif ! csit_supported_os "$OS_NAME" ; then + echo_log "CSIT is not supported on OS '$OS_NAME'. Skipping $(basename $0)..." + exit 0 +else + echo_log "Starting $(basename $0)" +fi + +do_git_config csit +for vpp_branch in ${VPP_BRANCHES[$OS_NAME]} ; do + # Returns checked out branch in csit_branch + csit_checkout_branch_for_vpp "$vpp_branch" + + # Install csit OS packages + csit_install_packages "$csit_branch" + + # Install/cache python packages + csit_install_hugo "$csit_branch" + + # Install/cache python packages + csit_pip_cache "$csit_branch" +done + +# Install csit OS packages +csit_install_packages "master" + +# Install/cache python packages +csit_install_hugo "master" + +# Install/cache python packages +csit_pip_cache "master" + +echo_log -e "Completed $(basename $0)!\n\n==========" diff --git a/docker/scripts/dbld_dump_build_logs.sh b/docker/scripts/dbld_dump_build_logs.sh new file mode 100755 index 000000000..443d538c8 --- /dev/null +++ b/docker/scripts/dbld_dump_build_logs.sh @@ -0,0 +1,55 @@ +#! /bin/bash + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euxo pipefail + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +export CIMAN_ROOT=${CIMAN_ROOT:-"$(dirname $(dirname $CIMAN_DOCKER_SCRIPTS))"} +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" + +must_be_run_in_docker_build + +dump_build_logs() { + local set_opts="$-" + set +e # disable exit on errors + + # Find errors + local found="$(grep -nisH error $DOCKER_BUILD_LOG_DIR/*-bld.log)" + if [ -n "$found" ] ; then + echo -e "\nErrors found in build log files:\n$found\n" + else + echo -e "\nNo errors found in build logs\n" + fi + + # Find warnings + found="$(grep -nisH warning $DOCKER_BUILD_LOG_DIR/*-bld.log)" + if [ -n "$found" ] ; then + echo -e "\nWarnings found in build log files:\n$found\n" + else + echo -e "\nNo warnings found in build logs\n" + fi + + grep -q e <<< "$set_opts" && set -e # re-enable exit on errors +} + +dump_cache_files() { + local cache_files_log="$DOCKER_BUILD_LOG_DIR/cached_files.json" + tree -a --timefmt "+%Y-%m-%d %H:%M:%S" --prune /root + tree -afJ --timefmt "+%Y-%m-%d %H:%M:%S" --prune -o "$cache_files_log" /root +} + +dump_cache_files +dump_build_logs +dump_echo_log diff --git a/docker/scripts/dbld_lfit_requirements.sh b/docker/scripts/dbld_lfit_requirements.sh new file mode 100755 index 000000000..ca54edd89 --- /dev/null +++ b/docker/scripts/dbld_lfit_requirements.sh @@ -0,0 +1,58 @@ +#! /bin/bash + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euxo pipefail + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" + +must_be_run_in_docker_build + +# Add packagecloud files +cat <<EOF >/root/.packagecloud +{"url":"https://packagecloud.io","token":"\$token"} +EOF +cat <<EOF >/root/packagecloud_api +machine packagecloud.io +login \$pclogin +password +EOF + +# Copy lf-env.sh for LF Releng scripts +lf_env_sh="/root/lf-env.sh" +cp "$DOCKER_CIMAN_ROOT/global-jjb/jenkins-init-scripts/lf-env.sh" "$lf_env_sh" +chmod 644 "$lf_env_sh" +cat <<EOF >>"$lf_env_sh" + +# When running in CI docker image, use the pre-installed venv +# instead of installing python packages every job run. +# +unset -f lf-activate-venv +lf-activate-venv() { + echo "\${FUNCNAME[0]}(): INFO: Adding $LF_VENV/bin to PATH" + PATH="\$LF_VENV/bin:\$PATH" + return 0 +} +EOF + +# Install lftools & boto3 for log / artifact upload. +python3 -m pip install boto3 +mkdir -p "$LF_VENV" +OLD_PATH="$PATH" +python3 -m venv "$LF_VENV" +PATH="$LF_VENV/bin:$PATH" +python3 -m pip install pip --upgrade +python3 -m pip install --upgrade --upgrade-strategy eager lftools +PATH="$OLD_PATH" diff --git a/docker/scripts/dbld_vpp_install_packages.sh b/docker/scripts/dbld_vpp_install_packages.sh new file mode 100755 index 000000000..5e1e0f8f0 --- /dev/null +++ b/docker/scripts/dbld_vpp_install_packages.sh @@ -0,0 +1,79 @@ +#! /bin/bash + +# Copyright (c) 2021 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euxo pipefail + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_vpp.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_apt.sh" + +must_be_run_in_docker_build + +echo_log +if ! vpp_supported_executor_class "$FDIOTOOLS_EXECUTOR_CLASS" ; then + echo_log "VPP is not supported on executor class '$FDIOTOOLS_EXECUTOR_CLASS'. Skipping $(basename $0)..." + exit 0 +else + echo_log "Starting $(basename $0)" +fi + +do_git_config vpp +for branch in ${VPP_BRANCHES[$OS_NAME]} ; do + do_git_branch "$branch" + + # Install OS packages + make_vpp "install-dep" "$branch" + + # Download, build, and cache external deps packages + make_vpp "install-ext-deps" "$branch" + vpp_ext_dir="$DOCKER_VPP_DIR/build/external" + rsync -ac $vpp_ext_dir/downloads/. $DOCKER_DOWNLOADS_DIR || true + if which apt >/dev/null ; then + vpp_ext_deps_pkg=$vpp_ext_dir/$(dpkg -l vpp-ext-deps 2>/dev/null | mawk '/vpp-ext-deps/{print $2"_"$3"_"$4".deb"}') + else + echo "ERROR: Package Manager not installed!" + exit 1 + fi + if [ -f "$vpp_ext_deps_pkg" ] ; then + cp -f $vpp_ext_deps_pkg $DOCKER_DOWNLOADS_DIR + else + echo "ERROR: Missing VPP external deps package: '$vpp_ext_deps_pkg'" + exit 1 + fi + # TODO: remove this after all supported VPP branches have removed + # python3-virtualenv & virtualenv from install-deps which are no longer + # used in vpp repo. These packages can mess up csit virtualenv + # installation which uses pip3 + sudo apt remove -y --purge --autoremove python3-virtualenv virtualenv || true + + # Install/cache python packages + make_vpp_test "test-dep" "$branch" + if [ "$OS_ID" = "ubuntu" ] ; then + make_vpp test-wipe "$branch" + fi + # Clean up virtual environment + git checkout -q -- . + git clean -qfdx + + # Dump packages installed + case "$DOCKERFILE_FROM" in + *ubuntu*) + dump_apt_package_list "$branch" ;; + *debian*) + dump_apt_package_list "$branch" ;; + esac +done + +echo_log -e "Completed $(basename $0)!\n\n==========" diff --git a/docker/scripts/lib_apt.sh b/docker/scripts/lib_apt.sh new file mode 100644 index 000000000..6cf37ae76 --- /dev/null +++ b/docker/scripts/lib_apt.sh @@ -0,0 +1,352 @@ +# lib_apt.sh - Docker build script apt library. +# For import only. + +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Don't import more than once. +if [ -n "$(alias lib_apt_imported 2> /dev/null)" ] ; then + return 0 +fi +alias lib_apt_imported=true + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_csit.sh" + +dump_apt_package_list() { + branchname="$(echo $branch | sed -e 's,/,_,')" + dpkg -l > \ + "$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME-$branchname-apt-packages.log" +} + +apt_install_packages() { + apt-get install -y --allow-downgrades --allow-remove-essential \ + --allow-change-held-packages $@ +} + +generate_apt_dockerfile_common() { + local executor_class="$1" + local executor_image="$2" + local dpkg_arch="$(dpkg --print-architecture)" + + cat <<EOF >>"$DOCKERFILE" + +# Create download dir to cache external tarballs +WORKDIR $DOCKER_DOWNLOADS_DIR + +# Copy-in temporary build tree containing +# ci-management, vpp, & csit git repos +WORKDIR $DOCKER_BUILD_DIR +COPY . . + +# Build Environment Variables +ENV DEBIAN_FRONTEND="noninteractive" +ENV FDIOTOOLS_IMAGE="$executor_image" +ENV FDIOTOOLS_EXECUTOR_CLASS="$executor_class" +ENV CIMAN_ROOT="$DOCKER_CIMAN_ROOT" +ENV PATH="\$PATH:$DOCKER_CIMAN_ROOT/docker/scripts" + +# Configure locales +RUN apt-get update -qq \\ + && apt-get install -y \\ + apt-utils \\ + locales \\ + && sed -i 's/# \(en_US\.UTF-8 .*\)/\1/' /etc/locale.gen \\ + && locale-gen en_US.UTF-8 \\ + && dpkg-reconfigure --frontend=noninteractive locales \\ + && update-locale LANG=en_US.UTF-8 \\ + && TZ=Etc/UTC && ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone \\ + && rm -r /var/lib/apt/lists/* +ENV LANG="en_US.UTF-8" LANGUAGE="en_US" LC_ALL="en_US.UTF-8" + +# Install baseline packages (minimum build & utils). +# +# ci-management global-jjb requirements: +# facter +# python3-pip +# python3-venv +# for lftools: +# xmlstarlet +# libxml2-dev +# libxslt-dev +# from packer/provision/baseline.sh: +# unzip +# xz-utils +# git +# git-review +# libxml2-dev +# libxml-xpath-perl +# libxslt-dev +# make +# wget +# jq +# +# Python build from source requirements: +# build-essential +# +# TODO: Fix broken project requirement install targets +# graphviz for doxygen (HICN) +# doxygen for doxygen (HICN) +# libffi-dev for python cffi install (Ubuntu20.04/VPP/aarch64) +# liblapack-dev for python numpy/scipy (CSIT/aarch64) +# libopenblas-dev for python numpy/scipy (CSIT/aarch64) +# libpcap-dev for python pypcap install (CSIT) +# sshpass for CSIT jobs +# +RUN apt-get update -qq \\ + && apt-get install -y \\ + apt-transport-https \\ + curl \\ + ca-certificates \\ + default-jdk \\ + default-jre \\ + dnsutils \\ + doxygen \\ + emacs \\ + facter \\ + gawk \\ + gdb \\ + gfortran \\ + git \\ + git-review \\ + gnupg-agent \\ + graphviz \\ + iproute2 \\ + iputils-clockdiff \\ + iputils-ping \\ + iputils-tracepath \\ + jq \\ + libffi-dev \\ + liblapack-dev \\ + libopenblas-dev \\ + libpcap-dev \\ + libxml-xpath-perl \\ + make \\ + python3-pip \\ + python3-venv \\ + rsync \\ + ruby-dev \\ + software-properties-common \\ + sshpass \\ + sysstat \\ + sudo \\ + traceroute \\ + tree \\ + vim \\ + wget \\ + xmlstarlet \\ + xz-utils \\ + && curl -L https://packagecloud.io/fdio/master/gpgkey | apt-key add - \\ + && curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | bash \\ + && rm -r /var/lib/apt/lists/* + +# Install terraform for CSIT +# +RUN wget https://releases.hashicorp.com/terraform/1.7.3/terraform_1.7.3_linux_$dpkg_arch.zip \\ + && unzip terraform_1.7.3_linux_$dpkg_arch.zip \\ + && mv terraform /usr/bin \\ + && rm -f terraform_1.7.3_linux_$dpkg_arch.zip + +# Install packages for all project branches +# +RUN apt-get update -qq \\ + && dbld_vpp_install_packages.sh \\ + && dbld_csit_install_packages.sh \\ + && rm -r /var/lib/apt/lists/* +EOF +} + +generate_apt_dockerfile_clean() { + cat <<EOF >>"$DOCKERFILE" + +# Clean up copy-in build tree +RUN dbld_dump_build_logs.sh \\ + && rm -rf "/tmp/*" "$DOCKER_BUILD_FILES_DIR" "/root/.ccache" +EOF +} + +# Generate 'builder' class apt dockerfile +builder_generate_apt_dockerfile() { + local executor_class="$1" + local executor_os_name="$2" + local executor_image="$3" + local vpp_install_skip_sysctl_envvar=""; + + generate_apt_dockerfile_common $executor_class $executor_image + csit_builder_generate_docker_build_files + cat <<EOF >>"$DOCKERFILE" + +# Install LF-IT requirements +ENV LF_VENV="/root/lf-venv" +RUN apt-get update -qq \\ + && dbld_lfit_requirements.sh \\ + && rm -r /var/lib/apt/lists/* + +# Install packagecloud requirements +RUN gem install rake package_cloud \\ + && curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | bash + +# Install CSIT ssh requirements +# TODO: Verify why badkey is required & figure out how to avoid it. +COPY files/badkey /root/.ssh/id_rsa +COPY files/sshconfig /root/.ssh/config + +# CI Runtime Environment +WORKDIR / +$vpp_install_skip_sysctl_envvar +ENV VPP_ZOMBIE_NOCHECK="1" +ENV CCACHE_DIR="/scratch/ccache" +ENV CCACHE_MAXSIZE="10G" +EOF + generate_apt_dockerfile_clean +} + +# Generate 'csit_dut' class apt dockerfile +csit_dut_generate_apt_dockerfile() { + local executor_class="$1" + local executor_os_name="$2" + local executor_image="$3" + + csit_dut_generate_docker_build_files + generate_apt_dockerfile_common "$executor_class" "$executor_image" + cat <<EOF >>"$DOCKERFILE" + +# Install csit_dut specific packages +RUN apt-get update -qq \\ + && apt-get install -y \\ + net-tools \\ + openssh-server \\ + pciutils \\ + rsyslog \\ + supervisor \\ + && rm -r /var/lib/apt/lists/* + +# Fix permissions +RUN chown root:syslog /var/log \\ + && chmod 755 /etc/default + +# Create directory structure +RUN mkdir -p /var/run/sshd + +# SSH settings +RUN echo 'root:Csit1234' | chpasswd \\ + && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \\ + && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd + +EXPOSE 2222 + +COPY files/supervisord.conf /etc/supervisor/supervisord.conf + +CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /usr/sbin/sshd -D -p 2222"] +EOF + generate_apt_dockerfile_clean +} + +# Generate 'csit_shim' class apt dockerfile +csit_shim_generate_apt_dockerfile() { + local executor_class="$1" + local executor_os_name="$2" + local executor_image="$3" + + csit_shim_generate_docker_build_files + cat <<EOF >>"$DOCKERFILE" + +# Copy-in temporary build tree containing +# ci-management, vpp, & csit git repos +WORKDIR $DOCKER_BUILD_DIR +COPY . . + +# Build Environment Variables +ENV DEBIAN_FRONTEND="noninteractive" +ENV FDIOTOOLS_IMAGE="$executor_image" +ENV FDIOTOOLS_EXECUTOR_CLASS="$executor_class" +ENV CIMAN_ROOT="$DOCKER_CIMAN_ROOT" +ENV PATH="\$PATH:$DOCKER_CIMAN_ROOT/docker/scripts" + +# Configure locales & timezone +RUN apt-get update -qq \\ + && apt-get install -y \\ + apt-utils \\ + locales \\ + && sed -i 's/# \(en_US\.UTF-8 .*\)/\1/' /etc/locale.gen \\ + && locale-gen en_US.UTF-8 \\ + && dpkg-reconfigure --frontend=noninteractive locales \\ + && update-locale LANG=en_US.UTF-8 \\ + && TZ=Etc/UTC && ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone \\ + && rm -r /var/lib/apt/lists/* +ENV LANG=en_US.UTF-8 LANGUAGE=en_US LC_ALL=en_US.UTF-8 + +COPY files/wrapdocker /usr/local/bin/wrapdocker +RUN chmod +x /usr/local/bin/wrapdocker + +# Install packages and Docker +RUN apt-get update -qq \\ + && apt-get install -y \\ + bash \\ + curl \\ + iproute2 \\ + locales \\ + ssh \\ + sudo \\ + tzdata \\ + uuid-runtime \\ + && curl -fsSL https://get.docker.com | sh \\ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir /var/run/sshd +RUN echo 'root:Csit1234' | chpasswd +RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config + +# SSH login fix. Otherwise user is kicked off after login +RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd + +# Need volume for sidecar docker launches +VOLUME /var/lib/docker + +# SSH to listen on port 6022 in shim +RUN echo 'Port 6022' >>/etc/ssh/sshd_config +RUN echo 'Port 6023' >>/etc/ssh/sshd_config + +# TODO: Verify why badkeypub is required & figure out how to avoid it. +COPY files/badkeypub /root/.ssh/authorized_keys +COPY files/sshconfig /root/.ssh/config + +# Clean up copy-in build tree +RUN rm -rf /tmp/* $DOCKER_BUILD_FILES_DIR + +# Start sshd by default +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] +EOF +} + +generate_apt_dockerfile() { + local executor_class="$1" + local executor_os_name="$2" + local from_image="$3" + local executor_image="$4" + + cat <<EOF >"$DOCKERIGNOREFILE" +**/__pycache__ +*.pyc +EOF + cat <<EOF >"$DOCKERFILE" +FROM $from_image AS ${executor_class}-executor-image +LABEL Description="FD.io CI '$executor_class' executor docker image for $executor_os_name/$OS_ARCH" +LABEL Vendor="fd.io" +LABEL Version="$DOCKER_TAG" +EOF + ${executor_class}_generate_apt_dockerfile "$executor_class" \ + "$executor_os_name" "$executor_image" +} diff --git a/docker/scripts/lib_common.sh b/docker/scripts/lib_common.sh new file mode 100644 index 000000000..150441bb7 --- /dev/null +++ b/docker/scripts/lib_common.sh @@ -0,0 +1,271 @@ +# lib_common.sh - Docker build script common library. +# For import only. + +# Copyright (c) 2022 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Don't import more than once. +if [ -n "$(alias lib_common_imported 2> /dev/null)" ] ; then + return 0 +fi +alias lib_common_imported="true" + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +export CIMAN_ROOT="$(dirname $(dirname $CIMAN_DOCKER_SCRIPTS))" + +must_be_run_as_root_or_docker_group() { + set_opts="$-" + set +e # disable exit on errors + + # test if the user is root or id is in the 'docker' group + if [ "${EUID:-$(id -u)}" -eq "0" ] || grep -q "docker" <<< "$(id)" ; then + grep -q e <<< "$set_opts" && set -e # re-enable exit on errors + else + set +x + echo -e "\nERROR: Must be run as root or '$USER' must be in the group 'docker'!" + if [ -n "$(declare -f usage)" ] ; then + usage + fi + grep -q e <<< "$set_opts" && set -e # re-enable exit on errors + exit 1 + fi +} + +must_be_run_in_docker_build() { + if [ -z "$(alias running_in_docker_build 2> /dev/null)" ] ; then + set +x + echo -e "\nERROR: $(basename $0) must be run in 'docker build'\n" + exit 1 + fi +} + +echo_log() { + if [ "$#" -eq "0" ] ; then + if [ -z "$(alias running_in_docker_build 2> /dev/null)" ] ; then + echo + else + echo | tee -a "$FDIOTOOLS_IMAGE_BUILD_LOG" 1>&2 + fi + return 0 + fi + + local echo_opts="" + case "$1" in + -[en]) + echo_opts="$1 " + shift + ;; + esac + if [ -z "$(alias running_in_docker_build 2> /dev/null)" ] ; then + echo ${echo_opts}"####> $@" + else + echo ${echo_opts}"####> $(date -u): $@" | tee -a $FDIOTOOLS_IMAGE_BUILD_LOG 1>&2 + fi +} + +dump_echo_log() { + [ -z "$(alias running_in_docker_build 2> /dev/null)" ] && return 0 + echo -e "\n\n####> $(date -u) Build log ($FDIOTOOLS_IMAGE_BUILD_LOG):" + cat "$FDIOTOOLS_IMAGE_BUILD_LOG" +} + +do_git_config() { + if [ "$#" -ne "1" ] ; then + echo_log "ERROR: do_git_config(): Invalid number of arguments ($#)!" + return 1 + fi + cd "$DOCKER_BUILD_DIR/$1" + + # Add user to git config so git commands don't fail + local git_config_list="$(git config -l)" + if [ -z "$(grep 'user\.email' <<<$git_config_list)" ] ; then + git config user.email "ci-management-dev@lists.fd.io" + fi + if [ -z "$(grep 'user\.name' <<<$git_config_list)" ] ; then + git config user.name "ci-management" + fi +} + +do_git_branch() { + local branch="$1" + + echo_log " Checking out '$branch' in $(pwd)" + if [ -n "$(git branch | grep $branch)" ] ; then + git checkout "$branch" + else + git checkout -b "$branch" --track "origin/$branch" + fi + git pull -q + echo_log -e " 'git log --oneline | head':\n----- %< -----\n$(git log --oneline | head)\n----- %< -----" +} + +clean_git_repo() { + pushd "$1" >& /dev/null + git clean -qfdx + git checkout -q master + git pull -q + popd >& /dev/null +} + +remove_pyc_files_and_pycache_dirs() { + find . -type f -name '*.pyc' -exec rm -f {} \; 2>/dev/null || true + find . -type d -name __pycache__ -exec echo -n "Removing " \; \ + -print -exec rm -rf {} \; 2>/dev/null || true +} + +# OS type variables +export OS_ID="$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/\"//g')" +export OS_VERSION_ID="$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | sed -e 's/\"//g')" +export OS_CODENAME="$(grep 'VERSION_CODENAME=' /etc/os-release | cut -d= -f2)" +export OS_NAME="${OS_ID}-${OS_VERSION_ID}" +export OS_ARCH="$(uname -m)" +case "$OS_ARCH" in + x86_64) + export DEB_ARCH="amd64" + ;; + aarch64) + export DEB_ARCH="arm64" + ;; + *) + echo "ERROR: Unsupported OS architecture '$OS_ARCH'!" + return 1 + ;; +esac + +# Executor attribute variables +# Note: the role 'prod' is only applied and uploaded using the script +# update_dockerhub_prod_tags.sh to avoid accidentally pushing +# an untested docker image into production. +export EXECUTOR_ROLES="sandbox test" +export EXECUTOR_DEFAULT_CLASS="builder" +export EXECUTOR_CLASS=${EXECUTOR_CLASS:-"$EXECUTOR_DEFAULT_CLASS"} +export EXECUTOR_CLASS_ARCH="$EXECUTOR_DEFAULT_CLASS-$OS_ARCH" +export EXECUTOR_CLASSES="$EXECUTOR_DEFAULT_CLASS csit_dut csit_shim" +export EXECUTOR_ARCHS="aarch64 x86_64" +declare -A EXECUTOR_CLASS_ARCH_OS_NAMES +EXECUTOR_CLASS_ARCH_OS_NAMES["builder-aarch64"]="ubuntu-20.04 ubuntu-22.04" +EXECUTOR_CLASS_ARCH_OS_NAMES["builder-x86_64"]="debian-11 ubuntu-20.04 ubuntu-22.04" +EXECUTOR_CLASS_ARCH_OS_NAMES["csit_dut-aarch64"]="ubuntu-22.04" +EXECUTOR_CLASS_ARCH_OS_NAMES["csit_dut-x86_64"]="ubuntu-22.04" +EXECUTOR_CLASS_ARCH_OS_NAMES["csit_shim-aarch64"]="ubuntu-22.04" +EXECUTOR_CLASS_ARCH_OS_NAMES["csit_shim-x86_64"]="ubuntu-22.04" +export EXECUTOR_CLASS_ARCH_OS_NAMES + +executor_list_roles() { + local set_opts="$-" + set +u # disable undefined variable check + local indent=${1:-" "} + grep -q u <<< "$set_opts" && set -u # re-enable undefined variable check + + for role in $EXECUTOR_ROLES ; do + echo -e "${indent}$role" + done +} + +executor_verify_role() { + for role in $EXECUTOR_ROLES ; do + if [ "$role" = "$1" ] ; then + return 0 + fi + done + return 1 +} + +executor_list_classes() { + local set_opts="$-" + set +u # disable undefined variable check + local indent=${1:-" "} + grep -q u <<< "$set_opts" && set -u # re-enable undefined variable check + + for class in $EXECUTOR_CLASSES ; do + echo -e "${indent}$class" + done +} + +executor_verify_class() { + for class in $EXECUTOR_CLASSES ; do + if [ "$class" = "$1" ] ; then + return 0 + fi + done + return 1 +} + +executor_list_os_names() { + local set_opts="$-" + set +u # disable undefined variable check + local indent=${1:-" "} + grep -q u <<< "$set_opts" && set -u # re-enable undefined variable check + + echo + echo "Valid executor OS names for class '$EXECUTOR_CLASS':" + for os in ${EXECUTOR_CLASS_ARCH_OS_NAMES[$EXECUTOR_CLASS_ARCH]} ; do + echo "${indent}$os" + done | sort +} + +executor_verify_os_name() { + for os in ${EXECUTOR_CLASS_ARCH_OS_NAMES[$EXECUTOR_CLASS_ARCH]} ; do + if [ "$os" = "$1" ] ; then + return 0 + fi + done + return 1 +} + +# Docker variables +export DOCKER_DATE=${DOCKER_DATE:-"$(date -u +%Y_%m_%d_%H%M%S_UTC)"} +export DOCKER_BUILD_DIR="/scratch/docker-build" +export DOCKER_CIMAN_ROOT="$DOCKER_BUILD_DIR/ci-management" +export DOCKERFILE="$DOCKER_BUILD_DIR/Dockerfile" +export DOCKERIGNOREFILE="$DOCKER_BUILD_DIR/.dockerignore" +export DOCKERFILE_FROM=${DOCKERFILE_FROM:="${OS_ID}:${OS_VERSION_ID}"} +export DOCKER_TAG="$DOCKER_DATE-$OS_ARCH" +export DOCKER_VPP_DIR="$DOCKER_BUILD_DIR/vpp" +export DOCKER_CSIT_DIR="$DOCKER_BUILD_DIR/csit" +export DOCKER_DOWNLOADS_DIR="/root/Downloads" +export DOCKER_BUILD_FILES_DIR="$DOCKER_BUILD_DIR/files" + +docker_build_setup_ciman() { + if [ "$(dirname $CIMAN_ROOT)" != "$DOCKER_BUILD_DIR" ] ; then + echo_log "Updating $CIMAN_ROOT git submodules..." + pushd "$CIMAN_ROOT" + git submodule update --init --recursive + popd + if [ -d "$DOCKER_BUILD_DIR" ] ; then + echo_log "Removing existing DOCKER_BUILD_DIR: $DOCKER_BUILD_DIR..." + local sudo_cmd="" + if [ "$(whoami)" != "$(stat -c %U $DOCKER_BUILD_DIR)" ] ; then + sudo_cmd="sudo" + fi + ${sudo_cmd} rm -rf "$DOCKER_BUILD_DIR" + fi + echo_log "Syncing $CIMAN_ROOT into $DOCKER_CIMAN_ROOT..." + mkdir -p "$DOCKER_BUILD_DIR" + rsync -a "$CIMAN_ROOT/." "$DOCKER_CIMAN_ROOT" + else + mkdir -p "$DOCKER_BUILD_DIR" + fi +} + +# Variables used in docker build environment +set_opts="$-" +set +u # disable undefined variable check +if [ -n "$FDIOTOOLS_IMAGE" ] ; then + alias running_in_docker_build=true + export DOCKER_BUILD_LOG_DIR="$DOCKER_BUILD_DIR/logs" + export FDIOTOOLS_IMAGENAME="$(echo $FDIOTOOLS_IMAGE | sed -e 's/:/-/' -e 's,/,_,g')" + export FDIOTOOLS_IMAGE_BUILD_LOG="$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME.log" + mkdir -p $DOCKER_BUILD_LOG_DIR +fi +grep -q u <<< "$set_opts" && set -u # re-enable undefined variable check diff --git a/docker/scripts/lib_csit.sh b/docker/scripts/lib_csit.sh new file mode 100644 index 000000000..2e877f803 --- /dev/null +++ b/docker/scripts/lib_csit.sh @@ -0,0 +1,390 @@ +# lib_csit.sh - Docker build script CSIT library. +# For import only. + +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Don't import more than once. +if [ -n "$(alias lib_csit_imported 2> /dev/null)" ] ; then + return 0 +fi +alias lib_csit_imported=true + +export CIMAN_DOCKER_SCRIPTS="${CIMAN_DOCKER_SCRIPTS:-$(dirname ${BASH_SOURCE[0]})}" +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" +. "$CIMAN_DOCKER_SCRIPTS/lib_apt.sh" + +CSIT_SUPPORTED_EXECUTOR_CLASSES="builder csit_dut" +csit_supported_executor_class() { + if ! grep -q "${1:-}" <<< "$CSIT_SUPPORTED_EXECUTOR_CLASSES" ; then + return 1 + fi + return 0 +} + +csit_supported_os() { + case "$1" in + ubuntu-22.04) return 0 ;; + *) ;; + esac + return 1 +} + +csit_checkout_branch_for_vpp() { + local vpp_branch="$1" + local csit_dir="$DOCKER_CSIT_DIR" + local csit_bash_function_dir="$csit_dir/resources/libraries/bash/function" + + # import checkout_csit_for_vpp() if not defined + set +e && [ -z "$(declare -f checkout_csit_for_vpp)" ] \ + && source "$csit_bash_function_dir/branch.sh" + CSIT_DIR="$csit_dir" checkout_csit_for_vpp "$vpp_branch" + + # shellcheck disable=SC2034,SC2063 + csit_branch="$(git branch | grep -e '^*' | mawk '{print $2}')" +} + +csit_install_packages() { + local branch="$1" + local branchname + branchname="$(echo $branch | sed -e 's,/,_,')" + local csit_dir="$DOCKER_CSIT_DIR" + local csit_ansible_dir="$csit_dir/fdio.infra.ansible" + if [ ! -d "$csit_ansible_dir" ] ; then + csit_ansible_dir="$csit_dir/resources/tools/testbed-setup/ansible" + fi + local bld_log="$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME" + bld_log="${bld_log}-$branchname-csit_install_packages-bld.log" + + git clean -qfdx + python3 -m pip install pyyaml + + local exclude_roles="-e calibration -e kernel -e mellanox -e nomad -e consul -e aws -e vpp" + [ "$OS_ARCH" = "aarch64" ] && exclude_roles="$exclude_roles -e iperf" + + # Not in double quotes to let bash remove newline characters + local yaml_files + yaml_files="$(grep -r packages_by $csit_ansible_dir | cut -d: -f1 | sort -u | grep -v $exclude_roles)" + packages="$(dbld_csit_find_ansible_packages.py --$OS_ID --$OS_ARCH $yaml_files)" + packages="${packages/jammy /}" + packages="${packages/focal /}" + packages="${packages/libmbedcrypto1/libmbedcrypto3}" + packages="${packages/libmbedtls10/libmbedtls12}" + packages="$(echo ${packages//python\-/python3\-} | tr ' ' '\n' | sort -u | xargs)" + + if [ -n "$packages" ] ; then + case "$OS_NAME" in + ubuntu*) + apt_install_packages "$packages" 2>&1 | tee -a "$bld_log" + ;; + debian*) + apt_install_packages "$packages" 2>&1 | tee -a "$bld_log" + ;; + *) + echo "Unsupported OS ($OS_ID): CSIT packages NOT INSTALLED!" + ;; + esac + fi +} + +csit_install_hugo() { + local branch="$1" + CSIT_DIR="$DOCKER_CSIT_DIR" + + if [ -f "$CSIT_DIR/VPP_REPO_URL" ] \ + && [ -f "$CSIT_DIR/requirements.txt" ]; then + + local branchname + # use bash variable substitution to replace '/' with '_' to convert from + # vpp to csit branch name nomenclature + branchname="${branch////_}" + local csit_bash_function_dir="$CSIT_DIR/resources/libraries/bash/function" + local bld_log="$DOCKER_BUILD_LOG_DIR" + bld_log="${bld_log}/$FDIOTOOLS_IMAGENAME-$branchname-csit_install_hugo-bld.log" + + description="Install CSIT hugo packages from $branch branch" + echo_log " Starting $description..." + git clean -qfdx + + source "$csit_bash_function_dir"/hugo.sh + go_install 2>&1 | tee -a "$bld_log" + hugo_install 2>&1 | tee -a "$bld_log" + + else + echo_log "ERROR: Missing or invalid CSIT_DIR: '$CSIT_DIR'!" + return 1 + fi +} + +csit_pip_cache() { + local branch="$1" + # ensure PS1 is defined (used by virtualenv activate script) + PS1=${PS1:-"#"} + CSIT_DIR="$DOCKER_CSIT_DIR" + + if [ -f "$CSIT_DIR/VPP_REPO_URL" ] \ + && [ -f "$CSIT_DIR/requirements.txt" ]; then + + local branchname + # use bash variable substitution to replace '/' with '_' to convert from + # vpp to csit branch name nomenclature + branchname="${branch////_}" + local csit_bash_function_dir="$CSIT_DIR/resources/libraries/bash/function" + local bld_log="$DOCKER_BUILD_LOG_DIR" + bld_log="${bld_log}/$FDIOTOOLS_IMAGENAME-$branchname-csit_pip_cache-bld.log" + export PYTHONPATH=$CSIT_DIR + + description="Install CSIT python packages from $branch branch" + echo_log " Starting $description..." 2>&1 | tee -a "$bld_log" + git clean -qfdx 2>&1 | tee -a "$bld_log" + rm -rf "$PYTHONPATH/env" + + # Activate / install CSIT python virtualenv ($CSIT_DIR/requirements.txt) + local common_sh="$csit_bash_function_dir/common.sh" + # shellcheck disable=1090 + source "$common_sh" + activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}/requirements.txt" 2>&1 | tee -a "$bld_log" + + # Install tox python requirements + activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}/tox-requirements.txt" 2>&1 |\ + tee -a "$bld_log" + + # Clean up virtualenv directories + git checkout -q -- . + git clean -qfdx + echo_log " Completed $description!" 2>&1 | tee -a "$bld_log" + else + echo_log "ERROR: Missing or invalid CSIT_DIR: '$CSIT_DIR'!" + return 1 + fi +} + +docker_build_setup_csit() { + if csit_supported_executor_class "$EXECUTOR_CLASS" ; then + if [ ! -d "$DOCKER_CSIT_DIR" ] ; then + echo_log "Cloning CSIT into $DOCKER_CSIT_DIR..." + git clone -q https://gerrit.fd.io/r/csit "$DOCKER_CSIT_DIR" + fi + clean_git_repo "$DOCKER_CSIT_DIR" + fi +} + +csit_dut_generate_docker_build_files() { + local build_files_dir="$DOCKER_BUILD_FILES_DIR" + + mkdir -p "$build_files_dir" + cat <<EOF >"$build_files_dir/supervisord.conf" +[unix_http_server] +file = /tmp/supervisor.sock +chmod = 0777 + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl = unix:///tmp/supervisor.sock + +[supervisord] +pidfile = /tmp/supervisord.pid +identifier = supervisor +directory = /tmp +logfile = /tmp/supervisord.log +loglevel = debug +nodaemon = false + +[program:vpp] +command = /usr/bin/vpp -c /etc/vpp/startup.conf +autostart = false +autorestart = true +redirect_stderr = true +priority = 1 +EOF +} + +csit_builder_generate_docker_build_files() { + local build_files_dir="$DOCKER_BUILD_FILES_DIR" + local dashes="-----" + local dbeg="${dashes}BEGIN" + local dend="${dashes}END" + local pvt="PRIVATE" + local kd="KEY$dashes" + + # TODO: Verify why badkey is required & figure out how to avoid it. + mkdir -p "$build_files_dir" + cat <<EOF >"$build_files_dir/badkey" +$dbeg RSA $pvt $kd +MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM +mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 +TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks +OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh +QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL +Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD +WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw +8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP +3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D +c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb +D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk +HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ +yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V +hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf +negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 +r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX +iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ +l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX +WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P +ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq +mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ +MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL +UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ +wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d +7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 +$dend RSA $pvt $kd +EOF + chmod 600 "$build_files_dir/badkey" + cat <<EOF >"$build_files_dir/sshconfig" +Host 172.17.0.* + StrictHostKeyChecking no + UserKnownHostsFile=/dev/null +EOF +} + +csit_shim_generate_docker_build_files() { + local build_files_dir="$DOCKER_BUILD_FILES_DIR" + # TODO: Verify why badkey is required & figure out how to avoid it. + local badkey='AAAAB3NzaC1yc2EAAAADAQABAAABAQCyUNd/iRk5Ajw4ZBB0gXyjzecEzQHh/MctgvHGJjasqJDkwYyZBrunUorOZ3n82W8VGdd5+eNINCWOM/ERjuaHjnutfade+ocPgZRdk+kEgTvetDVNWIgBd0PMVcnp57jJfx7CZVqTNgGeVQ8OJ2RbJGeOb/EKApQI74IPkAfc0PSieSw5gC0eqEOHb39Awgp0ycrzsUHF/OEicfCmo+6vvrMGenDe7frKUoTKYMWs7l3DOyFC8NaOxhGD3J1Ne5u3A/r4w6mN1HVI0rFwIcoms+t0B4lb2ODWKZiZikQdn8/eqwsmbSEZZsWN3FkshgjPS83+dNqVwB6pPY5Yqte7' + + mkdir -p "$build_files_dir" + # TODO: Verify why badkeypub is required & figure out how to avoid it. + echo "ssh-rsa $badkey ejk@bhima.local" >"$build_files_dir/badkeypub" + + cat <<EOF >"$build_files_dir/sshconfig" +Host 172.17.0.* + StrictHostKeyChecking no + UserKnownHostsFile=/dev/null +EOF + cat <<EOF >"$build_files_dir/wrapdocker" +#!/bin/bash + +# Ensure that all nodes in /dev/mapper correspond to mapped devices currently loaded by the device-mapper kernel driver +dmsetup mknodes + +# First, make sure that cgroups are mounted correctly. +CGROUP=/sys/fs/cgroup +: {LOG:=stdio} + +[ -d \$CGROUP ] || + mkdir \$CGROUP + +mountpoint -q \$CGROUP || + mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup \$CGROUP || { + echo "Could not make a tmpfs mount. Did you use --privileged?" + exit 1 + } + +if [ -d /sys/kernel/security ] && ! mountpoint -q /sys/kernel/security +then + mount -t securityfs none /sys/kernel/security || { + echo "Could not mount /sys/kernel/security." + echo "AppArmor detection and --privileged mode might break." + } +fi + +# Mount the cgroup hierarchies exactly as they are in the parent system. +for SUBSYS in \$(cut -d: -f2 /proc/1/cgroup) +do + [ -d \$CGROUP/\$SUBSYS ] || mkdir \$CGROUP/\$SUBSYS + mountpoint -q \$CGROUP/\$SUBSYS || + mount -n -t cgroup -o \$SUBSYS cgroup \$CGROUP/\$SUBSYS + + # The two following sections address a bug which manifests itself + # by a cryptic "lxc-start: no ns_cgroup option specified" when + # trying to start containers withina container. + # The bug seems to appear when the cgroup hierarchies are not + # mounted on the exact same directories in the host, and in the + # container. + + # Named, control-less cgroups are mounted with "-o name=foo" + # (and appear as such under /proc/<pid>/cgroup) but are usually + # mounted on a directory named "foo" (without the "name=" prefix). + # Systemd and OpenRC (and possibly others) both create such a + # cgroup. To avoid the aforementioned bug, we symlink "foo" to + # "name=foo". This shouldn't have any adverse effect. + echo \$SUBSYS | grep -q ^name= && { + NAME=\$(echo \$SUBSYS | sed s/^name=//) + ln -s \$SUBSYS \$CGROUP/\$NAME + } + + # Likewise, on at least one system, it has been reported that + # systemd would mount the CPU and CPU accounting controllers + # (respectively "cpu" and "cpuacct") with "-o cpuacct,cpu" + # but on a directory called "cpu,cpuacct" (note the inversion + # in the order of the groups). This tries to work around it. + [ \$SUBSYS = cpuacct,cpu ] && ln -s \$SUBSYS \$CGROUP/cpu,cpuacct +done + +# Note: as I write those lines, the LXC userland tools cannot setup +# a "sub-container" properly if the "devices" cgroup is not in its +# own hierarchy. Let's detect this and issue a warning. +grep -q :devices: /proc/1/cgroup || + echo "WARNING: the 'devices' cgroup should be in its own hierarchy." +grep -qw devices /proc/1/cgroup || + echo "WARNING: it looks like the 'devices' cgroup is not mounted." + +# Now, close extraneous file descriptors. +pushd /proc/self/fd >/dev/null +for FD in * +do + case "\$FD" in + # Keep stdin/stdout/stderr + [012]) + ;; + # Nuke everything else + *) + eval exec "\$FD>&-" + ;; + esac +done +popd >/dev/null + + +# If a pidfile is still around (for example after a container restart), +# delete it so that docker can start. +rm -rf /var/run/docker.pid + +# If we were given a PORT environment variable, start as a simple daemon; +# otherwise, spawn a shell as well +if [ "\$PORT" ] +then + exec dockerd -H 0.0.0.0:\$PORT -H unix:///var/run/docker.sock \ + \$DOCKER_DAEMON_ARGS +else + if [ "\$LOG" == "file" ] + then + dockerd \$DOCKER_DAEMON_ARGS &>/var/log/docker.log & + else + dockerd \$DOCKER_DAEMON_ARGS & + fi + (( timeout = 60 + SECONDS )) + until docker info >/dev/null 2>&1 + do + if (( SECONDS >= timeout )); then + echo 'Timed out trying to connect to internal docker host.' >&2 + break + fi + sleep 1 + done + [[ \$1 ]] && exec "\$@" + exec bash --login +fi +EOF +} diff --git a/docker/scripts/lib_vpp.sh b/docker/scripts/lib_vpp.sh new file mode 100644 index 000000000..39e2ca192 --- /dev/null +++ b/docker/scripts/lib_vpp.sh @@ -0,0 +1,102 @@ +# lib_vpp.sh - Docker build script VPP library. +# For import only. + +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Don't import more than once. +if [ -n "$(alias lib_vpp_imported 2> /dev/null)" ] ; then + return 0 +fi +alias lib_vpp_imported=true + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. $CIMAN_DOCKER_SCRIPTS/lib_common.sh + + +VPP_SUPPORTED_EXECUTOR_CLASSES="builder" +vpp_supported_executor_class() { + if ! grep -q "${1:-}" <<< $VPP_SUPPORTED_EXECUTOR_CLASSES ; then + return 1 + fi + return 0 +} + +make_vpp() { + local target=$1 + local branch=${2:-"master"} + local branchname="$(echo $branch | sed -e 's,/,_,')" + local bld_log="$DOCKER_BUILD_LOG_DIR" + bld_log="${bld_log}/$FDIOTOOLS_IMAGENAME-$branchname" + bld_log="${bld_log}-make_vpp_${target}-bld.log" + + makefile_target="^${target}:" + if [ -z "$(grep $makefile_target Makefile)" ] ; then + echo "Make target '$target' does not exist in VPP branch '$branch'!" + return + fi + git clean -qfdx + description="'make UNATTENDED=yes $target' in $(pwd) ($branch)" + echo_log -e " Starting $description..." + make UNATTENDED=yes $target 2>&1 | tee -a "$bld_log" + git checkout -q -- . + echo_log " Completed $description!" +} + +make_vpp_test() { + local target=$1 + local branch=${2:-"master"} + local branchname="$(echo $branch | sed -e 's,/,_,')" + local bld_log="$DOCKER_BUILD_LOG_DIR" + bld_log="${bld_log}/$FDIOTOOLS_IMAGENAME-$branchname" + bld_log="${bld_log}-make_vpp_test_${target}-bld.log" + + makefile_target="^${target}:" + if [ -z "$(grep -e $makefile_target test/Makefile)" ] ; then + echo "Make test target '$target' does not exist in VPP branch '$branch'!" + return + fi + git clean -qfdx + description="'make -C test $target' in $(pwd) ($branch)" + echo_log " Starting $description..." + make WS_ROOT="$DOCKER_VPP_DIR" BR="$DOCKER_VPP_DIR/build-root" \ + TEST_DIR="$DOCKER_VPP_DIR/test" -C test $target 2>&1 | tee -a $bld_log + remove_pyc_files_and_pycache_dirs + git checkout -q -- . + echo_log " Completed $description!" +} + +docker_build_setup_vpp() { + if vpp_supported_executor_class "$EXECUTOR_CLASS" ; then + if [ ! -d "$DOCKER_VPP_DIR" ] ; then + echo_log "Cloning VPP into $DOCKER_VPP_DIR..." + git clone -q https://gerrit.fd.io/r/vpp $DOCKER_VPP_DIR + fi + clean_git_repo $DOCKER_VPP_DIR + fi +} + +# Branches must be listed in chronological order -- oldest stable branch +# first and master last. +# +# Note: CI Jobs for each architecture are maintained in +# .../ci-management/jjb/vpp/vpp.yaml +# All OS's and branches are included in the 'os' and 'stream' +# definitions respectively, then the exclude list maintained +# to create an enumerated set of jobs jobs that match the +# definitions here. +declare -A VPP_BRANCHES +VPP_BRANCHES["debian-11"]="stable/2310 stable/2402 master" +VPP_BRANCHES["ubuntu-20.04"]="stable/2310 stable/2402 master" +VPP_BRANCHES["ubuntu-22.04"]="stable/2310 stable/2402 master" +export VPP_BRANCHES diff --git a/docker/scripts/update_dockerhub_prod_tags.sh b/docker/scripts/update_dockerhub_prod_tags.sh new file mode 100755 index 000000000..01dac644c --- /dev/null +++ b/docker/scripts/update_dockerhub_prod_tags.sh @@ -0,0 +1,402 @@ +#! /bin/bash + +# Copyright (c) 2022 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail +shopt -s extglob + +# Log all output to stdout & stderr to a log file +logname="/tmp/$(basename $0).$(date -u +%Y_%m_%d_%H%M%S).log" +echo -e "\n*** Logging output to $logname ***\n" +exec > >(tee -a $logname) 2>&1 + +export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" + +# Global variables +long_bar="################################################################" +short_bar="-----" +image_not_found="" +image_user="" +image_repo="" +image_version="" +image_arch="" +image_name_prod="" +image_name_prev="" +image_name_new="" +image_realname="" +image_realname_prod="" +image_realname_prev="" +image_tags="" +image_tags_prod="" +image_tags_prev="" +image_tags_new="" +docker_id_prod="" +docker_id_prev="" +docker_id_new="" +digest_prod="" +digest_prev="" +digest_new="" +restore_cmd="" + +usage() { + local script="$(basename $0)" + echo + echo "Usage: $script r[evert] <prod image>" + echo " $script p[romote] <new image> [<new image>]" + echo " $script i[nspect] <prod image>" + echo + echo " revert: swaps 'prod-<arch>' and 'prod-prev-<arch>' images" + echo " <prod image>: e.g. fdiotools/builder-ubuntu2204:prod-x86_64" + echo + echo " promote: moves 'prod-<arch>' image to 'prod-prev-<arch>' tag and" + echo " tags <new image> with 'prod-<arch>'" + echo " <new image>: e.g. fdiotools/builder-ubuntu2204:2022_07_23_151655-x86_64" + echo " inspect: prints out all tags for prod-<arch> and prod-prev-<arch>" + echo + exit 1 +} + +echo_restore_cmd() { + echo -e "\n$long_bar\n" + echo "To restore tags to original state, issue the following command:" + echo -e "\n$restore_cmd\n\n$long_bar\n" +} + +push_to_dockerhub() { + echo_restore_cmd + for image in "$@" ; do + set +e + echo "Pushing '$image' to docker hub..." + if ! docker push "$image" ; then + echo "ERROR: 'docker push $image' failed!" + exit 1 + fi + done +} + +parse_image_name() { + image_user="$(echo $1 | cut -d'/' -f1)" + image_repo="$(echo $1 | cut -d'/' -f2 | cut -d':' -f1)" + local tag="$(echo $1 | cut -d':' -f2)" + image_version="$(echo $tag | cut -d'-' -f1)" + image_arch="$(echo $tag | sed -e s/$image_version-//)" + image_name_new="${image_user}/${image_repo}:${image_version}-${image_arch}" + if [ "$1" != "$image_name_new" ] ; then + echo "ERROR: Image name parsing failed: $1 != '$image_name_new'" + usage + fi + if [[ "$image_version" =~ "prod" ]] ; then + image_name_new="" + fi + image_name_prod="${image_user}/${image_repo}:prod-${image_arch}" + image_name_prev="${image_user}/${image_repo}:prod-prev-${image_arch}" +} + +format_image_tags() { + # Note: 'grep $image_arch' & grep -v 'prod-curr' is required due to a + # bug in docker hub which returns old tags which were deleted via + # the webUI, but are still retrieved by 'docker pull -a' + image_tags="$(docker images | grep $1 | grep $image_arch | grep -v prod-curr | sort -r | mawk '{print $1":"$2}' | tr '\n' ' ')" + image_realname="$(docker images | grep $1 | grep $image_arch | sort -r | grep -v prod | mawk '{print $1":"$2}' || true)" + if [ -z "${image_realname:-}" ] ; then + image_realname="$image_tags" + fi +} + +get_image_id_tags() { + for image in "$image_name_new" "$image_name_prod" "$image_name_prev" ; do + if [ -z "$image" ] ; then + continue + fi + # ensure image exists + set +e + local image_found="$(docker images | mawk '{print $1":"$2}' | grep $image)" + set -e + if [ -z "$image_found" ] ; then + if [ "$image" = "$image_name_prev" ] ; then + if [ "$action" = "revert" ] ; then + echo "ERROR: Image '$image' not found!" + echo "Unable to revert production image '$image_name_prod'!" + usage + else + continue + fi + else + echo "ERROR: Image '$image' not found!" + usage + fi + fi + set +e + local id="$(docker image inspect $image | mawk -F':' '/Id/{print $3}')" + local digest="$(docker image inspect $image | grep -A1 RepoDigests | grep -v RepoDigests | mawk -F':' '{print $2}')" + local retval="$?" + set -e + if [ "$retval" -ne "0" ] ; then + echo "ERROR: Docker ID not found for '$image'!" + usage + fi + if [ "$image" = "$image_name_prod" ] ; then + docker_id_prod="${id::12}" + digest_prod="${digest::12}" + format_image_tags "$docker_id_prod" + image_tags_prod="$image_tags" + if [ -z "$image_realname_prod" ] ; then + image_realname_prod="$image_realname" + fi + elif [ "$image" = "$image_name_prev" ] ; then + docker_id_prev="${id::12}" + digest_prev="${digest::12}" + format_image_tags "$docker_id_prev" + image_tags_prev="$image_tags" + if [ -z "$image_realname_prev" ] ; then + image_realname_prev="$image_realname" + fi + else + docker_id_new="${id::12}" + digest_new="${digest::12}" + format_image_tags "$docker_id_new" "NEW" + image_tags_new="$image_tags" + fi + done + if [ -z "$restore_cmd" ] ; then + restore_cmd="sudo $0 p $image_realname_prev $image_realname_prod" + fi +} + +get_all_tags_from_dockerhub() { + local dh_repo="$image_user/$image_repo" + echo -e "Pulling all tags from docker hub repo '$dh_repo':\n$long_bar" + if ! docker pull -a "$dh_repo" ; then + echo "ERROR: Repository '$dh_repo' not found on docker hub!" + usage + fi + echo "$long_bar" +} + +verify_image_version_date_format() { + version="$1" + local ver_regex="^[0-9]{4}_[0-1][0-9]_[0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0-9]_UTC$" + if [[ "$version" =~ $ver_regex ]]; then + return 0 + fi + return 1 +} + +verify_image_name() { + image_not_found="" + # Invalid user + if [ "$image_user" != "fdiotools" ] ; then + image_not_found="true" + echo "ERROR: invalid user '$image_user' in '$image_name_new'!" + fi + # Invalid version + if [ -z "$image_not_found" ] \ + && [ "$image_version" != "prod" ] \ + && ! verify_image_version_date_format "$image_version" ]] ; then + image_not_found="true" + echo "ERROR: invalid version '$image_version' in '$image_name_new'!" + fi + # Invalid arch + if [ -z "$image_not_found" ] \ + && ! [[ "$EXECUTOR_ARCHS" =~ .*"$image_arch".* ]] ; then + image_not_found="true" + echo "ERROR: invalid arch '$image_arch' in '$image_name_new'!" + fi + if [ -n "$image_not_found" ] ; then + echo "ERROR: Invalid image '$image_name_new'!" + usage + fi +} + +docker_tag_image() { + echo ">>> docker tag $1 $2" + set +e + docker tag "$1" "$2" + local retval="$?" + set -e + if [ "$retval" -ne "0" ] ; then + echo "WARNING: 'docker tag $1 $2' failed!" + fi +} + +docker_rmi_tag() { + set +e + echo ">>> docker rmi $1" + docker rmi "$1" + local retval="$?" + set -e + if [ "$retval" -ne "0" ] ; then + echo "WARNING: 'docker rmi $1' failed!" + fi +} + +print_image_list() { + if [ -z "$2" ] ; then + echo "$1 Image Not Found" + return + fi + echo "$1 (Id $2, Digest $3):" + for image in $4 ; do + echo -e "\t$image" + done +} + +inspect_images() { + echo -e "\n${1}Production Docker Images:" + echo "$short_bar" + if [ -n "$image_tags_new" ] ; then + print_image_list "NEW" "$docker_id_new" "$digest_new" "$image_tags_new" + echo + fi + print_image_list "prod-$image_arch" "$docker_id_prod" "$digest_prod" \ + "$image_tags_prod" + echo + print_image_list "prod-prev-$image_arch" "$docker_id_prev" "$digest_prev" \ + "$image_tags_prev" + echo -e "$short_bar\n" +} + +revert_prod_image() { + inspect_images "EXISTING " + docker_tag_image "$docker_id_prod" "$image_name_prev" + docker_tag_image "$docker_id_prev" "$image_name_prod" + get_image_id_tags + inspect_images "REVERTED " + + local yn="" + while true; do + read -p "Push Reverted tags to '$image_user/$image_repo' (yes/no)? " yn + case ${yn:0:1} in + y|Y ) + break ;; + n|N ) + echo -e "\nABORTING REVERT!\n" + docker_tag_image $docker_id_prev $image_name_prod + docker_tag_image $docker_id_prod $image_name_prev + get_image_id_tags + inspect_images "RESTORED LOCAL " + exit 1 ;; + * ) + echo "Please answer yes or no." ;; + esac + done + echo + push_to_dockerhub $image_name_prev $image_name_prod + inspect_images "" + echo_restore_cmd +} + +promote_new_image() { + inspect_images "EXISTING " + docker_tag_image "$docker_id_prod" "$image_name_prev" + docker_tag_image "$docker_id_new" "$image_name_prod" + get_image_id_tags + inspect_images "PROMOTED " + + local yn="" + while true; do + read -p "Push promoted tags to '$image_user/$image_repo' (yes/no)? " yn + case "${yn:0:1}" in + y|Y ) + break ;; + n|N ) + echo -e "\nABORTING PROMOTION!\n" + docker_tag_image "$docker_id_prev" "$image_name_prod" + local restore_both="$(echo $restore_cmd | mawk '{print $5}')" + if [[ -n "$restore_both" ]] ; then + docker_tag_image "$image_realname_prev" "$image_name_prev" + else + docker_rmi_tag "$image_name_prev" + image_name_prev="" + docker_id_prev="" + fi + get_image_id_tags + inspect_images "RESTORED " + exit 1 ;; + * ) + echo "Please answer yes or no." ;; + esac + done + echo + push_to_dockerhub "$image_name_new" "$image_name_prev" "$image_name_prod" + inspect_images "" + echo_restore_cmd +} + +must_be_run_as_root_or_docker_group + +# Validate arguments +num_args="$#" +if [ "$num_args" -lt "1" ] ; then + usage +fi +action="" +case "$1" in + r?(evert)) + action="revert" + if [ "$num_args" -ne "2" ] ; then + echo "ERROR: Invalid number of arguments: $#" + usage + fi ;; + p?(romote)) + if [ "$num_args" -eq "2" ] || [ "$num_args" -eq "3" ] ; then + action="promote" + else + echo "ERROR: Invalid number of arguments: $#" + usage + fi ;; + i?(nspect)) + action="inspect" + if [ "$num_args" -ne "2" ] ; then + echo "ERROR: Invalid number of arguments: $#" + usage + fi ;; + *) + echo "ERROR: Invalid option '$1'!" + usage ;; +esac +shift +docker login >& /dev/null + +# Update local tags +tags_to_push="" +for image in "$@" ; do + parse_image_name "$image" + verify_image_name "$image" + get_all_tags_from_dockerhub + get_image_id_tags + if [ "$action" = "promote" ] ; then + if [ -n "$image_name_new" ] ; then + promote_new_image + else + echo "ERROR: No new image specified to promote!" + usage + fi + elif [ "$action" = "revert" ] ; then + if [ "$image_version" = "prod" ] ; then + revert_prod_image + else + echo "ERROR: Non-production image '$image' specified!" + usage + fi + else + if [ "$image_version" = "prod" ] ; then + inspect_images "" + else + echo "ERROR: Non-production image '$image' specified!" + usage + fi + fi +done diff --git a/docker/vpp/vpp-arm-centos8/Dockerfile b/docker/vpp/vpp-arm-centos8/Dockerfile deleted file mode 100644 index 5f1036a50..000000000 --- a/docker/vpp/vpp-arm-centos8/Dockerfile +++ /dev/null @@ -1,367 +0,0 @@ -FROM centos:8 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP centos8 OS build image" -LABEL Vendor="cisco.com" -LABEL Version="0.01" - -# Setup the environment - -RUN mkdir /workspace && mkdir -p /etc/ssh && mkdir -p /var/ccache - -ENV CCACHE_DIR=/var/ccache -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -ENV NOTVISIBLE "in users profile" - -#SSH timeout -#RUN touch /etc/ssh/ssh_config -RUN echo "TCPKeepAlive true" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveCountMax 30" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveInterval 10" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -#module -RUN echo uio_pci_generic >> /etc/modules - - -#RUN yum update -y && yum install -y deltarpm && yum clean all -#RUN yum update -y && yum install -y @base https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && yum clean all -RUN yum update -y && yum install -y epel-release && yum clean all -RUN yum update -y && yum install -y --enablerepo=epel \ - chrpath \ - git \ -# git-review \ - java-*-openjdk-devel \ - jq \ -# lcov \ - make \ -# nasm \ - sudo \ - unzip \ - xz \ - wget \ - && yum clean all - -#packer install -#RUN wget https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip && unzip packer_1.1.3_linux_amd64.zip -d /usr/local/bin/ && mv /usr/local/bin/packer /usr/local/bin/packer.io - - -RUN yum update -y && yum install -y --enablerepo=epel \ - asciidoc \ - apr-devel \ - cpp \ -# c++ \ - cmake \ -# dblatex \ -# doxygen \ - epel-rpm-macros \ - gcc \ - graphviz \ - indent \ - kernel-devel \ - libxml2 \ - libffi-devel \ - make \ - openssl-devel \ - python2-devel \ - python2-virtualenv \ - python2-setuptools \ -# python2-cffi \ - python2-pip \ - python2-jinja2 \ - # python2-sphinx \ - source-highlight \ - rpm \ - valgrind \ - yum-utils \ - && yum clean all - -RUN yum update -y && yum install -y --enablerepo=epel \ -# ganglia-devel \ - libconfuse-devel \ - mock \ - && yum clean all - -#RUN alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java -#RUN alternatives --set java_sdk_openjdk /usr/lib/jvm/java-1.7.0-openjdk.x86_64 - -RUN pip2 install --upgrade pip -RUN pip2 install pycap scapy - -RUN yum update -y && yum install -y --enablerepo=epel \ - autoconf \ - automake \ - bison \ - ccache \ - cscope \ - curl \ - dkms \ - git \ -# git-review \ - libtool \ -# libconfuse-dev \ -# libpcap-devel \ - libcap-devel \ - scapy \ - && yum clean all - -#puppet -RUN yum update -y && yum install -y --enablerepo=epel \ - libxml2-devel \ - libxslt-devel \ - ruby-devel \ - zlib-devel \ - gcc-c++ \ - && yum clean all - -#outdated ruby pos -RUN yum update -y && yum install -y --enablerepo=epel \ - git-core \ - zlib \ - zlib-devel \ - gcc-c++ \ - patch \ - readline \ - readline-devel \ -# libyaml-devel \ - libffi-devel \ - openssl-devel \ - make \ - bzip2 \ - autoconf \ - automake \ - libtool \ - bison \ - curl \ - sqlite-devel \ - && yum clean all - -ENV PATH="/root/.rbenv/bin:${PATH}" -ENV PATH="/root/.rbenv/shims:${PATH}" - -RUN curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash - -RUN rbenv init - -RUN rbenv install 2.5.1 && rbenv global 2.5.1 -#&& echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && echo 'eval "$(rbenv init -)"' >> ~/.bashrc && - - -RUN gem install rake -RUN gem install package_cloud - -RUN yum update -y && yum install -y --enablerepo=epel \ - apr-util \ - byacc \ - diffstat \ - dwz \ - flex \ - gcc-gfortran \ - gettext-devel \ -# glibc-static \ - intltool \ -# nasm \ - patchutils \ -# rcs \ - redhat-lsb \ - redhat-rpm-config \ - rpm-build \ - rpm-sign \ - subversion \ - swig \ - systemtap \ - && yum clean all - -#RUN yum update -y && yum install -y --enablerepo=epel-debuginfo --enablerepo=base-debuginfo \ -# RUN yum update -y && yum install -y --enablerepo=epel-debuginfo \ -# e2fsprogs-debuginfo \ -# glibc-debuginfo \ -# krb5-debuginfo \ -# nss-softokn-debuginfo \ -# openssl-debuginfo \ -# yum-plugin-auto-update-debug-info \ -# zlib-debuginfo \ -# glibc-debuginfo-common \ -# && yum clean all - -RUN yum update -y && yum groupinstall -y "development tools" \ - && yum clean all -# Libraries needed during compilation to enable all features of Python: -RUN yum update -y \ - && yum install -y --enablerepo=epel \ - zlib-devel \ - bzip2-devel \ - openssl-devel \ - ncurses-devel \ - sqlite-devel \ - readline-devel \ - tk-devel \ - gdbm-devel \ -# db4-devel \ -# libpcap-devel \ - xz-devel \ - expat-devel \ - wget \ - clang \ - llvm \ - numactl-devel \ - check-devel \ - check \ - boost \ - boost-devel \ - mbedtls-devel \ - xmlstarlet \ - # centos-release-scl \ - yamllint \ - && yum clean all - -# Python 2.7.13: -# RUN wget http://python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz \ -# && tar xf Python-2.7.13.tar.xz \ -# && cd Python-2.7.13 \ -# && ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" \ -# && make \ -# && make install \ -# && strip /usr/local/lib/libpython2.7.so.1.0 \ -# && cd .. \ -# && rm -rf Python* \ -# && wget https://bootstrap.pypa.io/get-pip.py \ -# && /usr/local/bin/python get-pip.py - -RUN pip2 install six scapy==2.3.3 pyexpect subprocess32 cffi git+https://github.com/klement/py-lispnetworking@setup ply -RUN mkdir -p /w/workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -# RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -# RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -# RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -# RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -# RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz - -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash - - -#include bits from csit-sut -RUN yum install -y --enablerepo=epel \ - # general tools -# bridge-utils \ - cloud-init \ - net-tools \ - openssh-server \ - pciutils \ - rsyslog \ -# ssh \ - sudo \ - supervisor \ - tar \ - vim \ - wget \ -# python-devel \ - openssh-clients \ - # csit requirements - gcc \ - cmake3 \ -# docker-1.13 \ -# libpcap-devel \ -# libpython-devel-2.7 \ -# libpython-devel \ -# openjdk-8-jdk-headless \ -# python-pip \ -# python-devel-2.7 \ -# python-virtualenv \ - socat \ - strongswan \ - unzip \ - tcpdump \ - zlib-devel \ - # vpp requirements -# ca-certificates-2018 \ -# libapr1 \ - mbedtls \ - mbedtls-devel \ -# libnuma1 \ -# python-cffi \ -# python36-cffi \ -# python-enum34 \ - git \ - sshpass \ -# facter \ -# devtoolset-7 \ -# ninja-build \ - python3-devel \ -# python36-jsonschema \ - selinux-policy \ - selinux-policy-devel \ -# mbedtls-debuginfo \ - && yum clean all - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -# Fix permissions -# RUN chown root:syslog /var/log \ -# && chmod 755 /etc/default - -# Create directory structure -RUN mkdir -p /tmp/dumps \ - && mkdir -p /var/cache/vpp/python \ - && mkdir -p /var/run/sshd - -# CSIT PIP pre-cache -RUN pip install \ - docopt==0.6.2 \ - ecdsa==0.13 \ - enum34==1.1.2 \ - ipaddress==1.0.16 \ - paramiko==1.16.0 \ - pexpect==4.6.0 \ - ptyprocess==0.6.0 \ - pycrypto==2.6.1 \ - pykwalify==1.5.0 \ -# pypcap==1.1.5 \ - python-dateutil==2.4.2 \ - PyYAML==3.11 \ - requests==2.9.1 \ - robotframework==2.9.2 \ - scapy==2.3.3 \ - scp==0.10.2 \ - six==1.12.0 \ - dill==0.2.8.2 \ - numpy==1.14.5 \ - scipy==1.1.0 - -# VPP PIP pre-cache -RUN pip install \ - aenum - -# SSH settings -RUN echo 'root:Csit1234' | chpasswd \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config \ - && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \ - && echo "export VISIBLE=now" >> /etc/profile - -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa -#RUN mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' - -#include bits from registry image -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp #&& mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -ADD files/jenkins /etc/sudoers.d/jenkins -ADD files/supervisord.conf /etc/supervisord/supervisord.conf -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} - -#csit-sut ssh bits for the end -EXPOSE 22 - -CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisord/supervisord.conf; /usr/sbin/sshd -D"] diff --git a/docker/vpp/vpp-arm-centos8/files/badkey b/docker/vpp/vpp-arm-centos8/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-arm-centos8/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-arm-centos8/files/fdio-master.repo b/docker/vpp/vpp-arm-centos8/files/fdio-master.repo deleted file mode 100644 index b3b279fed..000000000 --- a/docker/vpp/vpp-arm-centos8/files/fdio-master.repo +++ /dev/null @@ -1,5 +0,0 @@ -[fdio-master] -name=fd.io master branch latest merge -baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7 -enabled=1 -gpgcheck=0 diff --git a/docker/vpp/vpp-arm-centos8/files/jenkins b/docker/vpp/vpp-arm-centos8/files/jenkins deleted file mode 100644 index 92f8a3435..000000000 --- a/docker/vpp/vpp-arm-centos8/files/jenkins +++ /dev/null @@ -1 +0,0 @@ -jenkins ALL=(root) NOPASSWD:ALL diff --git a/docker/vpp/vpp-arm-centos8/files/lf-update-java-alternatives b/docker/vpp/vpp-arm-centos8/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-arm-centos8/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-arm-centos8/files/sshconfig b/docker/vpp/vpp-arm-centos8/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-arm-centos8/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-arm-centos8/files/supervisord.conf b/docker/vpp/vpp-arm-centos8/files/supervisord.conf deleted file mode 100644 index 7e72d666a..000000000 --- a/docker/vpp/vpp-arm-centos8/files/supervisord.conf +++ /dev/null @@ -1,23 +0,0 @@ -[unix_http_server] -file = /run/supervisor.sock - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl = unix:///run/supervisor.sock - -[supervisord] -pidfile = /run/supervisord.pid -identifier = supervisor -directory = /run -logfile=/var/log/supervisord.log -loglevel=debug -nodaemon=false - -[program:vpp] -command=/usr/bin/vpp -c /etc/vpp/startup.conf -autostart=false -autorestart=true -redirect_stderr=true -priority=1 diff --git a/docker/vpp/vpp-arm-ubuntu16/Dockerfile b/docker/vpp/vpp-arm-ubuntu16/Dockerfile deleted file mode 100644 index 0e0a4e09e..000000000 --- a/docker/vpp/vpp-arm-ubuntu16/Dockerfile +++ /dev/null @@ -1,179 +0,0 @@ -FROM arm64v8/ubuntu:16.04 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="arm VPP ubuntu 16 baseline" -LABEL Vendor="cisco.com" -LABEL Version="3.0" - - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -CMD [] -RUN echo 'foo' || true -RUN apt-get update || true -RUN echo 'bar' -RUN apt-get install -y -qq \ - bash \ - bash-completion \ - bc \ - biosdevname \ - ca-certificates \ - cloud-init \ - cron \ - curl \ - dbus \ - dstat \ - ethstatus \ - file \ - fio \ - htop - #\ - # ifenslave \ - # ioping \ - # iotop \ - # iperf \ - # iptables \ - # iputils-ping \ - # less \ - # locate \ - # lsb-release \ - # lsof \ - # make \ - # man-db \ - # mdadm \ - # mg \ - # mosh \ - # mtr \ - # multipath-tools \ - # nano \ - # net-tools \ - # netcat \ - # nmap \ - # ntp \ - # ntpdate \ - # open-iscsi \ - # python-apt \ - # python-pip \ - # python-yaml \ - # rsync \ - # rsyslog \ - # screen \ - # shunit2 \ - # socat \ - # software-properties-common \ - # ssh \ - # sudo \ - # sysstat \ - # tar \ - # tcpdump \ - # tmux \ - # traceroute \ - # unattended-upgrades \ - # uuid-runtime \ - # vim \ - # wget \ - # apt-transport-https \ - # default-jre-headless \ - # chrpath \ - # nasm \ - # && rm -rf /var/lib/apt/lists/* - -RUN add-apt-repository -y ppa:openjdk-r/ppa - -RUN apt-get -q update && \ - apt-get install -y -qq \ - unzip \ - xz-utils \ - puppet \ - git \ - git-review \ - libxml-xpath-perl \ - make \ - wget \ - openjdk-8-jdk \ - jq \ - libffi-dev \ - python-all \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - autoconf \ - automake \ - autotools-dev \ - bison \ - ccache \ - cscope \ - debhelper \ - dh-apparmor \ - dh-systemd \ - dkms \ - ed \ - exuberant-ctags \ - gettext \ - gettext-base \ - intltool-debian \ - indent \ - lcov \ - libapr1 \ - libapr1-dev \ - libasprintf-dev \ - libbison-dev \ - libconfuse-common \ - libconfuse-dev \ - libconfuse0 \ - libcroco3 \ - libexpat1-dev \ - libganglia1 \ - libganglia1-dev \ - libgd-gd2-perl \ - libgettextpo-dev \ - libgettextpo0 \ - libltdl-dev \ - libmail-sendmail-perl \ - libpython-dev \ - libpython2.7-dev \ - libsctp-dev \ - libsigsegv2 \ - libssl-dev \ - libssl-doc \ - libsys-hostname-long-perl \ - libtool \ - libunistring0 \ - m4 \ - pkg-config \ - po-debconf \ - python-dev \ - python-virtualenv \ - python2.7-dev \ - uuid-dev \ - zlib1g-dev \ - locales \ - llvm \ - clang \ - clang-format \ - libboost-all-dev \ - ruby-dev \ - xmlstarlet \ - && rm -rf /var/lib/apt/lists/* - - -# Configure locales -RUN locale-gen en_US.UTF-8 && \ - dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -RUN mkdir /workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' - -RUN gem install rake -RUN gem install package_cloud -RUN pip install scapy -RUN git clone https://gerrit.fd.io/r/vpp /workspace/ubuntu16 && cd /workspace/ubuntu16; make UNATTENDED=yes install-dep && rm -rf /workspace/ubuntu16 && rm -rf /var/lib/apt/lists/* - - - - diff --git a/docker/vpp/vpp-arm-ubuntu18/Dockerfile b/docker/vpp/vpp-arm-ubuntu18/Dockerfile deleted file mode 100644 index 28f5b505d..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/Dockerfile +++ /dev/null @@ -1,325 +0,0 @@ -FROM arm64v8/ubuntu:18.04 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="arm VPP ubuntu 18 baseline" -LABEL Vendor="arm.com" -LABEL Version="1.1" - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV DOCKER_TEST=True -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python -ENV VPP_ZOMBIE_NOCHECK=1 - -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa - -RUN apt-get update && apt-get install -y -qq \ - bash \ - bash-completion \ - bc \ -# biosdevname \ - ca-certificates \ - cloud-init \ - cron \ - curl \ - dbus \ - dstat \ - ethstatus \ - file \ - fio \ - htop \ - #\ - # ifenslave \ - # ioping \ - # iotop \ - # iperf \ - # iptables \ - # iputils-ping \ - # less \ - # locate \ - # lsb-release \ - # lsof \ - # make \ - # man-db \ - # mdadm \ - # mg \ - # mosh \ - # mtr \ - # multipath-tools \ - # nano \ - # net-tools \ - # netcat \ - # nmap \ - # ntp \ - # ntpdate \ - # open-iscsi \ - # python-apt \ - python-pip \ - # python-yaml \ - # rsync \ - rsyslog \ - # screen \ - # shunit2 \ - # socat \ - # software-properties-common \ - # ssh \ - sshpass \ - sudo \ - # sysstat \ - # tar \ - # tcpdump \ - # tmux \ - # traceroute \ - # unattended-upgrades \ - # uuid-runtime \ - # vim \ - # wget \ - apt-transport-https \ - # default-jre-headless \ - # chrpath \ - # nasm \ - && rm -rf /var/lib/apt/lists/* - -RUN add-apt-repository -y ppa:openjdk-r/ppa - -RUN apt-get -q update && \ - apt-get install -y -qq \ - unzip \ - xz-utils \ - puppet \ - git \ - git-review \ - libxml-xpath-perl \ - make \ - wget \ - openjdk-8-jdk \ - openjdk-11-jdk \ - jq \ - libffi-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - autoconf \ - automake \ - autotools-dev \ - bison \ - ccache \ - cscope \ - debhelper \ - dh-apparmor \ - dh-systemd \ - dkms \ - ed \ - exuberant-ctags \ - gfortran \ - gettext \ - gettext-base \ - intltool-debian \ - indent \ - lcov \ - libapr1 \ - libapr1-dev \ - libasprintf-dev \ - libatlas-base-dev \ - libbison-dev \ - libconfuse-doc \ - libconfuse-dev \ - libcroco3 \ - libexpat1-dev \ - libganglia1 \ - libganglia1-dev \ - libgd-gd2-perl \ - libgettextpo-dev \ - libgettextpo0 \ - libltdl-dev \ - libmail-sendmail-perl \ - libmbedtls-dev \ - libpcap-dev \ - libpython-dev \ - libpython2.7-dev \ - libsctp-dev \ - libsigsegv2 \ - libssl-dev \ - libssl-doc \ - libsys-hostname-long-perl \ - libtool \ - m4 \ - pkg-config \ - po-debconf \ - uuid-dev \ - zlib1g-dev \ - locales \ - llvm \ - clang \ - clang-format \ - clang-5.0 \ - libboost-all-dev \ - ruby-dev \ - gdb \ - iperf3 \ - cmake \ - cmake-data \ - libarchive13 \ - liblzo2-2 \ - librhash0 \ - libuv1 \ - ninja-build \ - cmake-doc \ - lrzip \ - xmlstarlet \ - g++-8 \ - gcc-8 \ - libsubunit-dev \ - libsubunit0 \ - yamllint \ - libibverbs-dev \ - apt-utils \ - python-all \ - python-apt \ - python-cffi \ - python-cffi-backend \ - python-dev \ - python-enum34 \ - python-pip \ - python-ply \ - python-setuptools \ - python-virtualenv \ - python-yaml \ - python3-all \ - python3-apt \ - python3-cffi \ - python3-cffi-backend \ - python3-dev \ - python3-pip \ - python3-ply \ - python3-setuptools \ - python3-virtualenv \ - python3-venv \ - # docs - python-markupsafe \ - python-jinja2 \ - python-pyparsing \ - doxygen \ - graphviz \ - && rm -rf /var/lib/apt/lists/* - -#Repoint clang -RUN update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 1000 && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 1000 -RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 - -# Configure locales -RUN locale-gen en_US.UTF-8 && \ - dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -RUN mkdir /tmp/dumps \ - && mkdir /workspace \ - && mkdir -p /w/workspace \ - && mkdir -p /var/ccache \ - && ln -s /var/ccache /tmp/ccache \ - && mkdir /home/jenkins \ - && mkdir -p /var/cache/vpp/python - -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' - -# packagecloud -RUN curl -L https://packagecloud.io/fdio/master/gpgkey |sudo apt-key add - -RUN gem install rake -RUN gem install package_cloud -RUN gem install facter -ADD files/pc_push /usr/local/bin/pc_push -ADD files/packagecloud /root/.packagecloud -ADD files/packagecloud_api /root/packagecloud_api - -RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash - -# VPP PIP pre-cahce -RUN pip install \ - six \ - scapy==2.3.3 \ - pyexpect \ - subprocess32 \ - cffi \ - git+https://github.com/klement/py-lispnetworking@setup \ - pycodestyle - -# CSIT PIP pre-cache -RUN pip3 install \ - ecdsa==0.13.3 \ - paramiko==2.6.0 \ - pycrypto==2.6.1 \ - pypcap==1.2.3 \ - PyYAML==5.1.1 \ - requests==2.22.0 \ - robotframework==3.1.2 \ - scapy==2.4.3 \ - scp==0.13.2 \ - ansible==2.7.8 \ - dill==0.2.8.2 \ - numpy==1.17.3 \ - hdrhistogram==0.6.1 \ - pandas==0.25.3 \ - plotly==4.1.1 \ - PTable==0.9.2 \ - Sphinx==2.2.1 \ - sphinx-rtd-theme==0.4.0 \ - sphinxcontrib-programoutput==0.15 \ - sphinxcontrib-robotdoc==0.11.0 \ - alabaster==0.7.12 \ - Babel==2.7.0 \ - bcrypt==3.1.7 \ - certifi==2019.9.11 \ - cffi==1.13.2 \ - chardet==3.0.4 \ - cryptography==2.8 \ - docutils==0.15.2 \ - future==0.18.2 \ - idna==2.8 \ - imagesize==1.1.0 \ - Jinja2==2.10.3 \ - MarkupSafe==1.1.1 \ - packaging==19.2 \ - pbr==5.4.3 \ - ply==3.11 \ - pycparser==2.19 \ - Pygments==2.4.2 \ - PyNaCl==1.3.0 \ - pyparsing==2.4.4 \ - python-dateutil==2.8.1 \ - pytz==2019.3 \ - retrying==1.3.3 \ - six==1.13.0 \ - snowballstemmer==2.0.0 \ - sphinxcontrib-applehelp==1.0.1 \ - sphinxcontrib-devhelp==1.0.1 \ - sphinxcontrib-htmlhelp==1.0.2 \ - sphinxcontrib-jsmath==1.0.1 \ - sphinxcontrib-qthelp==1.0.2 \ - sphinxcontrib-serializinghtml==1.1.3 \ - urllib3==1.25.6 - -# CSIT PIP pre-cache - ARM workaround -RUN pip3 install scipy==1.1.0 - -RUN mkdir -p /w/Downloads -#RUN wget -O /w/Downloads/nasm-2.13.01.tar.xz http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz -RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://fast.dpdk.org/rel/dpdk-18.02.1.tar.xz -#RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://fast.dpdk.org/rel/dpdk-18.05.tar.xz -#RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -RUN wget -O /w/Downloads/dpdk-17.11.tar.xz http://fast.dpdk.org/rel/dpdk-17.11.tar.xz -#RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz - -# for lftools -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} diff --git a/docker/vpp/vpp-arm-ubuntu18/files/badkey b/docker/vpp/vpp-arm-ubuntu18/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-arm-ubuntu18/files/packagecloud b/docker/vpp/vpp-arm-ubuntu18/files/packagecloud deleted file mode 100644 index 98322206d..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/files/packagecloud +++ /dev/null @@ -1 +0,0 @@ -{"url":"https://packagecloud.io","token":"$token"} diff --git a/docker/vpp/vpp-arm-ubuntu18/files/packagecloud_api b/docker/vpp/vpp-arm-ubuntu18/files/packagecloud_api deleted file mode 100644 index 9f5374895..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/files/packagecloud_api +++ /dev/null @@ -1,3 +0,0 @@ -machine packagecloud.io -login $pclogin -password diff --git a/docker/vpp/vpp-arm-ubuntu18/files/pc_push b/docker/vpp/vpp-arm-ubuntu18/files/pc_push deleted file mode 100644 index 3fdc8d373..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/files/pc_push +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# REPO is an Environment variable - -set -x - -echo "STARTING PACKAGECLOUD PUSH" - -sleep 10 - -if [ -f /usr/bin/zypper ]; then - FACTER_OS="openSUSE" -else - FACTER_OS=$(/usr/bin/facter operatingsystem) -fi - -if [ -f ~/.packagecloud ]; then - case "$FACTER_OS" in - Ubuntu) - FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename) - DEBS=$(find . -type f -iname '*.deb') - package_cloud push "${REPO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/" ${DEBS} - ;; - CentOS) - FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease) - FACTER_ARCH=$(/usr/bin/facter architecture) - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm') - package_cloud push "${REPO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/" ${RPMS} - ;; - openSUSE) - # Use /etc/os-release on openSUSE to get $VERSION - . /etc/os-release - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v 'vpp-ext-deps') - VPP_EXT_RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep 'vpp-ext-deps') - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${RPMS} - # This file may have already been uploaded. Don't error out if it exists. - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${VPP_EXT_RPMS} --skip-errors - ;; - esac -fi diff --git a/docker/vpp/vpp-arm-ubuntu18/files/sshconfig b/docker/vpp/vpp-arm-ubuntu18/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-arm-ubuntu18/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-centos/Dockerfile b/docker/vpp/vpp-centos/Dockerfile deleted file mode 100644 index 8fdfe5b1c..000000000 --- a/docker/vpp/vpp-centos/Dockerfile +++ /dev/null @@ -1,367 +0,0 @@ -FROM centos:7.6.1810 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP centos OS build image" -LABEL Vendor="cisco.com" -LABEL Version="2.0" - -# Setup the environment - -RUN mkdir /workspace && mkdir -p /etc/ssh && mkdir -p /var/ccache - -ENV CCACHE_DIR=/var/ccache -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -ENV NOTVISIBLE "in users profile" - -#SSH timeout -#RUN touch /etc/ssh/ssh_config -RUN echo "TCPKeepAlive true" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveCountMax 30" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveInterval 10" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -#module -RUN echo uio_pci_generic >> /etc/modules - - -#RUN yum update -y && yum install -y deltarpm && yum clean all -RUN yum update -y && yum install -y @base https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && yum clean all -RUN yum update -y && yum install -y --enablerepo=epel \ - chrpath \ - git \ - git-review \ - java-*-openjdk-devel \ - jq \ - lcov \ - make \ - nasm \ -# perl-XML-XPath \ -# puppet \ - sudo \ - unzip \ - xz \ - wget \ - && yum clean all - -#packer install -#RUN wget https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip && unzip packer_1.1.3_linux_amd64.zip -d /usr/local/bin/ && mv /usr/local/bin/packer /usr/local/bin/packer.io - - -RUN yum update -y && yum install -y --enablerepo=epel \ - asciidoc \ - apr-devel \ - cpp \ - c++ \ - cmake \ - dblatex \ - doxygen \ - epel-rpm-macros \ - gcc \ - graphviz \ - indent \ - kernel-devel \ - libxml2 \ - libffi-devel \ - make \ - openssl-devel \ - python-devel \ - python-virtualenv \ - python-setuptools \ - python-cffi \ - python-pip \ - python-jinja2 \ - python-sphinx \ - source-highlight \ - rpm \ - valgrind \ - yum-utils \ - && yum clean all - -RUN yum update -y && yum install -y --enablerepo=epel \ - ganglia-devel \ - libconfuse-devel \ - mock \ - && yum clean all - -#RUN alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java -#RUN alternatives --set java_sdk_openjdk /usr/lib/jvm/java-1.7.0-openjdk.x86_64 - -RUN pip install --upgrade pip -RUN pip install pycap scapy - -RUN yum update -y && yum install -y --enablerepo=epel \ - autoconf \ - automake \ - bison \ - ccache \ - cscope \ - curl \ - dkms \ - git \ - git-review \ - libtool \ - libconfuse-dev \ - libpcap-devel \ - libcap-devel \ - scapy \ - && yum clean all - -#puppet -RUN yum update -y && yum install -y --enablerepo=epel \ - libxml2-devel \ - libxslt-devel \ - ruby-devel \ - zlib-devel \ - gcc-c++ \ - && yum clean all - -#outdated ruby pos -RUN yum update -y && yum install -y --enablerepo=epel \ - git-core \ - zlib \ - zlib-devel \ - gcc-c++ \ - patch \ - readline \ - readline-devel \ - libyaml-devel \ - libffi-devel \ - openssl-devel \ - make \ - bzip2 \ - autoconf \ - automake \ - libtool \ - bison \ - curl \ - sqlite-devel \ - && yum clean all - -ENV PATH="/root/.rbenv/bin:${PATH}" -ENV PATH="/root/.rbenv/shims:${PATH}" - -RUN curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash - -RUN rbenv init - -RUN rbenv install 2.5.1 && rbenv global 2.5.1 -#&& echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && echo 'eval "$(rbenv init -)"' >> ~/.bashrc && - - -RUN gem install rake -RUN gem install package_cloud - -RUN yum update -y && yum install -y --enablerepo=epel \ - apr-util \ - byacc \ - diffstat \ - dwz \ - flex \ - gcc-gfortran \ - gettext-devel \ - glibc-static \ - intltool \ - nasm \ - patchutils \ - rcs \ - redhat-lsb \ - redhat-rpm-config \ - rpm-build \ - rpm-sign \ - subversion \ - swig \ - systemtap \ - && yum clean all - -RUN yum update -y && yum install -y --enablerepo=epel-debuginfo --enablerepo=base-debuginfo \ - e2fsprogs-debuginfo \ - glibc-debuginfo \ - krb5-debuginfo \ - nss-softokn-debuginfo \ - openssl-debuginfo \ - yum-plugin-auto-update-debug-info \ - zlib-debuginfo \ - glibc-debuginfo-common \ - && yum clean all - -RUN yum update -y && yum groupinstall -y "development tools" \ - && yum clean all -# Libraries needed during compilation to enable all features of Python: -RUN yum update -y \ - && yum install -y --enablerepo=epel \ - zlib-devel \ - bzip2-devel \ - openssl-devel \ - ncurses-devel \ - sqlite-devel \ - readline-devel \ - tk-devel \ - gdbm-devel \ - db4-devel \ - libpcap-devel \ - xz-devel \ - expat-devel \ - wget \ - clang \ - llvm \ - numactl-devel \ - check-devel \ - check \ - boost \ - boost-devel \ - mbedtls-devel \ - xmlstarlet \ - centos-release-scl \ - yamllint \ - && yum clean all - -# Python 2.7.13: -RUN wget http://python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz \ - && tar xf Python-2.7.13.tar.xz \ - && cd Python-2.7.13 \ - && ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" \ - && make \ - && make install \ - && strip /usr/local/lib/libpython2.7.so.1.0 \ - && cd .. \ - && rm -rf Python* \ - && wget https://bootstrap.pypa.io/get-pip.py \ - && /usr/local/bin/python get-pip.py - -RUN pip install six scapy==2.3.3 pyexpect subprocess32 cffi git+https://github.com/klement/py-lispnetworking@setup ply -RUN mkdir -p /w/workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz - -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash - - -#include bits from csit-sut -RUN yum install -y \ - # general tools - bridge-utils \ - cloud-init \ - net-tools \ - openssh-server \ - pciutils \ - rsyslog \ - ssh \ - sudo \ - supervisor \ - tar \ - vim \ - wget \ - python-devel \ - openssh-clients \ - # csit requirements - gcc \ - cmake3 \ - docker-1.13 \ - libpcap-devel \ - libpython-devel-2.7 \ - libpython-devel \ - openjdk-8-jdk-headless \ - python-pip \ - python-devel-2.7 \ - python-virtualenv \ - socat \ - strongswan \ - unzip \ - tcpdump \ - zlib-devel \ - # vpp requirements - ca-certificates-2018 \ - libapr1 \ - mbedtls \ - mbedtls-devel \ - libnuma1 \ - python-cffi \ - python36-cffi \ - python-enum34 \ - git \ - sshpass \ - facter \ - devtoolset-7 \ - ninja-build \ - python3-devel \ - python36-jsonschema \ - selinux-policy \ - selinux-policy-devel \ - mbedtls-debuginfo \ - && yum clean all - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -# Fix permissions -# RUN chown root:syslog /var/log \ -# && chmod 755 /etc/default - -# Create directory structure -RUN mkdir -p /tmp/dumps \ - && mkdir -p /var/cache/vpp/python \ - && mkdir -p /var/run/sshd - -# CSIT PIP pre-cache -RUN pip install \ - docopt==0.6.2 \ - ecdsa==0.13 \ - enum34==1.1.2 \ - ipaddress==1.0.16 \ - paramiko==1.16.0 \ - pexpect==4.6.0 \ - ptyprocess==0.6.0 \ - pycrypto==2.6.1 \ - pykwalify==1.5.0 \ - pypcap==1.1.5 \ - python-dateutil==2.4.2 \ - PyYAML==3.11 \ - requests==2.9.1 \ - robotframework==2.9.2 \ - scapy==2.3.3 \ - scp==0.10.2 \ - six==1.12.0 \ - dill==0.2.8.2 \ - numpy==1.14.5 \ - scipy==1.1.0 - -# VPP PIP pre-cache -RUN pip install \ - aenum - -# SSH settings -RUN echo 'root:Csit1234' | chpasswd \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config \ - && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \ - && echo "export VISIBLE=now" >> /etc/profile - -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa -RUN mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' - -#include bits from registry image -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp && mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -ADD files/jenkins /etc/sudoers.d/jenkins -ADD files/supervisord.conf /etc/supervisord/supervisord.conf -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} - -#csit-sut ssh bits for the end -EXPOSE 22 - -CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisord/supervisord.conf; /usr/sbin/sshd -D"] diff --git a/docker/vpp/vpp-centos/files/badkey b/docker/vpp/vpp-centos/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-centos/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-centos/files/fdio-master.repo b/docker/vpp/vpp-centos/files/fdio-master.repo deleted file mode 100644 index b3b279fed..000000000 --- a/docker/vpp/vpp-centos/files/fdio-master.repo +++ /dev/null @@ -1,5 +0,0 @@ -[fdio-master] -name=fd.io master branch latest merge -baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7 -enabled=1 -gpgcheck=0 diff --git a/docker/vpp/vpp-centos/files/jenkins b/docker/vpp/vpp-centos/files/jenkins deleted file mode 100644 index 92f8a3435..000000000 --- a/docker/vpp/vpp-centos/files/jenkins +++ /dev/null @@ -1 +0,0 @@ -jenkins ALL=(root) NOPASSWD:ALL diff --git a/docker/vpp/vpp-centos/files/lf-update-java-alternatives b/docker/vpp/vpp-centos/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-centos/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-centos/files/sshconfig b/docker/vpp/vpp-centos/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-centos/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-centos/files/supervisord.conf b/docker/vpp/vpp-centos/files/supervisord.conf deleted file mode 100644 index 7e72d666a..000000000 --- a/docker/vpp/vpp-centos/files/supervisord.conf +++ /dev/null @@ -1,23 +0,0 @@ -[unix_http_server] -file = /run/supervisor.sock - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl = unix:///run/supervisor.sock - -[supervisord] -pidfile = /run/supervisord.pid -identifier = supervisor -directory = /run -logfile=/var/log/supervisord.log -loglevel=debug -nodaemon=false - -[program:vpp] -command=/usr/bin/vpp -c /etc/vpp/startup.conf -autostart=false -autorestart=true -redirect_stderr=true -priority=1 diff --git a/docker/vpp/vpp-centos8/Dockerfile b/docker/vpp/vpp-centos8/Dockerfile deleted file mode 100644 index ea671452c..000000000 --- a/docker/vpp/vpp-centos8/Dockerfile +++ /dev/null @@ -1,387 +0,0 @@ -FROM centos:8 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP centos8 OS build image" -LABEL Vendor="cisco.com" -LABEL Version="0.02" - -# Setup the environment - -RUN mkdir /workspace && mkdir -p /etc/ssh && mkdir -p /var/ccache - -ENV CCACHE_DIR=/var/ccache -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -ENV NOTVISIBLE "in users profile" - -#SSH timeout -#RUN touch /etc/ssh/ssh_config -RUN echo "TCPKeepAlive true" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveCountMax 30" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 -RUN echo "ServerAliveInterval 10" | tee -a /etc/ssh/ssh_config #>/dev/null 2>&1 - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -#module -RUN echo uio_pci_generic >> /etc/modules - -ADD files/CentOS-AppStream.repo /etc/yum.repos.d/CentOS-AppStream.repo -ADD files/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo - -#RUN yum update -y && yum install -y deltarpm && yum clean all -#RUN yum update -y && yum install -y @base https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && yum clean all -RUN yum update -y && yum install -y epel-release && yum clean all -ADD files/epel.repo /etc/yum.repos.d/epel.repo - -RUN yum update -y && yum install -y --enablerepo=epel \ - chrpath \ - git \ -# git-review \ - java-*-openjdk-devel \ - jq \ -# lcov \ - make \ -# nasm \ - sudo \ - unzip \ - xz \ - wget \ - nano \ - && yum clean all - -#packer install -#RUN wget https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip && unzip packer_1.1.3_linux_amd64.zip -d /usr/local/bin/ && mv /usr/local/bin/packer /usr/local/bin/packer.io - - -RUN yum update -y && yum install -y --enablerepo=epel \ - asciidoc \ - apr-devel \ - cpp \ -# c++ \ - cmake \ -# dblatex \ -# doxygen \ - epel-rpm-macros \ - gcc \ - graphviz \ - indent \ - kernel-devel \ - libxml2 \ - libffi-devel \ - make \ - openssl-devel \ - python2-devel \ - python2-virtualenv \ - python2-setuptools \ -# python2-cffi \ - python2-pip \ - python2-jinja2 \ -# python2-sphinx \ - source-highlight \ - rpm \ - valgrind \ - yum-utils \ - && yum clean all - -RUN yum update -y && yum install -y \ -# ganglia-devel \ - libconfuse-devel \ - mock \ - && yum clean all - -#RUN alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java -#RUN alternatives --set java_sdk_openjdk /usr/lib/jvm/java-1.7.0-openjdk.x86_64 - -RUN pip2 install --upgrade pip -RUN pip2 install pycap scapy - -RUN yum update -y && yum install -y --enablerepo=epel \ - autoconf \ - automake \ - bison \ - ccache \ - cscope \ - curl \ - dkms \ - git \ -# git-review \ - libtool \ -# libconfuse-dev \ -# libpcap-devel \ - libcap-devel \ - scapy \ - && yum clean all - -#puppet -RUN yum update -y && yum install -y --enablerepo=epel \ - libxml2-devel \ - libxslt-devel \ - ruby-devel \ - zlib-devel \ - gcc-c++ \ - && yum clean all - -#outdated ruby pos -RUN yum update -y && yum install -y --enablerepo=epel \ - git-core \ - zlib \ - zlib-devel \ - gcc-c++ \ - patch \ - readline \ - readline-devel \ -# libyaml-devel \ - libffi-devel \ - openssl-devel \ - make \ - bzip2 \ - autoconf \ - automake \ - libtool \ - bison \ - curl \ - sqlite-devel \ - && yum clean all - -ENV PATH="/root/.rbenv/bin:${PATH}" -ENV PATH="/root/.rbenv/shims:${PATH}" - -RUN curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash - -RUN rbenv init - -RUN rbenv install 2.5.1 && rbenv global 2.5.1 -#&& echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && echo 'eval "$(rbenv init -)"' >> ~/.bashrc && - - -RUN gem install rake -RUN gem install package_cloud - -RUN yum update -y && yum install -y --enablerepo=epel \ - apr-util \ - byacc \ - diffstat \ - dwz \ - flex \ - gcc-gfortran \ - gettext-devel \ - glibc \ - glibc-langpack-en \ - intltool \ -# nasm \ - patchutils \ -# rcs \ - redhat-lsb \ - redhat-rpm-config \ - rpm-build \ - rpm-sign \ - subversion \ - swig \ - systemtap \ - && yum clean all - -#RUN yum update -y && yum install -y --enablerepo=epel-debuginfo --enablerepo=base-debuginfo \ -# RUN yum update -y && yum install -y --enablerepo=epel-debuginfo \ -# e2fsprogs-debuginfo \ -# glibc-debuginfo \ -# krb5-debuginfo \ -# nss-softokn-debuginfo \ -# openssl-debuginfo \ -# yum-plugin-auto-update-debug-info \ -# zlib-debuginfo \ -# glibc-debuginfo-common \ -# && yum clean all - -RUN yum update -y && yum groupinstall -y "development tools" \ - && yum clean all -# Libraries needed during compilation to enable all features of Python: -RUN yum update -y \ - && yum install -y --enablerepo=epel \ - zlib-devel \ - bzip2-devel \ - openssl-devel \ - ncurses-devel \ - sqlite-devel \ - readline-devel \ - tk-devel \ - gdbm-devel \ -# db4-devel \ -# libpcap-devel \ - xz-devel \ - expat-devel \ - wget \ - clang \ - llvm \ - numactl-devel \ - check-devel \ - check \ - boost \ - boost-devel \ - mbedtls-devel \ - xmlstarlet \ -# centos-release-scl \ - yamllint \ - && yum clean all - -#centos8 -RUN dnf config-manager --set-enabled PowerTools \ - && yum install -y --enablerepo=epel \ - compat-openssl10 \ - python3-jsonschema \ - selinux-policy \ - selinux-policy-devel \ - glibc-static \ - ninja-build \ - && yum clean all - -# Python 2.7.13: -# RUN wget http://python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz \ -# && tar xf Python-2.7.13.tar.xz \ -# && cd Python-2.7.13 \ -# && ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" \ -# && make \ -# && make install \ -# && strip /usr/local/lib/libpython2.7.so.1.0 \ -# && cd .. \ -# && rm -rf Python* \ -# && wget https://bootstrap.pypa.io/get-pip.py \ -# && /usr/local/bin/python get-pip.py - -RUN pip2 install six scapy==2.3.3 pyexpect subprocess32 cffi git+https://github.com/klement/py-lispnetworking@setup ply -RUN mkdir -p /w/workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -# RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -# RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -# RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -# RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -# RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz - -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -#RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash - -# CSIT requirements -RUN dnf config-manager --set-enabled PowerTools \ - && yum install -y --enablerepo=epel \ - curl \ - git \ - libpcap-devel \ - openssh-clients \ - openssh-server \ - net-tools \ - pciutils \ - python3-cffi \ - python3-pip \ - python3-setuptools \ - socat \ - sshpass \ - strongswan \ - sudo \ - supervisor \ - tar \ - tcpdump \ - unzip \ - vim \ - virtualenv \ - wget \ - zlib-devel \ - && yum clean all - -# CSIT PIP pre-cache -RUN pip3 install \ - ecdsa==0.13.3 \ - paramiko==2.6.0 \ - pycrypto==2.6.1 \ - pypcap==1.2.3 \ - PyYAML==5.1.1 \ - requests==2.22.0 \ - robotframework==3.1.2 \ - scapy==2.4.3 \ - scp==0.13.2 \ - ansible==2.7.8 \ - dill==0.2.8.2 \ - numpy==1.17.3 \ - hdrhistogram==0.6.1 \ - pandas==0.25.3 \ - plotly==4.1.1 \ - PTable==0.9.2 \ - Sphinx==2.2.1 \ - sphinx-rtd-theme==0.4.0 \ - sphinxcontrib-programoutput==0.15 \ - sphinxcontrib-robotdoc==0.11.0 \ - ply==3.11 \ - alabaster==0.7.12 \ - Babel==2.7.0 \ - bcrypt==3.1.7 \ - certifi==2019.9.11 \ - cffi==1.13.2 \ - chardet==3.0.4 \ - cryptography==2.8 \ - docutils==0.15.2 \ - future==0.18.2 \ - idna==2.8 \ - imagesize==1.1.0 \ - Jinja2==2.10.3 \ - MarkupSafe==1.1.1 \ - packaging==19.2 \ - pbr==5.4.3 \ - pycparser==2.19 \ - Pygments==2.4.2 \ - PyNaCl==1.3.0 \ - pyparsing==2.4.4 \ - python-dateutil==2.8.1 \ - pytz==2019.3 \ - retrying==1.3.3 \ - six==1.13.0 \ - snowballstemmer==2.0.0 \ - sphinxcontrib-applehelp==1.0.1 \ - sphinxcontrib-devhelp==1.0.1 \ - sphinxcontrib-htmlhelp==1.0.2 \ - sphinxcontrib-jsmath==1.0.1 \ - sphinxcontrib-qthelp==1.0.2 \ - sphinxcontrib-serializinghtml==1.1.3 \ - urllib3==1.25.6 - -# CSIT ARM workaround -RUN pip3 install scipy==1.1.0 - -# Configure locales -#RUN localectl set-locale "en_US.UTF-8" \ -# && localectl status - -# Fix permissions -# RUN chown root:syslog /var/log \ -# && chmod 755 /etc/default - -# Create directory structure -RUN mkdir -p /tmp/dumps \ - && mkdir -p /var/cache/vpp/python \ - && mkdir -p /var/run/sshd - -# SSH settings -RUN echo 'root:Csit1234' | chpasswd \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config \ - && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \ - && echo "export VISIBLE=now" >> /etc/profile - -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa -#RUN mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' - -#include bits from registry image -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp #&& mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -ADD files/jenkins /etc/sudoers.d/jenkins -ADD files/supervisord.conf /etc/supervisord/supervisord.conf -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} - -#csit-sut ssh bits for the end -EXPOSE 22 - -CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisord/supervisord.conf; /usr/sbin/sshd -D"] diff --git a/docker/vpp/vpp-centos8/files/CentOS-AppStream.repo b/docker/vpp/vpp-centos8/files/CentOS-AppStream.repo deleted file mode 100644 index 16828095f..000000000 --- a/docker/vpp/vpp-centos8/files/CentOS-AppStream.repo +++ /dev/null @@ -1,19 +0,0 @@ -# CentOS-AppStream.repo -# -# The mirror system uses the connecting IP address of the client and the -# update status of each mirror to pick mirrors that are updated to and -# geographically close to the client. You should use this for CentOS updates -# unless you are manually picking other mirrors. -# -# If the mirrorlist= does not work for you, as a fall back you can try the -# remarked out baseurl= line instead. -# -# - -[AppStream] -name=CentOS-$releasever - AppStream -mirrorlist=http://mirrorlist.centos.org/?release=8&arch=$basearch&repo=AppStream&infra=$infra -#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/ -gpgcheck=1 -enabled=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial diff --git a/docker/vpp/vpp-centos8/files/CentOS-Base.repo b/docker/vpp/vpp-centos8/files/CentOS-Base.repo deleted file mode 100644 index 81df950b2..000000000 --- a/docker/vpp/vpp-centos8/files/CentOS-Base.repo +++ /dev/null @@ -1,19 +0,0 @@ -# CentOS-Base.repo -# -# The mirror system uses the connecting IP address of the client and the -# update status of each mirror to pick mirrors that are updated to and -# geographically close to the client. You should use this for CentOS updates -# unless you are manually picking other mirrors. -# -# If the mirrorlist= does not work for you, as a fall back you can try the -# remarked out baseurl= line instead. -# -# - -[BaseOS] -name=CentOS-$releasever - Base -mirrorlist=http://mirrorlist.centos.org/?release=8&arch=$basearch&repo=BaseOS&infra=$infra -#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/ -gpgcheck=1 -enabled=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial diff --git a/docker/vpp/vpp-centos8/files/badkey b/docker/vpp/vpp-centos8/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-centos8/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-centos8/files/epel.repo b/docker/vpp/vpp-centos8/files/epel.repo deleted file mode 100644 index 9083b454e..000000000 --- a/docker/vpp/vpp-centos8/files/epel.repo +++ /dev/null @@ -1,25 +0,0 @@ -[epel] -name=Extra Packages for Enterprise Linux $releasever - $basearch -#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch -metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir -enabled=1 -gpgcheck=1 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 - -[epel-debuginfo] -name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug -#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch/debug -metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=$basearch&infra=$infra&cont -ent=$contentdir -enabled=0 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 -gpgcheck=1 - -[epel-source] -name=Extra Packages for Enterprise Linux $releasever - $basearch - Source -#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/SRPMS -metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&con -tent=$contentdir -enabled=0 -gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 -gpgcheck=1
\ No newline at end of file diff --git a/docker/vpp/vpp-centos8/files/fdio-master.repo b/docker/vpp/vpp-centos8/files/fdio-master.repo deleted file mode 100644 index b3b279fed..000000000 --- a/docker/vpp/vpp-centos8/files/fdio-master.repo +++ /dev/null @@ -1,5 +0,0 @@ -[fdio-master] -name=fd.io master branch latest merge -baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7 -enabled=1 -gpgcheck=0 diff --git a/docker/vpp/vpp-centos8/files/jenkins b/docker/vpp/vpp-centos8/files/jenkins deleted file mode 100644 index 92f8a3435..000000000 --- a/docker/vpp/vpp-centos8/files/jenkins +++ /dev/null @@ -1 +0,0 @@ -jenkins ALL=(root) NOPASSWD:ALL diff --git a/docker/vpp/vpp-centos8/files/lf-update-java-alternatives b/docker/vpp/vpp-centos8/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-centos8/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-centos8/files/sshconfig b/docker/vpp/vpp-centos8/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-centos8/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-centos8/files/supervisord.conf b/docker/vpp/vpp-centos8/files/supervisord.conf deleted file mode 100644 index 7e72d666a..000000000 --- a/docker/vpp/vpp-centos8/files/supervisord.conf +++ /dev/null @@ -1,23 +0,0 @@ -[unix_http_server] -file = /run/supervisor.sock - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface - -[supervisorctl] -serverurl = unix:///run/supervisor.sock - -[supervisord] -pidfile = /run/supervisord.pid -identifier = supervisor -directory = /run -logfile=/var/log/supervisord.log -loglevel=debug -nodaemon=false - -[program:vpp] -command=/usr/bin/vpp -c /etc/vpp/startup.conf -autostart=false -autorestart=true -redirect_stderr=true -priority=1 diff --git a/docker/vpp/vpp-ubuntu16/Dockerfile b/docker/vpp/vpp-ubuntu16/Dockerfile deleted file mode 100644 index 589e0a9c5..000000000 --- a/docker/vpp/vpp-ubuntu16/Dockerfile +++ /dev/null @@ -1,248 +0,0 @@ -FROM ubuntu:16.04 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP ubuntu 16 baseline" -LABEL Vendor="cisco.com" -LABEL Version="3.1" - - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV DOCKER_TEST=True -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python - -RUN apt-get -q update && \ - apt-get install -y -qq \ - bash \ - bash-completion \ - bc \ - biosdevname \ - ca-certificates \ - cloud-init \ - cron \ - curl \ - libcurl3-gnutls \ - dbus \ - dstat \ - ethstatus \ - file \ - fio \ - htop \ - ifenslave \ - ioping \ - iotop \ - iperf \ - iptables \ - iputils-ping \ - less \ - locate \ - lsb-release \ - lsof \ - make \ - man-db \ - mdadm \ - mg \ - mosh \ - mtr \ - multipath-tools \ - nano \ - net-tools \ - netcat \ - nmap \ - ntp \ - ntpdate \ - open-iscsi \ - python-apt \ - python-pip \ - python-yaml \ - rsync \ - rsyslog \ - screen \ - shunit2 \ - socat \ - software-properties-common \ - ssh \ - sudo \ - sysstat \ - tar \ - tcpdump \ - tmux \ - traceroute \ - unattended-upgrades \ - uuid-runtime \ - vim \ - wget \ - apt-transport-https \ - default-jre-headless \ - chrpath \ - nasm \ - && rm -rf /var/lib/apt/lists/* - -RUN add-apt-repository -y ppa:openjdk-r/ppa - -RUN apt-get -q update && \ - apt-get install -y -qq \ - unzip \ - xz-utils \ - puppet \ - git \ - git-review \ - libxml-xpath-perl \ - make \ - wget \ - openjdk-8-jdk \ - openjdk-11-jdk \ - jq \ - libffi-dev \ - python-all \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - autoconf \ - automake \ - autotools-dev \ - bison \ - ccache \ - cscope \ - debhelper \ - dh-apparmor \ - dh-systemd \ - dkms \ - ed \ - exuberant-ctags \ - gettext \ - gettext-base \ - intltool-debian \ - indent \ - lcov \ - libapr1 \ - libapr1-dev \ - libasprintf-dev \ - libbison-dev \ - libconfuse-common \ - libconfuse-dev \ - libconfuse0 \ - libcroco3 \ - libexpat1-dev \ - libganglia1 \ - libganglia1-dev \ - libgd-gd2-perl \ - libgettextpo-dev \ - libgettextpo0 \ - libltdl-dev \ - libmail-sendmail-perl \ - libmbedtls-dev \ - libpython-dev \ - libpython2.7-dev \ - libsctp-dev \ - libsigsegv2 \ - libssl-dev \ - libssl-doc \ - libsys-hostname-long-perl \ - libtool \ - libunistring0 \ - m4 \ - pkg-config \ - po-debconf \ - python-dev \ - python-virtualenv \ - python2.7-dev \ - uuid-dev \ - zlib1g-dev \ - locales \ - llvm \ - clang \ - clang-format \ - clang-5.0 \ - libboost-all-dev \ - ruby-dev \ - zile \ - default-jdk-headless \ - check \ - libsubunit-dev \ - libsubunit0 \ - emacs \ - gdb \ - libpcap-dev \ - python-ply \ - iperf3 \ - libibverbs-dev \ - dtach \ - cmake \ - cmake-data \ - libarchive13 \ - libcurl3 \ - liblzo2-2 \ - ninja-build \ - && rm -rf /var/lib/apt/lists/* - -#Repoint clang -RUN update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-5.0 1000 && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 1000 - -# For the docs -RUN apt-get -q update && \ - apt-get install -y -qq \ - python-markupsafe \ - python-jinja2 \ - python-pyparsing \ - doxygen \ - graphviz \ - xmlstarlet \ - && rm -rf /var/lib/apt/lists/* - -# Configure locales -RUN locale-gen en_US.UTF-8 && \ - dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -RUN mkdir /tmp/dumps -RUN mkdir /workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true - -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' - -RUN gem install rake -RUN gem install package_cloud -RUN pip install six scapy==2.3.3 pyexpect subprocess32 cffi git+https://github.com/klement/py-lispnetworking@setup pycodestyle -#Below are requirements for csit -RUN pip install robotframework==2.9.2 paramiko==1.16.0 scp==0.10.2 ipaddress==1.0.16 interruptingcow==0.6 PyYAML==3.12 pykwalify==1.5.0 \ - enum34==1.1.2 requests==2.9.1 ecdsa==0.13 pycrypto==2.6.1 pypcap==1.1.5 psutil - -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -RUN wget -O /w/Downloads/nasm-2.13.01.tar.xz http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz -RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://fast.dpdk.org/rel/dpdk-18.02.1.tar.xz -#RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://fast.dpdk.org/rel/dpdk-18.05.tar.xz -#RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -RUN wget -O /w/Downloads/dpdk-17.11.tar.xz http://fast.dpdk.org/rel/dpdk-17.11.tar.xz -RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz - -#RUN git clone https://gerrit.fd.io/r/vpp /workspace/ubuntu16 && cd /workspace/ubuntu16; make UNATTENDED=yes install-dep && rm -rf /workspace/ubuntu16 && rm -rf /var/lib/apt/lists/* -#ADD files/99fd.io.list /etc/apt/sources.list.d/99fd.io.list -#ADD files/fdio_master.list /etc/apt/sources.list.d/fdio_master.list - -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -RUN chmod 600 /root/.ssh/id_rsa -RUN curl -L https://packagecloud.io/fdio/master/gpgkey |sudo apt-key add - - -RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash - -#RUN apt update && apt install -y vpp-dpdk-dev vpp-dpdk-dkms -RUN mkdir -p /w/workspace && mkdir -p /home/jenkins && mkdir -p /run/shm - - - - diff --git a/docker/vpp/vpp-ubuntu16/files/badkey b/docker/vpp/vpp-ubuntu16/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-ubuntu16/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-ubuntu16/files/lf-update-java-alternatives b/docker/vpp/vpp-ubuntu16/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-ubuntu16/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-ubuntu16/files/packagecloud b/docker/vpp/vpp-ubuntu16/files/packagecloud deleted file mode 100644 index 98322206d..000000000 --- a/docker/vpp/vpp-ubuntu16/files/packagecloud +++ /dev/null @@ -1 +0,0 @@ -{"url":"https://packagecloud.io","token":"$token"} diff --git a/docker/vpp/vpp-ubuntu16/files/packagecloud_api b/docker/vpp/vpp-ubuntu16/files/packagecloud_api deleted file mode 100644 index 9f5374895..000000000 --- a/docker/vpp/vpp-ubuntu16/files/packagecloud_api +++ /dev/null @@ -1,3 +0,0 @@ -machine packagecloud.io -login $pclogin -password diff --git a/docker/vpp/vpp-ubuntu16/files/pc_push b/docker/vpp/vpp-ubuntu16/files/pc_push deleted file mode 100644 index 3fdc8d373..000000000 --- a/docker/vpp/vpp-ubuntu16/files/pc_push +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# REPO is an Environment variable - -set -x - -echo "STARTING PACKAGECLOUD PUSH" - -sleep 10 - -if [ -f /usr/bin/zypper ]; then - FACTER_OS="openSUSE" -else - FACTER_OS=$(/usr/bin/facter operatingsystem) -fi - -if [ -f ~/.packagecloud ]; then - case "$FACTER_OS" in - Ubuntu) - FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename) - DEBS=$(find . -type f -iname '*.deb') - package_cloud push "${REPO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/" ${DEBS} - ;; - CentOS) - FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease) - FACTER_ARCH=$(/usr/bin/facter architecture) - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm') - package_cloud push "${REPO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/" ${RPMS} - ;; - openSUSE) - # Use /etc/os-release on openSUSE to get $VERSION - . /etc/os-release - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v 'vpp-ext-deps') - VPP_EXT_RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep 'vpp-ext-deps') - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${RPMS} - # This file may have already been uploaded. Don't error out if it exists. - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${VPP_EXT_RPMS} --skip-errors - ;; - esac -fi diff --git a/docker/vpp/vpp-ubuntu16/files/sshconfig b/docker/vpp/vpp-ubuntu16/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-ubuntu16/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-ubuntu18/Dockerfile b/docker/vpp/vpp-ubuntu18/Dockerfile deleted file mode 100644 index 85abf6228..000000000 --- a/docker/vpp/vpp-ubuntu18/Dockerfile +++ /dev/null @@ -1,342 +0,0 @@ -FROM ubuntu:18.04 -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP ubuntu 18 baseline" -LABEL Vendor="cisco.com" -LABEL Version="1.1" - - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV DOCKER_TEST=True -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python - -RUN apt-get -q update && \ - apt-get install -y -qq \ - bash \ - bash-completion \ - bc \ - biosdevname \ - ca-certificates \ - cloud-init \ - cron \ - curl \ - libcurl3-gnutls \ - dbus \ - dstat \ - ethstatus \ - file \ - fio \ - htop \ - ifenslave \ - ioping \ - iotop \ - iperf \ - iptables \ - iputils-ping \ - less \ - locate \ - lsb-release \ - lsof \ - make \ - man-db \ - mdadm \ - mg \ - mosh \ - mtr \ - multipath-tools \ - nano \ - net-tools \ - netcat \ - nmap \ - ntp \ - ntpdate \ - open-iscsi \ - rsync \ - rsyslog \ - screen \ - shunit2 \ - socat \ - software-properties-common \ - ssh \ - sshpass \ - sudo \ - sysstat \ - tar \ - tcpdump \ - tmux \ - traceroute \ - unattended-upgrades \ - uuid-runtime \ - vim \ - wget \ - apt-transport-https \ - chrpath \ - nasm \ - dtach \ - && rm -rf /var/lib/apt/lists/* - -RUN add-apt-repository -y ppa:openjdk-r/ppa - -RUN apt-get -q update && \ - apt-get install -y -qq \ - unzip \ - xz-utils \ - puppet \ - git \ - git-review \ - libxml-xpath-perl \ - make \ - wget \ - openjdk-8-jdk \ - openjdk-11-jdk \ - jq \ - libffi-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - autoconf \ - automake \ - autotools-dev \ - bison \ - ccache \ - cscope \ - debhelper \ - dh-apparmor \ - dh-systemd \ - dkms \ - ed \ - exuberant-ctags \ - gettext \ - gettext-base \ - intltool-debian \ - indent \ - lcov \ - libapr1 \ - libapr1-dev \ - libasprintf-dev \ - libbison-dev \ - libconfuse-doc \ - libconfuse-dev \ - libcroco3 \ - libexpat1-dev \ - libganglia1 \ - libganglia1-dev \ - libgd-gd2-perl \ - libgettextpo-dev \ - libgettextpo0 \ - libltdl-dev \ - libmail-sendmail-perl \ - libmbedtls-dev \ - libpython-dev \ - libpython2.7-dev \ - libsctp-dev \ - libsigsegv2 \ - libssl-dev \ - libssl-doc \ - libsys-hostname-long-perl \ - libtool \ - m4 \ - pkg-config \ - po-debconf \ - uuid-dev \ - zlib1g-dev \ - locales \ - llvm \ - clang \ - clang-format \ - libboost-all-dev \ - ruby-dev \ - zile \ - check \ - libsubunit-dev \ - libsubunit0 \ - emacs \ - gdb \ - libpcap-dev \ - iperf3 \ - libibverbs-dev \ - apt-utils \ - python-all \ - python-apt \ - python-cffi \ - python-cffi-backend \ - python-dev \ - python-enum34 \ - python-pip \ - python-ply \ - python-setuptools \ - python-virtualenv \ - python-yaml \ - python3-all \ - python3-apt \ - python3-cffi \ - python3-cffi-backend \ - python3-dev \ - python3-pip \ - python3-ply \ - python3-setuptools \ - python3-virtualenv \ - python3-venv \ - && rm -rf /var/lib/apt/lists/* - -# For the docs -RUN apt-get -q update && \ - apt-get install -y -qq \ - python-markupsafe \ - python-jinja2 \ - python-pyparsing \ - doxygen \ - graphviz \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - cmake \ - cmake-data \ - libarchive13 \ - liblzo2-2 \ - librhash0 \ - libuv1 \ - ninja-build \ - cmake-doc \ - lrzip \ - xmlstarlet \ - g++-8 \ - gcc-8 \ - yamllint \ - && rm -rf /var/lib/apt/lists/* - -# Configure locales -RUN locale-gen en_US.UTF-8 && \ - dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -RUN mkdir /tmp/dumps -RUN mkdir /workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true - -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7 && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 - -RUN curl -L https://packagecloud.io/fdio/master/gpgkey |sudo apt-key add - -#ADD files/99fd.io.list /etc/apt/sources.list.d/99fd.io.list -#ADD files/fdio_master.list /etc/apt/sources.list.d/fdio_master.list - -#RUN apt update && apt install -y vpp-dpdk-dev vpp-dpdk-dkms || true -#RUN mkdir -p /w/dpdk && cd /w/dpdk; apt-get download vpp-dpdk-dkms || true - -#RUN mkdir -p /w/workspace/vpp-verify-master-ubuntu1804 && mkdir -p /home/jenkins -RUN mkdir -p /w/workspace && mkdir -p /home/jenkins -RUN apt-get purge -y default-jre-headless openjdk-9-jdk-headless openjdk-9-jre-headless || true - -ADD files/default-jdk-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jdk-headless_1.8-59ubuntu2_amd64.deb -ADD files/default-jre-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jre-headless_1.8-59ubuntu2_amd64.deb - -RUN apt-get install -y /tmp/default-jre-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jdk-headless_1.8-59ubuntu2_amd64.deb -ADD files/jre /etc/apt/preferences.d/jre -ADD files/pc_push /usr/local/bin/pc_push -ADD files/packagecloud /root/.packagecloud -ADD files/packagecloud_api /root/packagecloud_api -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -RUN gem install rake -RUN gem install package_cloud - -# VPP PIP pre-cahce -RUN pip install \ - six \ - scapy==2.3.3 \ - pyexpect \ - subprocess32 \ - cffi \ - git+https://github.com/klement/py-lispnetworking@setup \ - pycodestyle - -# CSIT PIP pre-cache -RUN pip3 install \ - ecdsa==0.13.3 \ - paramiko==2.6.0 \ - pycrypto==2.6.1 \ - pypcap==1.2.3 \ - PyYAML==5.1.1 \ - requests==2.22.0 \ - robotframework==3.1.2 \ - scapy==2.4.3 \ - scp==0.13.2 \ - ansible==2.7.8 \ - dill==0.2.8.2 \ - numpy==1.17.3 \ - hdrhistogram==0.6.1 \ - pandas==0.25.3 \ - plotly==4.1.1 \ - PTable==0.9.2 \ - Sphinx==2.2.1 \ - sphinx-rtd-theme==0.4.0 \ - sphinxcontrib-programoutput==0.15 \ - sphinxcontrib-robotdoc==0.11.0 \ - alabaster==0.7.12 \ - Babel==2.7.0 \ - bcrypt==3.1.7 \ - certifi==2019.9.11 \ - cffi==1.13.2 \ - chardet==3.0.4 \ - cryptography==2.8 \ - docutils==0.15.2 \ - future==0.18.2 \ - idna==2.8 \ - imagesize==1.1.0 \ - Jinja2==2.10.3 \ - MarkupSafe==1.1.1 \ - packaging==19.2 \ - pbr==5.4.3 \ - ply==3.11 \ - pycparser==2.19 \ - Pygments==2.4.2 \ - PyNaCl==1.3.0 \ - pyparsing==2.4.4 \ - python-dateutil==2.8.1 \ - pytz==2019.3 \ - retrying==1.3.3 \ - six==1.13.0 \ - snowballstemmer==2.0.0 \ - sphinxcontrib-applehelp==1.0.1 \ - sphinxcontrib-devhelp==1.0.1 \ - sphinxcontrib-htmlhelp==1.0.2 \ - sphinxcontrib-jsmath==1.0.1 \ - sphinxcontrib-qthelp==1.0.2 \ - sphinxcontrib-serializinghtml==1.1.3 \ - urllib3==1.25.6 - -# CSIT PIP pre-cache - ARM workaround -RUN pip3 install scipy==1.1.0 - -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -#RUN wget -O /w/Downloads/nasm-2.13.01.tar.xz http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz -#RUN wget -O /w/Downloads/dpdk-18.02.tar.xz http://fast.dpdk.org/rel/dpdk-18.02.tar.xz -#RUN wget -O /w/Downloads/dpdk-17.11.tar.xz http://fast.dpdk.org/rel/dpdk-17.11.tar.xz -RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -RUN wget -O /w/Downloads/dpdk-18.08.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.08.tar.xz -RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz -RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash - -#bad and open ssh keys for csit -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa - -# for lftools -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp && mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} - diff --git a/docker/vpp/vpp-ubuntu18/files/badkey b/docker/vpp/vpp-ubuntu18/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-ubuntu18/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-ubuntu18/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb b/docker/vpp/vpp-ubuntu18/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb Binary files differdeleted file mode 100644 index 32f73674f..000000000 --- a/docker/vpp/vpp-ubuntu18/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb +++ /dev/null diff --git a/docker/vpp/vpp-ubuntu18/files/default-jre-headless_1.8-59ubuntu2_amd64.deb b/docker/vpp/vpp-ubuntu18/files/default-jre-headless_1.8-59ubuntu2_amd64.deb Binary files differdeleted file mode 100644 index bd66af502..000000000 --- a/docker/vpp/vpp-ubuntu18/files/default-jre-headless_1.8-59ubuntu2_amd64.deb +++ /dev/null diff --git a/docker/vpp/vpp-ubuntu18/files/jre b/docker/vpp/vpp-ubuntu18/files/jre deleted file mode 100644 index 2d856174c..000000000 --- a/docker/vpp/vpp-ubuntu18/files/jre +++ /dev/null @@ -1,10 +0,0 @@ -Package: default-jdk-headless -Pin: release a=now -Priority: 1001 -Pin-Priority: 1001 - -Package: default-jre-headless -Pin: release a=now -Priority: 1001 -Pin-Priority: 1001 - diff --git a/docker/vpp/vpp-ubuntu18/files/lf-update-java-alternatives b/docker/vpp/vpp-ubuntu18/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-ubuntu18/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-ubuntu18/files/packagecloud b/docker/vpp/vpp-ubuntu18/files/packagecloud deleted file mode 100644 index 98322206d..000000000 --- a/docker/vpp/vpp-ubuntu18/files/packagecloud +++ /dev/null @@ -1 +0,0 @@ -{"url":"https://packagecloud.io","token":"$token"} diff --git a/docker/vpp/vpp-ubuntu18/files/packagecloud_api b/docker/vpp/vpp-ubuntu18/files/packagecloud_api deleted file mode 100644 index 9f5374895..000000000 --- a/docker/vpp/vpp-ubuntu18/files/packagecloud_api +++ /dev/null @@ -1,3 +0,0 @@ -machine packagecloud.io -login $pclogin -password diff --git a/docker/vpp/vpp-ubuntu18/files/pc_push b/docker/vpp/vpp-ubuntu18/files/pc_push deleted file mode 100644 index 3fdc8d373..000000000 --- a/docker/vpp/vpp-ubuntu18/files/pc_push +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# REPO is an Environment variable - -set -x - -echo "STARTING PACKAGECLOUD PUSH" - -sleep 10 - -if [ -f /usr/bin/zypper ]; then - FACTER_OS="openSUSE" -else - FACTER_OS=$(/usr/bin/facter operatingsystem) -fi - -if [ -f ~/.packagecloud ]; then - case "$FACTER_OS" in - Ubuntu) - FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename) - DEBS=$(find . -type f -iname '*.deb') - package_cloud push "${REPO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/" ${DEBS} - ;; - CentOS) - FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease) - FACTER_ARCH=$(/usr/bin/facter architecture) - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm') - package_cloud push "${REPO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/" ${RPMS} - ;; - openSUSE) - # Use /etc/os-release on openSUSE to get $VERSION - . /etc/os-release - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v 'vpp-ext-deps') - VPP_EXT_RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep 'vpp-ext-deps') - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${RPMS} - # This file may have already been uploaded. Don't error out if it exists. - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${VPP_EXT_RPMS} --skip-errors - ;; - esac -fi diff --git a/docker/vpp/vpp-ubuntu18/files/sshconfig b/docker/vpp/vpp-ubuntu18/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-ubuntu18/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null diff --git a/docker/vpp/vpp-ubuntu20/Dockerfile b/docker/vpp/vpp-ubuntu20/Dockerfile deleted file mode 100644 index 5cf5d487c..000000000 --- a/docker/vpp/vpp-ubuntu20/Dockerfile +++ /dev/null @@ -1,339 +0,0 @@ -FROM ubuntu:focal -MAINTAINER Ed Kern <ejk@cisco.com> -LABEL Description="VPP ubuntu 20 baseline" -LABEL Vendor="cisco.com" -LABEL Version="0.01" - - -# Setup the environment -ENV DEBIAN_FRONTEND=noninteractive -ENV MAKE_PARALLEL_FLAGS -j 4 -ENV DOCKER_TEST=True -ENV VPP_ZOMBIE_NOCHECK=1 -ENV DPDK_DOWNLOAD_DIR=/w/Downloads -ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python - -RUN apt-get -q update && \ - apt-get install -y -qq \ - bash \ - bash-completion \ - bc \ -# biosdevname \ - ca-certificates \ - cloud-init \ - cron \ - curl \ - libcurl3-gnutls \ - dbus \ - dstat \ - ethstatus \ - file \ - fio \ - htop \ - ifenslave \ - ioping \ - iotop \ - iperf \ - iptables \ - iputils-ping \ - less \ - locate \ - lsb-release \ - lsof \ - make \ - man-db \ - mdadm \ - mg \ - mosh \ - mtr \ - multipath-tools \ - nano \ - net-tools \ - netcat \ - nmap \ - ntp \ - ntpdate \ - open-iscsi \ - rsync \ - rsyslog \ - screen \ - shunit2 \ - socat \ - software-properties-common \ - ssh \ - sshpass \ - sudo \ - sysstat \ - tar \ - tcpdump \ - tmux \ - traceroute \ - unattended-upgrades \ - uuid-runtime \ - vim \ - wget \ - apt-transport-https \ - chrpath \ - nasm \ - dtach \ - && rm -rf /var/lib/apt/lists/* - -#RUN add-apt-repository -y ppa:openjdk-r/ppa - -RUN apt-get -q update && \ - apt-get install -y -qq \ - unzip \ - xz-utils \ - puppet \ - git \ - git-review \ - libxml-xpath-perl \ - make \ - wget \ - openjdk-8-jdk \ - openjdk-11-jdk \ - jq \ - libffi-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - autoconf \ - automake \ - autotools-dev \ - bison \ - ccache \ - cscope \ - debhelper \ - dh-apparmor \ - dh-systemd \ - dkms \ - ed \ - exuberant-ctags \ - gettext \ - gettext-base \ - intltool-debian \ - indent \ - lcov \ - libapr1 \ - libapr1-dev \ - libasprintf-dev \ - libbison-dev \ - libconfuse-doc \ - libconfuse-dev \ - libcroco3 \ - libexpat1-dev \ - libganglia1 \ - libganglia1-dev \ - libgd-gd2-perl \ - libgettextpo-dev \ - libgettextpo0 \ - libltdl-dev \ - libmail-sendmail-perl \ - libmbedtls-dev \ -# libpython2-dev \ - libpython2.7-dev \ - libsctp-dev \ - libsigsegv2 \ - libssl-dev \ - libssl-doc \ - libsys-hostname-long-perl \ - libtool \ - m4 \ - pkg-config \ - po-debconf \ - uuid-dev \ - zlib1g-dev \ - locales \ - llvm \ - clang \ - clang-format \ - libboost-all-dev \ - ruby-dev \ - zile \ - check \ - libsubunit-dev \ - libsubunit0 \ - emacs \ - gdb \ - libpcap-dev \ - iperf3 \ - libibverbs-dev \ - apt-utils \ - python-all \ - python-apt \ - python-cffi \ - python-cffi-backend \ -# python-dev \ - python-enum34 \ - python-pip \ - python-ply \ - python-setuptools \ - python-virtualenv \ - python-yaml \ - python3-all \ - python3-apt \ - python3-cffi \ - python3-cffi-backend \ - python3-dev \ - python3-pip \ - python3-ply \ - python3-setuptools \ - python3-virtualenv \ - python3-venv \ - && rm -rf /var/lib/apt/lists/* - -# For the docs -RUN apt-get -q update && \ - apt-get install -y -qq \ - python-markupsafe \ - python-jinja2 \ - python-pyparsing \ - doxygen \ - graphviz \ - && rm -rf /var/lib/apt/lists/* - -RUN apt-get -q update && \ - apt-get install -y -qq \ - cmake \ - cmake-data \ - libarchive13 \ - liblzo2-2 \ - librhash0 \ - libuv1 \ - ninja-build \ - cmake-doc \ - lrzip \ - xmlstarlet \ - g++-8 \ - gcc-8 \ - yamllint \ - && rm -rf /var/lib/apt/lists/* - -# Configure locales -RUN locale-gen en_US.UTF-8 && \ - dpkg-reconfigure locales - -# Fix permissions -RUN chown root:syslog /var/log \ - && chmod 755 /etc/default - -RUN mkdir /tmp/dumps -RUN mkdir /workspace && mkdir -p /var/ccache && ln -s /var/ccache /tmp/ccache -ENV CCACHE_DIR=/var/ccache -ENV CCACHE_READONLY=true - -ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' -#RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7 && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 - -RUN curl -L https://packagecloud.io/fdio/master/gpgkey |sudo apt-key add - -#ADD files/99fd.io.list /etc/apt/sources.list.d/99fd.io.list -#ADD files/fdio_master.list /etc/apt/sources.list.d/fdio_master.list - -#RUN apt update && apt install -y vpp-dpdk-dev vpp-dpdk-dkms || true -#RUN mkdir -p /w/dpdk && cd /w/dpdk; apt-get download vpp-dpdk-dkms || true - -#RUN mkdir -p /w/workspace/vpp-verify-master-ubuntu1804 && mkdir -p /home/jenkins -RUN mkdir -p /w/workspace && mkdir -p /home/jenkins -#RUN apt-get purge -y default-jre-headless openjdk-9-jdk-headless openjdk-9-jre-headless || true - -#ADD files/default-jdk-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jdk-headless_1.8-59ubuntu2_amd64.deb -#ADD files/default-jre-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jre-headless_1.8-59ubuntu2_amd64.deb - -#RUN apt-get install -y /tmp/default-jre-headless_1.8-59ubuntu2_amd64.deb /tmp/default-jdk-headless_1.8-59ubuntu2_amd64.deb -#ADD files/jre /etc/apt/preferences.d/jre -ADD files/pc_push /usr/local/bin/pc_push -ADD files/packagecloud /root/.packagecloud -ADD files/packagecloud_api /root/packagecloud_api -ADD files/lf-update-java-alternatives /usr/local/bin/lf-update-java-alternatives -RUN chmod 755 /usr/local/bin/lf-update-java-alternatives -RUN gem install rake -RUN gem install package_cloud - -# VPP PIP pre-cahce -RUN pip install \ - six \ - scapy==2.3.3 \ - pyexpect \ - subprocess32 \ - cffi \ - git+https://github.com/klement/py-lispnetworking@setup \ - pycodestyle - -# CSIT PIP pre-cache -RUN pip3 install \ - ecdsa==0.13.3 \ - paramiko==2.6.0 \ - pycrypto==2.6.1 \ - pypcap==1.2.3 \ - PyYAML==5.1.1 \ - requests==2.22.0 \ - robotframework==3.1.2 \ - scapy==2.4.3 \ - scp==0.13.2 \ - ansible==2.7.8 \ - dill==0.2.8.2 \ - numpy==1.17.3 \ - hdrhistogram==0.6.1 \ - pandas==0.25.3 \ - plotly==4.1.1 \ - PTable==0.9.2 \ - Sphinx==2.2.1 \ - sphinx-rtd-theme==0.4.0 \ - sphinxcontrib-programoutput==0.15 \ - sphinxcontrib-robotdoc==0.11.0 \ - alabaster==0.7.12 \ - Babel==2.7.0 \ - bcrypt==3.1.7 \ - certifi==2019.9.11 \ - cffi==1.13.2 \ - chardet==3.0.4 \ - cryptography==2.8 \ - docutils==0.15.2 \ - future==0.18.2 \ - idna==2.8 \ - imagesize==1.1.0 \ - Jinja2==2.10.3 \ - MarkupSafe==1.1.1 \ - packaging==19.2 \ - pbr==5.4.3 \ - ply==3.11 \ - pycparser==2.19 \ - Pygments==2.4.2 \ - PyNaCl==1.3.0 \ - pyparsing==2.4.4 \ - python-dateutil==2.8.1 \ - pytz==2019.3 \ - retrying==1.3.3 \ - six==1.13.0 \ - snowballstemmer==2.0.0 \ - sphinxcontrib-applehelp==1.0.1 \ - sphinxcontrib-devhelp==1.0.1 \ - sphinxcontrib-htmlhelp==1.0.2 \ - sphinxcontrib-jsmath==1.0.1 \ - sphinxcontrib-qthelp==1.0.2 \ - sphinxcontrib-serializinghtml==1.1.3 \ - urllib3==1.25.6 - -# CSIT PIP pre-cache - ARM workaround -RUN pip3 install scipy==1.1.0 - -RUN mkdir -p /var/cache/vpp/python -RUN mkdir -p /w/Downloads -RUN wget -O /w/Downloads/dpdk-18.02.1.tar.xz http://dpdk.org/browse/dpdk-stable/snapshot/dpdk-stable-18.02.1.tar.xz -RUN wget -O /w/Downloads/dpdk-18.05.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.05.tar.xz -RUN wget -O /w/Downloads/dpdk-18.08.tar.xz http://dpdk.org/browse/dpdk/snapshot/dpdk-18.08.tar.xz -RUN wget -O /w/Downloads/v0.47.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.47.tar.gz -RUN wget -O /w/Downloads/v0.48.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.48.tar.gz -RUN wget -O /w/Downloads/v0.49.tar.gz http://github.com/01org/intel-ipsec-mb/archive/v0.49.tar.gz -#RUN curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash - -#bad and open ssh keys for csit -ADD files/sshconfig /root/.ssh/config -ADD files/badkey /root/.ssh/id_rsa -RUN chmod 600 /root/.ssh/id_rsa - -# for lftools -RUN rm -rf /home/jenkins && useradd -ms /bin/bash jenkins && chown -R jenkins /w && chown -R jenkins /var/ccache && chown -R jenkins /var/cache/vpp && mv /usr/bin/sar /usr/bin/sar.old && ln -s /bin/true /usr/bin/sar -ENV PATH=/root/.local/bin:/home/jenkins/.local/bin:${PATH} - diff --git a/docker/vpp/vpp-ubuntu20/files/badkey b/docker/vpp/vpp-ubuntu20/files/badkey deleted file mode 100644 index 2270aff09..000000000 --- a/docker/vpp/vpp-ubuntu20/files/badkey +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAslDXf4kZOQI8OGQQdIF8o83nBM0B4fzHLYLxxiY2rKiQ5MGM -mQa7p1KKzmd5/NlvFRnXefnjSDQljjPxEY7mh457rX2nXvqHD4GUXZPpBIE73rQ1 -TViIAXdDzFXJ6ee4yX8ewmVakzYBnlUPDidkWyRnjm/xCgKUCO+CD5AH3ND0onks -OYAtHqhDh29/QMIKdMnK87FBxfzhInHwpqPur76zBnpw3u36ylKEymDFrO5dwzsh -QvDWjsYRg9ydTXubtwP6+MOpjdR1SNKxcCHKJrPrdAeJW9jg1imYmYpEHZ/P3qsL -Jm0hGWbFjdxZLIYIz0vN/nTalcAeqT2OWKrXuwIDAQABAoIBAQCcj1g2FOR9ZlYD -WPANqucJVy4/y9OcXHlwnyiyRjj47WOSRdGxRfUa2uEeikHT3ACo8TB8WwfQDGDw -8u/075e+az5xvAJo5OQSnD3sz4Hmv6UWSvkFuPZo+xMe5C/M2/QljiQuoBifaeqP -3rTCQ5ncYCFAMU7b8BmTot551Ybhu2jCbDMHU7nFHEFOvYinkwfVcaqkrVDUuH+D -c3NkAEH9Jz2MEYA2Va4uqFpGt5lfGiED2kMenwPa8eS5LS5HJsxkfMHGlaHXHFUb -D+dG/qJtSslVxdzVPgEGvzswo6TgtY1nZTQcB8U63rktFg38B7QGtOkvswAYzxyk -HdMIiU3RAoGBAOdIEQRcAThj9eiIFywtBgLBOSg4SoOnvELLr6lgUg2+ICmx06LQ -yaai1QRdOWw1VwZ6apNCD00kaUhBu+ou93yLSDnR2uYftkylhcnVuhDyIeNyb81V -hV2z0WuNv3aKBFlBxaq391S7WW1XxhpAAagm8fZZur73wV390EVd/hZJAoGBAMVf -negT2bg5PVKWvsiEU6eZ00W97tlEDLclkiZawXNnM2/c+2x1Tks6Yf1E/j2FFTB4 -r0fesbwN346hCejtq5Bup5YEdFA3KtwT5UyeQQLFGYlCtRmBtOd10wkRS93D0tpX -iIqkf43Gpx6iFdvBWY5A7N+ZmojCy9zpL5TJ4G3jAoGADOGEoRuGrd9TWMoLkFhJ -l2mvhz/rVn3HDGlPtT06FK3cGLZgtRavxGoZNw8CHbayzBeRS/ZH5+H5Qx72GkrX -WcZgFWhMqrhlbMtjMiSHIl556LL86xCyRs+3ACh6211AdMAnBCUOz1dH2cEjtV6P -ORBCNZg1wGEIEfYK3XIorpECgYBubXfQj8KhUs0fdx3Y3Ehdni/ZdlG7F1qx4YBq -mx5e7d+Wd6Hn5Z3fcxO9+yrvypS3YN5YrJzuZSiuCSWdP9RcY7y5r1ZQRv1g0nTZ -MDWZUiNea4cddTd8xKxFB3tV4SkIZi8LustuzDVWa0Mlh4EOmP6uf6c5WxtqRsEL -UwORFwKBgEjZsfmZGBurjOtSrcsteulOB0D2nOqPVRWXmbSNJT/l73DkEllvVyA/ -wdW39nyFrA2Qw1K2F+l8DkzMd/WEjmioSWCsvTkXlvrqPfByKg01zCbYy/mhRW7d -7sQrPOIl8ygsc3JrxmvzibdWmng1MehvpAM1ogWeTUa1lsDTNJ/6 ------END RSA PRIVATE KEY----- diff --git a/docker/vpp/vpp-ubuntu20/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb b/docker/vpp/vpp-ubuntu20/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb Binary files differdeleted file mode 100644 index 32f73674f..000000000 --- a/docker/vpp/vpp-ubuntu20/files/default-jdk-headless_1.8-59ubuntu2_amd64.deb +++ /dev/null diff --git a/docker/vpp/vpp-ubuntu20/files/default-jre-headless_1.8-59ubuntu2_amd64.deb b/docker/vpp/vpp-ubuntu20/files/default-jre-headless_1.8-59ubuntu2_amd64.deb Binary files differdeleted file mode 100644 index bd66af502..000000000 --- a/docker/vpp/vpp-ubuntu20/files/default-jre-headless_1.8-59ubuntu2_amd64.deb +++ /dev/null diff --git a/docker/vpp/vpp-ubuntu20/files/jre b/docker/vpp/vpp-ubuntu20/files/jre deleted file mode 100644 index 2d856174c..000000000 --- a/docker/vpp/vpp-ubuntu20/files/jre +++ /dev/null @@ -1,10 +0,0 @@ -Package: default-jdk-headless -Pin: release a=now -Priority: 1001 -Pin-Priority: 1001 - -Package: default-jre-headless -Pin: release a=now -Priority: 1001 -Pin-Priority: 1001 - diff --git a/docker/vpp/vpp-ubuntu20/files/lf-update-java-alternatives b/docker/vpp/vpp-ubuntu20/files/lf-update-java-alternatives deleted file mode 100644 index 8484a711b..000000000 --- a/docker/vpp/vpp-ubuntu20/files/lf-update-java-alternatives +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: EPL-1.0 -############################################################################## -# Copyright (c) 2018 The Linux Foundation and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# which accompanies this distribution, and is available at -# http://www.eclipse.org/legal/epl-v10.html -############################################################################## - -# This script takes the java-version variable to set the proper alternative -# for java, javac and java_sdk_openjdk for ubuntu or centos/fedora/redhat distros - -JAVA_ENV_FILE="/tmp/java.env" - -update-java-redhat() { - if [[ "${SET_JDK_VERSION//[a-zA-Z]/}" = "11" ]]; then - export JAVA_HOME="/usr/lib/jvm/java-11-openjdk" - else - export JAVA_HOME="/usr/lib/jvm/java-1.${SET_JDK_VERSION//[a-zA-Z:-]/}.0-openjdk" - fi - sudo /usr/sbin/alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/sbin/alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/sbin/alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/sbin/alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/sbin/alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/sbin/alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -update-java-ubuntu() { - export JAVA_HOME="/usr/lib/jvm/java-${SET_JDK_VERSION//[a-zA-Z:-]/}-openjdk-amd64" - sudo /usr/bin/update-alternatives --install /usr/bin/java java "${JAVA_HOME}/bin/java" 1 - sudo /usr/bin/update-alternatives --install /usr/bin/javac javac "${JAVA_HOME}/bin/javac" 1 - sudo /usr/bin/update-alternatives --install /usr/lib/jvm/java-openjdk java_sdk_openjdk "${JAVA_HOME}" 1 - sudo /usr/bin/update-alternatives --set java "${JAVA_HOME}/bin/java" - sudo /usr/bin/update-alternatives --set javac "${JAVA_HOME}/bin/javac" - sudo /usr/bin/update-alternatives --set java_sdk_openjdk "${JAVA_HOME}" - echo JAVA_HOME="$JAVA_HOME" > "$JAVA_ENV_FILE" -} - -echo "---> Updating Java version" -OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${OS}" in - fedora|centos|redhat) - echo "---> RedHat type system detected" - update-java-redhat - ;; - ubuntu) - echo "---> Ubuntu system detected" - update-java-ubuntu - ;; -esac -java -version -echo JAVA_HOME="${JAVA_HOME}" diff --git a/docker/vpp/vpp-ubuntu20/files/packagecloud b/docker/vpp/vpp-ubuntu20/files/packagecloud deleted file mode 100644 index 98322206d..000000000 --- a/docker/vpp/vpp-ubuntu20/files/packagecloud +++ /dev/null @@ -1 +0,0 @@ -{"url":"https://packagecloud.io","token":"$token"} diff --git a/docker/vpp/vpp-ubuntu20/files/packagecloud_api b/docker/vpp/vpp-ubuntu20/files/packagecloud_api deleted file mode 100644 index 9f5374895..000000000 --- a/docker/vpp/vpp-ubuntu20/files/packagecloud_api +++ /dev/null @@ -1,3 +0,0 @@ -machine packagecloud.io -login $pclogin -password diff --git a/docker/vpp/vpp-ubuntu20/files/pc_push b/docker/vpp/vpp-ubuntu20/files/pc_push deleted file mode 100644 index 3fdc8d373..000000000 --- a/docker/vpp/vpp-ubuntu20/files/pc_push +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# REPO is an Environment variable - -set -x - -echo "STARTING PACKAGECLOUD PUSH" - -sleep 10 - -if [ -f /usr/bin/zypper ]; then - FACTER_OS="openSUSE" -else - FACTER_OS=$(/usr/bin/facter operatingsystem) -fi - -if [ -f ~/.packagecloud ]; then - case "$FACTER_OS" in - Ubuntu) - FACTER_LSBNAME=$(/usr/bin/facter lsbdistcodename) - DEBS=$(find . -type f -iname '*.deb') - package_cloud push "${REPO}/${STREAM}/ubuntu/${FACTER_LSBNAME}/main/" ${DEBS} - ;; - CentOS) - FACTER_OSMAJREL=$(/usr/bin/facter operatingsystemmajrelease) - FACTER_ARCH=$(/usr/bin/facter architecture) - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm') - package_cloud push "${REPO}/${STREAM}/el/${FACTER_OSMAJREL}/os/${FACTER_ARCH}/" ${RPMS} - ;; - openSUSE) - # Use /etc/os-release on openSUSE to get $VERSION - . /etc/os-release - RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep -v 'vpp-ext-deps') - VPP_EXT_RPMS=$(find . -type f -iregex '.*/.*\.\(s\)?rpm' | grep 'vpp-ext-deps') - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${RPMS} - # This file may have already been uploaded. Don't error out if it exists. - package_cloud push "${REPO}/${STREAM}/opensuse/${VERSION}/" ${VPP_EXT_RPMS} --skip-errors - ;; - esac -fi diff --git a/docker/vpp/vpp-ubuntu20/files/sshconfig b/docker/vpp/vpp-ubuntu20/files/sshconfig deleted file mode 100644 index 8dd13540f..000000000 --- a/docker/vpp/vpp-ubuntu20/files/sshconfig +++ /dev/null @@ -1,3 +0,0 @@ -Host * - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null |