summaryrefslogtreecommitdiffstats
path: root/docs/development/building/build.rst
blob: 52a8a0ecda5378236910a27ce5055104c9981130 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
.. This work is licensed under a Creative Commons Attribution 4.0 International
.. License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc

Building containers and VM images
=================================

NFVbench is delivered as Docker container which is built using the Dockerfile under the docker directory.
This container includes the following parts:

- TRex traffic generator
- NFVbench orchestration
- NFVbench test VM (qcow2)

Versioning
----------
These 3 parts are versioned independently and the Dockerfile will determine the combination of versions that
are packaged in the container for the version associated to the Dockerfile.

The NFVbench version is controlled by the git tag that conforms to the semver version (e.g. "3.3.0").
This tag controls the version of the Dockerfile used for building the container.

The TRex version is controlled by the TREX_VER variable in Dockerfile (e.g. ENV TREX_VER "v2.56").
TRex is installed in container from https://trex-tgn.cisco.com/trex/release/

The Test VM version is controlled by the VM_IMAGE_VER variable in Dockerfile (e.g. ENV VM_IMAGE_VER "0.8").
The VM is extracted from google storage (http://artifacts.opnfv.org)

Updating the VM image
---------------------

When the VM image is changed, its version must be increased in order to distinguish from previous image versions.
The version strings to change are located in 2 files:

- docker/Dockerfile
- nfvbench/nfvbenchvm/dib/build-image.sh

Building and uploading the VM image
-----------------------------------
The VM image is built and uploaded to Google storage from the CI/CD whenever the
commit text of a gerrit review contains the word "buildvm".

For details on how this is done, refer to ./jjb/nfvbench/nfvbench.yaml in the opnfv releng repository.

Building a new NFVbench container image
---------------------------------------
A new container image can be built and published to Dockerhub by CI/CD by applying a new semver tag to the
nfvbench repository.


Workflow summary
----------------

NFVbench code has changed:

- commit with gerrit
- apply a new semver tag to trigger the container image build/publication

VM code has changed:

- update VM version in the 2 locations
- commit VM changes with gerrit and add "buildvm" in your commit message to trigger VM build and publish to google storage
- apply a new semver tag to trigger the container image build/publication

To increase the TRex version:

- change the Trex version in Dockerfile
- commit with gerrit
- apply a new semver tag to trigger the container image build/publication