diff options
Diffstat (limited to 'jjb/functest')
22 files changed, 7937 insertions, 2750 deletions
diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh deleted file mode 100755 index 14143d2e8..000000000 --- a/jjb/functest/functest-alpine.sh +++ /dev/null @@ -1,270 +0,0 @@ -#!/bin/bash - -set -e -set +u -set +o pipefail - -REPO=${REPO:-opnfv} -CI_LOOP=${CI_LOOP:-daily} -TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results -ENERGY_RECORDER_API_URL=http://energy.opnfv.fr/resources -DOCKER_TAG=${DOCKER_TAG:-$([[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/})} - -run_tiers() { - tiers=$1 - cmd_opt="run_tests -r -t all" - [[ $BUILD_TAG =~ "suite" ]] && cmd_opt="run_tests -t all" - for tier in ${tiers[@]}; do - FUNCTEST_IMAGE=${REPO}/functest-${tier}:${DOCKER_TAG} - echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..." - docker pull ${FUNCTEST_IMAGE}>/dev/null - cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" - echo "Running Functest tier '${tier}'. CMD: ${cmd}" - eval ${cmd} - ret_value=$? - if [ ${ret_value} != 0 ]; then - echo ${ret_value} > ${ret_val_file} - if [ ${tier} == 'healthcheck' ]; then - echo "Healthcheck tier failed. Exiting Functest..." - skip_tests=1 - break - fi - fi - done -} - -run_test() { - test_name=$1 - cmd_opt="run_tests -t ${test_name}" - # Determine which Functest image should be used for the test case - case ${test_name} in - connection_check|tenantnetwork1|tenantnetwork2|vmready1|vmready2|singlevm1|singlevm2|vping_ssh|vping_userdata|cinder_test|odl|api_check|snaps_health_check|tempest_smoke) - FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG} ;; - neutron-tempest-plugin-api|rally_sanity|refstack_defcore|tempest_full|tempest_scenario|patrole|snaps_smoke|neutron_trunk|networking-bgpvpn|networking-sfc|barbican) - FUNCTEST_IMAGE=${REPO}/functest-smoke:${DOCKER_TAG} ;; - rally_full|rally_jobs|shaker|vmtp) - FUNCTEST_IMAGE=${REPO}/functest-benchmarking:${DOCKER_TAG} ;; - cloudify|cloudify_ims|heat_ims|vyos_vrouter|juju_epc) - FUNCTEST_IMAGE=${REPO}/functest-vnf:${DOCKER_TAG} ;; - *) - echo "Unkown test case $test_name" - exit 1 - ;; - esac - echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..." - docker pull ${FUNCTEST_IMAGE}>/dev/null - cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" - echo "Running Functest test case '${test_name}'. CMD: ${cmd}" - eval ${cmd} - ret_value=$? - if [ ${ret_value} != 0 ]; then - echo ${ret_value} > ${ret_val_file} - fi -} - - -redirect="/dev/stdout" -FUNCTEST_DIR=/home/opnfv/functest -DEPLOY_TYPE=baremetal -[[ $BUILD_TAG =~ "virtual" ]] && DEPLOY_TYPE=virt -HOST_ARCH=$(uname -m) - -# Prepare OpenStack credentials volume -rc_file=${HOME}/opnfv-openrc.sh - -if [[ ${INSTALLER_TYPE} == 'joid' ]]; then - rc_file=$LAB_CONFIG/admin-openrc -elif [[ ${INSTALLER_TYPE} == 'fuel' ]] && [[ "${DEPLOY_SCENARIO}" =~ -ha$ ]]; then - cacert_file_vol="-v ${HOME}/os_cacert:/etc/ssl/certs/mcp_os_cacert" -fi - -rc_file_vol="-v ${rc_file}:${FUNCTEST_DIR}/conf/env_file" - -echo "Functest: Start Docker and prepare environment" - -echo "Functest: Download images that will be used by test cases" -images_dir="${HOME}/opnfv/functest/images" -download_script=${WORKSPACE}/functest/ci/download_images.sh -chmod +x ${download_script} -${download_script} ${images_dir} ${DEPLOY_SCENARIO} ${HOST_ARCH} 2> ${redirect} - -images_vol="-v ${images_dir}:${FUNCTEST_DIR}/images" - -dir_result="${HOME}/opnfv/functest/results/${BRANCH##*/}" -mkdir -p ${dir_result} -sudo rm -rf ${dir_result}/* -results_vol="-v ${dir_result}:${FUNCTEST_DIR}/results" -custom_params= -test -f ${HOME}/opnfv/functest/custom/params_${DOCKER_TAG} && custom_params=$(cat ${HOME}/opnfv/functest/custom/params_${DOCKER_TAG}) - -envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \ - -e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \ - -e BUILD_TAG=${BUILD_TAG} -e DEPLOY_TYPE=${DEPLOY_TYPE} -e CI_LOOP=${CI_LOOP} \ - -e TEST_DB_URL=${TEST_DB_URL} -e ENERGY_RECORDER_API_URL=${ENERGY_RECORDER_API_URL} \ - -e DEBUG=true" - -ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" - -if [ "${INSTALLER_TYPE}" == 'fuel' ]; then - COMPUTE_ARCH=$(ssh -l ubuntu ${INSTALLER_IP} -i ${SSH_KEY} ${ssh_options} \ - "sudo salt 'cmp*' grains.get cpuarch --out yaml | awk '{print \$2; exit}'") - IMAGE_PROPERTIES="hw_disk_bus:scsi,hw_scsi_model:virtio-scsi" - envs="${envs} -e POD_ARCH=${COMPUTE_ARCH} -e BLOCK_MIGRATION=false" -fi - -if [[ ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_SCENARIO} == 'os-nosdn-nofeature-noha' ]]; then - libvirt_vol="-v ${ssh_key}:${FUNCTEST_DIR}/conf/libvirt_key" - envs="${envs} -e LIBVIRT_USER=ubuntu -e LIBVIRT_KEY_PATH=${FUNCTEST_DIR}/conf/libvirt_key" -fi - -if [[ ${DEPLOY_SCENARIO} == *"ovs"* ]] || [[ ${DEPLOY_SCENARIO} == *"fdio"* ]]; then - if [[ -n ${IMAGE_PROPERTIES} ]]; then - IMAGE_PROPERTIES="${IMAGE_PROPERTIES},hw_mem_page_size:large" - else - IMAGE_PROPERTIES="hw_mem_page_size:large" - fi - FLAVOR_EXTRA_SPECS="hw:mem_page_size:large" -fi - -if [[ -n ${IMAGE_PROPERTIES} ]] || [[ -n ${FLAVOR_EXTRA_SPECS} ]]; then - envs="${envs} -e IMAGE_PROPERTIES=${IMAGE_PROPERTIES} -e FLAVOR_EXTRA_SPECS=${FLAVOR_EXTRA_SPECS}" -fi - -tempest_conf_yaml=$(mktemp) -case ${INSTALLER_TYPE} in -apex) - cat << EOF > "${tempest_conf_yaml}" ---- -compute-feature-enabled: - shelve: false - vnc_console: true - block_migration_for_live_migration: false -identity-feature-enabled: - api_v2: false - api_v2_admin: false -image-feature-enabled: - api_v2: true - api_v1: false -object-storage: - operator_role: SwiftOperator -volume: - storage_protocol: ceph -volume-feature-enabled: - backup: false -EOF - ;; -fuel) - cat << EOF > "${tempest_conf_yaml}" ---- -compute-feature-enabled: - shelve: false - vnc_console: false - spice_console: true -identity-feature-enabled: - api_v2: false - api_v2_admin: false -image-feature-enabled: - api_v2: true - api_v1: false -volume: - storage_protocol: iSCSI -volume-feature-enabled: - backup: false -EOF - ;; -*) - cat << EOF > "${tempest_conf_yaml}" ---- -compute-feature-enabled: - shelve: false - vnc_console: false -identity-feature-enabled: - api_v2: false - api_v2_admin: false -image-feature-enabled: - api_v2: true - api_v1: false -volume: - storage_protocol: iSCSI -volume-feature-enabled: - backup: false -EOF - ;; -esac -case ${BRANCH} in -master) - cat << EOF >> "${tempest_conf_yaml}" -compute: - max_microversion: latest -EOF - ;; -stable/hunter) - cat << EOF >> "${tempest_conf_yaml}" -compute: - max_microversion: 2.65 -EOF - ;; -esac -echo "tempest_conf.yaml:" && cat "${tempest_conf_yaml}" - -volumes="${images_vol} ${results_vol} ${sshkey_vol} ${libvirt_vol} \ - ${userconfig_vol} ${rc_file_vol} ${cacert_file_vol} \ - -v ${tempest_conf_yaml}:/usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml" - -if [[ ${INSTALLER_TYPE} == 'apex' ]]; then - blacklist_yaml=$(mktemp) - cat << EOF >> "${blacklist_yaml}" ---- -- - scenarios: - - os-ovn-nofeature-ha - tests: - - neutron_tempest_plugin.api.admin.test_agent_management - - neutron_tempest_plugin.api.admin.test_dhcp_agent_scheduler - - patrole_tempest_plugin.tests.api.network.test_agents_rbac - - patrole_tempest_plugin.tests.api.network.test_networks_rbac.NetworksRbacTest.test_create_network_provider_network_type - - patrole_tempest_plugin.tests.api.network.test_networks_rbac.NetworksRbacTest.test_create_network_provider_segmentation_id - - tempest.api.network.admin.test_agent_management - - tempest.api.network.admin.test_dhcp_agent_scheduler - - tempest.api.object_storage.test_crossdomain.CrossdomainTest.test_get_crossdomain_policy -- - scenarios: - - os-nosdn-nofeature-ha - tests: - - tempest.api.object_storage.test_crossdomain.CrossdomainTest.test_get_crossdomain_policy -- - scenarios: - - os-nosdn-nofeature-noha - tests: - - tempest.api.object_storage.test_crossdomain.CrossdomainTest.test_get_crossdomain_policy -EOF - volumes="${volumes} -v ${blacklist_yaml}:/usr/lib/python2.7/site-packages/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml" -fi - -ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value" -echo 0 > ${ret_val_file} - -set +e - -if [ ${FUNCTEST_MODE} == 'testcase' ]; then - echo "FUNCTEST_MODE=testcase, FUNCTEST_SUITE_NAME=${FUNCTEST_SUITE_NAME}" - run_test ${FUNCTEST_SUITE_NAME} -elif [ ${FUNCTEST_MODE} == 'tier' ]; then - echo "FUNCTEST_MODE=tier, FUNCTEST_TIER=${FUNCTEST_TIER}" - tiers=(${FUNCTEST_TIER}) - run_tiers ${tiers} -else - tests=() - skip_tests=0 - if [ "${HOST_ARCH}" != "aarch64" ]; then - tiers=(healthcheck smoke benchmarking vnf) - else - tiers=(healthcheck smoke benchmarking) - fi - run_tiers ${tiers} - if [ ${skip_tests} -eq 0 ]; then - for test in "${tests[@]}"; do - run_test "$test" - done - fi -fi diff --git a/jjb/functest/functest-cleanup.sh b/jjb/functest/functest-cleanup.sh deleted file mode 100755 index c21b543a6..000000000 --- a/jjb/functest/functest-cleanup.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null" - -echo "Cleaning up docker containers/images..." -FUNCTEST_IMAGE=opnfv/functest - -# Remove containers along with image opnfv/functest*:<none> -dangling_images=($(docker images -f "dangling=true" | grep $FUNCTEST_IMAGE | awk '{print $3}')) -if [[ -n ${dangling_images} ]]; then - echo " Removing $FUNCTEST_IMAGE:<none> images and their containers..." - for image_id in "${dangling_images[@]}"; do - echo " Removing image_id: $image_id and its containers" - containers=$(docker ps -a | grep $image_id | awk '{print $1}') - if [[ -n "$containers" ]];then - docker rm -f $containers >${redirect} - fi - docker rmi $image_id >${redirect} - done -fi - -# Remove previous running containers if exist -functest_containers=$(docker ps -a | grep $FUNCTEST_IMAGE | awk '{print $1}') -if [[ -n ${functest_containers} ]]; then - echo " Removing existing $FUNCTEST_IMAGE containers..." - docker rm -f $functest_containers >${redirect} -fi - -# Remove existing images if exist -if [[ $CLEAN_DOCKER_IMAGES == true ]]; then - functest_image_tags=($(docker images | grep $FUNCTEST_IMAGE | awk '{print $2}')) - if [[ -n ${functest_image_tags} ]]; then - echo " Docker images to be removed:" >${redirect} - (docker images | head -1 && docker images | grep $FUNCTEST_IMAGE) >${redirect} - for tag in "${functest_image_tags[@]}"; do - echo " Removing docker image $FUNCTEST_IMAGE:$tag..." - docker rmi $FUNCTEST_IMAGE:$tag >${redirect} - done - fi -fi diff --git a/jjb/functest/functest-daily-jobs.yaml b/jjb/functest/functest-daily-jobs.yaml deleted file mode 100644 index 3f5e7fd12..000000000 --- a/jjb/functest/functest-daily-jobs.yaml +++ /dev/null @@ -1,304 +0,0 @@ ---- -################################### -# job configuration for functest -################################### -- project: - name: functest-daily - - project: functest - - # ------------------------------- - # BRANCH ANCHORS - # ------------------------------- - master: &master - stream: master - branch: '{stream}' - gs-pathname: '' - iruya: &iruya - stream: iruya - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - hunter: &hunter - stream: hunter - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - # ------------------------------- - # POD, INSTALLER, AND BRANCH MAPPING - # ------------------------------- - # Installers using labels - # CI PODs - # This section should only contain the installers - # that have been switched using labels for slaves - # ------------------------------- - pod: - # fuel CI PODs - - baremetal: - slave-label: fuel-baremetal - installer: fuel - <<: *master - - virtual: - slave-label: fuel-virtual - installer: fuel - <<: *master - - baremetal: - slave-label: fuel-baremetal - installer: fuel - <<: *hunter - - virtual: - slave-label: fuel-virtual - installer: fuel - <<: *hunter - # apex CI PODs - - virtual: - slave-label: apex-virtual-master - installer: apex - <<: *master - - baremetal: - slave-label: apex-baremetal-master - installer: apex - <<: *master - - virtual: - slave-label: apex-virtual-master - installer: apex - <<: *hunter - - baremetal: - slave-label: apex-baremetal-master - installer: apex - <<: *hunter - # armband CI PODs - - armband-baremetal: - slave-label: armband-baremetal - installer: fuel - <<: *master - - armband-baremetal: - slave-label: armband-baremetal - installer: fuel - <<: *hunter - # fuel NONE CI PODs - - zte-pod1: - slave-label: fuel-baremetal - installer: fuel - <<: *master - - itri-pod1: - slave-label: fuel-baremetal - installer: fuel - <<: *master - - testsuite: - - 'suite': - job-timeout: 60 - - 'daily': - job-timeout: 600 - - jobs: - - 'functest-{installer}-{pod}-{testsuite}-{stream}' - -################################ -# job template -################################ -- job-template: - name: 'functest-{installer}-{pod}-{testsuite}-{stream}' - - concurrent: true - - properties: - - logrotate-default - - throttle: - enabled: true - max-per-node: 1 - max-total: 10 - option: 'project' - - wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: '{job-timeout}' - abort: true - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - 'functest-{testsuite}-parameter' - - string: - name: DEPLOY_SCENARIO - default: 'os-nosdn-nofeature-noha' - - string: - name: DOCKER_TAG - default: '' - - string: - name: CLEAN_DOCKER_IMAGES - default: 'false' - description: 'Remove downloaded docker images (opnfv/functest*:*)' - - functest-parameter: - gs-pathname: '{gs-pathname}' - - scm: - - git-scm - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'functest-{testsuite}-builder' - - -######################## -# parameter macros -######################## -- parameter: - name: functest-daily-parameter - parameters: - - string: - name: FUNCTEST_MODE - default: 'daily' - description: "Daily suite name to run" - -- parameter: - name: functest-suite-parameter - parameters: - - choice: - name: FUNCTEST_MODE - choices: - - 'tier' - - 'testcase' - default: 'tier' - description: "Test case or Tier to be run" - - choice: - name: FUNCTEST_SUITE_NAME - choices: - - 'connection_check' - - 'api_check' - - 'snaps_health_check' - - 'vping_ssh' - - 'vping_userdata' - - 'cinder_test' - - 'tempest_smoke' - - 'rally_sanity' - - 'refstack_defcore' - - 'patrole' - - 'odl' - - 'snaps_smoke' - - 'shaker' - - 'vmtp' - - 'neutron_trunk' - - 'tempest_full' - - 'rally_full' - - 'cloudify_ims' - - 'vyos_vrouter' - - 'juju_epc' - - 'parser' - default: 'connection_check' - - choice: - name: FUNCTEST_TIER - choices: - - 'healthcheck' - - 'smoke' - - 'benchmarking' - - 'components' - - 'vnf' - - 'parser' - default: 'healthcheck' - - string: - name: TESTCASE_OPTIONS - default: '' - description: 'Additional parameters specific to test case(s)' - -- parameter: - name: functest-parameter - parameters: - - string: - name: GS_PATHNAME - default: '{gs-pathname}' - description: "Version directory where the opnfv documents will be stored in gs repository" - - string: - name: FUNCTEST_REPO_DIR - default: "/home/opnfv/repos/functest" - description: "Directory where the Functest repository is cloned" - - string: - name: PUSH_RESULTS_TO_DB - default: "true" - description: "Push the results of all the tests to the resultDB" - - string: - name: CI_DEBUG - default: 'false' - description: "Show debug output information" - - string: - name: RC_FILE_PATH - default: '' - description: "Path to the OS credentials file if given" - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest images" -######################## -# trigger macros -######################## -- trigger: - name: 'functest-master' - triggers: - - pollscm: - cron: "H 9 * * *" -######################## -# builder macros -######################## -- builder: - name: functest-daily-builder - builders: - - 'functest-cleanup' - - 'functest-daily' - - 'functest-store-results' - - 'functest-exit' - -- builder: - name: functest-suite-builder - builders: - - 'functest-cleanup' - - 'functest-daily' - - 'functest-store-results' - - 'functest-exit' - -- builder: - name: functest-daily - builders: - # yamllint disable rule:indentation - - conditional-step: - condition-kind: regex-match - regex: "os-.*" - label: '$DEPLOY_SCENARIO' - steps: - - shell: - !include-raw: - - ./functest-env-presetup.sh - - ../../utils/fetch_os_creds.sh - - ./functest-alpine.sh - - conditional-step: - condition-kind: regex-match - regex: "k8-.*" - label: '$DEPLOY_SCENARIO' - steps: - - shell: - !include-raw: - - ../../utils/fetch_k8_conf.sh - - ./functest-k8.sh - -# yamllint enable rule:indentation -- builder: - name: functest-store-results - builders: - - shell: - !include-raw: ../../utils/push-test-logs.sh - -- builder: - name: functest-cleanup - builders: - - shell: - !include-raw: ./functest-cleanup.sh - -- builder: - name: functest-exit - builders: - - shell: - !include-raw: ./functest-exit.sh diff --git a/jjb/functest/functest-docker.yaml b/jjb/functest/functest-docker.yaml deleted file mode 100644 index a0741f1ee..000000000 --- a/jjb/functest/functest-docker.yaml +++ /dev/null @@ -1,327 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## -- project: - - name: functest-docker - - project: functest - - stream: - - master: - branch: '{stream}' - disabled: false - - jerma: - branch: 'stable/{stream}' - disabled: false - - iruya: - branch: 'stable/{stream}' - disabled: false - - hunter: - branch: 'stable/{stream}' - disabled: false - - arch_tag: - - 'amd64': - slave_label: 'opnfv-build-ubuntu' - - 'arm64': - slave_label: 'opnfv-build-ubuntu-arm' - - # yamllint disable rule:key-duplicates - image: - - 'core' - - 'tempest' - - 'healthcheck' - - 'smoke' - - 'benchmarking' - - 'vnf' - - 'smoke-cntt' - - 'benchmarking-cntt' - - exclude: - - stream: 'master' - image: 'tempest' - - stream: 'jerma' - image: 'tempest' - - # settings for jobs run in multijob phases - build-job-settings: &build-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: | - PUSH_IMAGE=$PUSH_IMAGE - COMMIT_ID=$COMMIT_ID - GERRIT_REFNAME=$GERRIT_REFNAME - DOCKERFILE=$DOCKERFILE - kill-phase-on: FAILURE - abort-all-jobs: false - - manifest-job-settings: &manifest-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: - GERRIT_REFNAME=$GERRIT_REFNAME - kill-phase-on: FAILURE - abort-all-jobs: false - - # yamllint enable rule:key-duplicates - jobs: - - "functest-docker-{stream}" - - "functest-{image}-docker-build-{arch_tag}-{stream}" - - "functest-{image}-docker-manifest-{stream}" - -######################## -# job templates -######################## -- job-template: - name: 'functest-docker-{stream}' - - project-type: multijob - - disabled: '{obj:disabled}' - - parameters: - - functest-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: 'opnfv-build-ubuntu' - arch_tag: 'amd64' - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - triggers: - - pollscm: - cron: "*/30 * * * *" - - gerrit-trigger-tag-created: - project: '{project}' - - builders: - - multijob: - name: 'build functest-core images' - execution-type: PARALLEL - projects: - - name: 'functest-core-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-core-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish functest-core manifests' - execution-type: PARALLEL - projects: - - name: 'functest-core-docker-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build functest-tempest images' - execution-type: PARALLEL - projects: - - name: 'functest-tempest-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-tempest-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish functest-tempest manifests' - execution-type: PARALLEL - projects: - - name: 'functest-tempest-docker-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build all functest images' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-healthcheck-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-healthcheck-docker-build-arm64-{stream}' - <<: *build-job-settings - - name: 'functest-smoke-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-smoke-docker-build-arm64-{stream}' - <<: *build-job-settings - - name: 'functest-benchmarking-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-benchmarking-docker-build-arm64-{stream}' - <<: *build-job-settings - - name: 'functest-vnf-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-vnf-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish all manifests' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-healthcheck-docker-manifest-{stream}' - <<: *manifest-job-settings - - name: 'functest-smoke-docker-manifest-{stream}' - <<: *manifest-job-settings - - name: 'functest-benchmarking-docker-manifest-{stream}' - <<: *manifest-job-settings - - name: 'functest-vnf-docker-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build all functest cntt images' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-smoke-cntt-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-smoke-cntt-docker-build-arm64-{stream}' - <<: *build-job-settings - - name: 'functest-benchmarking-cntt-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-benchmarking-cntt-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish all cntt manifests' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-smoke-cntt-docker-manifest-{stream}' - <<: *manifest-job-settings - - name: 'functest-benchmarking-cntt-docker-manifest-{stream}' - <<: *manifest-job-settings - - publishers: - - 'functest-amd64-recipients' - - 'functest-arm64-recipients' - -- job-template: - name: 'functest-{image}-docker-build-{arch_tag}-{stream}' - disabled: '{obj:disabled}' - parameters: - - functest-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: '{slave_label}' - arch_tag: '{arch_tag}' - scm: - - git-scm - builders: - - shell: | - #!/bin/bash -ex - case "{arch_tag}" in - "arm64") - sudo amd64_dirs= arm64_dirs=docker/{image} arm_dirs= bash ./build.sh ;; - *) - sudo amd64_dirs=docker/{image} arm64_dirs= arm_dirs= bash ./build.sh ;; - esac - exit $? - -- job-template: - name: 'functest-{image}-docker-manifest-{stream}' - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: 'opnfv-build-ubuntu' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest images" - - - disabled: '{obj:disabled}' - - builders: - - shell: | - #!/bin/bash -ex - case "{stream}" in - "master") - tag="latest" ;; - *) - tag="{stream}" ;; - esac - sudo manifest-tool push from-args \ - --platforms linux/amd64,linux/arm64 \ - --template $REPO/functest-{image}:ARCH-$tag \ - --target $REPO/functest-{image}:$tag - exit $? - -# parameter macro -- parameter: - name: functest-job-parameters - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: '{slave_label}' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - string: - name: COMMIT_ID - default: "" - description: "commit id to make a snapshot docker image" - - string: - name: GERRIT_REFNAME - default: "" - description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1" - - string: - name: DOCKERFILE - default: "Dockerfile" - description: "Dockerfile to use for creating the image." - - string: - name: ARCH_TAG - default: "{arch_tag}" - description: "If set, this value will be added to the docker image tag as a prefix" - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest images" - -# publisher macros -- publisher: - name: 'functest-arm64-recipients' - publishers: - - email: - recipients: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - delia.popescu@enea.com - -- publisher: - name: 'functest-amd64-recipients' - publishers: - - email: - recipients: > - jalausuch@suse.com morgan.richomme@orange.com - cedric.ollivier@orange.com feng.xiaowei@zte.com.cn - juha.kosonen@nokia.com wangwulin@huawei.com - valentin.boucher@kontron.com diff --git a/jjb/functest/functest-env-presetup.sh b/jjb/functest/functest-env-presetup.sh deleted file mode 100755 index 510670bc2..000000000 --- a/jjb/functest/functest-env-presetup.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash -set -o errexit -set -o pipefail - -# Fetch INSTALLER_IP for APEX deployments -if [[ ${INSTALLER_TYPE} == 'apex' ]]; then - if [ -n "$RC_FILE_PATH" ]; then - echo "RC_FILE_PATH is set: ${RC_FILE_PATH}...skipping detecting UC IP" - else - echo "Gathering IP information for Apex installer VM" - ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" - if sudo virsh list | grep undercloud; then - echo "Installer VM detected" - undercloud_mac=$(sudo virsh domiflist undercloud | grep default | \ - grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+") - export INSTALLER_IP=$(/usr/sbin/arp -e | grep ${undercloud_mac} | awk {'print $1'}) - export sshkey_vol="-v /root/.ssh/id_rsa:/root/.ssh/id_rsa" - sudo scp $ssh_options root@${INSTALLER_IP}:/home/stack/stackrc ${HOME}/stackrc - export stackrc_vol="-v ${HOME}/stackrc:/home/opnfv/functest/conf/stackrc" - - if sudo iptables -C FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then - sudo iptables -D FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable - fi - if sudo iptables -C FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable 2> ${redirect}; then - sudo iptables -D FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable - fi - echo "Installer ip is ${INSTALLER_IP}" - else - echo "No available installer VM exists and no credentials provided...exiting" - exit 1 - fi - fi - -elif [[ ${INSTALLER_TYPE} == 'daisy' ]]; then - echo "Gathering IP information for Daisy installer VM" - if sudo virsh list | grep daisy; then - echo "Installer VM detected" - - bridge_name=$(sudo virsh domiflist daisy | grep vnet | awk '{print $3}') - echo "Bridge is $bridge_name" - - installer_mac=$(sudo virsh domiflist daisy | grep vnet | \ - grep -Eo "[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+") - export INSTALLER_IP=$(/usr/sbin/arp -e -i $bridge_name | grep ${installer_mac} | head -n 1 | awk {'print $1'}) - - echo "Installer ip is ${INSTALLER_IP}" - else - echo "No available installer VM exists...exiting" - exit 1 - fi - -elif [[ ${INSTALLER_TYPE} == 'fuel' ]]; then - if [[ ! "${BRANCH}" =~ "danube" ]]; then - echo "Map mcp ssh_key" - export sshkey_vol="-v ${SSH_KEY:-/var/lib/opnfv/mcp.rsa}:/root/.ssh/id_rsa" - fi -fi - diff --git a/jjb/functest/functest-exit.sh b/jjb/functest/functest-exit.sh deleted file mode 100644 index 925a3cfbb..000000000 --- a/jjb/functest/functest-exit.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value" -if [ ! -f ${ret_val_file} ]; then - echo "Return value not found!" - exit -1 -fi - -ret_val=`cat ${ret_val_file}` - -exit ${ret_val} diff --git a/jjb/functest/functest-k8.sh b/jjb/functest/functest-k8.sh deleted file mode 100755 index fb0e95526..000000000 --- a/jjb/functest/functest-k8.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -set -e -set +u -set +o pipefail - -redirect="/dev/stdout" -FUNCTEST_DIR=/home/opnfv/functest - -admin_conf_file_vol="-v ${HOME}/admin.conf:/root/.kube/config" -cat ${HOME}/admin.conf - -dir_result="${HOME}/opnfv/functest/results/${BRANCH##*/}" -mkdir -p ${dir_result} -sudo rm -rf ${dir_result}/* -results_vol="-v ${dir_result}:${FUNCTEST_DIR}/results" - -volumes="${results_vol} ${admin_conf_file_vol}" - -envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} \ - -e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \ - -e BUILD_TAG=${BUILD_TAG}" - -DOCKER_TAG=${DOCKER_TAG:-$([[ ${BRANCH##*/} == "master" ]] && echo "latest" || echo ${BRANCH##*/})} - -set +e - -ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value" -echo 0 > ${ret_val_file} - -FUNCTEST_IMAGES="\ -opnfv/functest-kubernetes-healthcheck:${DOCKER_TAG} \ -opnfv/functest-kubernetes-smoke:${DOCKER_TAG}" -cmd_opt="run_tests -r -t all" - -for image in ${FUNCTEST_IMAGES}; do - echo "Pulling Docker image ${image} ..." - docker pull "${image}" >/dev/null - cmd="docker run --rm ${envs} ${volumes} ${image} /bin/bash -c '${cmd_opt}'" - echo "Running Functest k8s test cases, CMD: ${cmd}" - eval ${cmd} - ret_value=$? - if [ ${ret_value} != 0 ]; then - echo ${ret_value} > ${ret_val_file} - fi -done diff --git a/jjb/functest/functest-kubernetes-docker.yaml b/jjb/functest/functest-kubernetes-docker.yaml deleted file mode 100644 index 8ae350a08..000000000 --- a/jjb/functest/functest-kubernetes-docker.yaml +++ /dev/null @@ -1,276 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## -- project: - - name: functest-kubernetes-docker - - project: functest-kubernetes - - stream: - - master: - branch: '{stream}' - disabled: false - - jerma: - branch: 'stable/{stream}' - disabled: false - - iruya: - branch: 'stable/{stream}' - disabled: false - - hunter: - branch: 'stable/{stream}' - disabled: false - - arch_tag: - - 'amd64': - slave_label: 'opnfv-build-ubuntu' - - 'arm64': - slave_label: 'opnfv-build-ubuntu-arm' - - # yamllint disable rule:key-duplicates - image: - - 'core' - - 'healthcheck' - - 'smoke' - - # settings for jobs run in multijob phases - build-job-settings: &build-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: | - PUSH_IMAGE=$PUSH_IMAGE - COMMIT_ID=$COMMIT_ID - GERRIT_REFNAME=$GERRIT_REFNAME - DOCKERFILE=$DOCKERFILE - kill-phase-on: FAILURE - abort-all-jobs: false - - manifest-job-settings: &manifest-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: - GERRIT_REFNAME=$GERRIT_REFNAME - kill-phase-on: FAILURE - abort-all-jobs: false - - # yamllint enable rule:key-duplicates - jobs: - - "functest-kubernetes-docker-{stream}" - - "functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}" - - "functest-kubernetes-{image}-docker-manifest-{stream}" - -######################## -# job templates -######################## -- job-template: - name: 'functest-kubernetes-docker-{stream}' - - project-type: multijob - - disabled: '{obj:disabled}' - - parameters: - - functest-kubernetes-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: 'opnfv-build-ubuntu' - arch_tag: 'amd64' - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - triggers: - - pollscm: - cron: "*/30 * * * *" - - gerrit-trigger-tag-created: - project: '{project}' - - builders: - - multijob: - name: 'build functest-kubernetes-core images' - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-core-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-kubernetes-core-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish functest-kubernetes-core manifests' - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-core-docker-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build functest-kubernetes-healthcheck images' - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-healthcheck-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-kubernetes-healthcheck-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish functest-kubernetes-healthcheck manifests' - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-healthcheck-docker-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build all functest-kubernetes images' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-smoke-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'functest-kubernetes-smoke-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish all manifests' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'functest-kubernetes-smoke-docker-manifest-{stream}' - <<: *manifest-job-settings - - publishers: - - 'functest-kubernetes-amd64-recipients' - - 'functest-kubernetes-arm64-recipients' - -- job-template: - name: 'functest-kubernetes-{image}-docker-build-{arch_tag}-{stream}' - disabled: '{obj:disabled}' - parameters: - - functest-kubernetes-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: '{slave_label}' - arch_tag: '{arch_tag}' - scm: - - git-scm - builders: - - shell: | - #!/bin/bash -ex - case "{arch_tag}" in - "arm64") - sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;; - *) - sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;; - esac - exit $? - -- job-template: - name: 'functest-kubernetes-{image}-docker-manifest-{stream}' - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: 'opnfv-build-ubuntu' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest-kubernetes images" - - - disabled: '{obj:disabled}' - - builders: - - shell: | - #!/bin/bash -ex - case "{stream}" in - "master") - tag="latest" ;; - *) - tag="{stream}" ;; - esac - sudo manifest-tool push from-args \ - --platforms linux/amd64,linux/arm64 \ - --template $REPO/functest-kubernetes-{image}:ARCH-$tag \ - --target $REPO/functest-kubernetes-{image}:$tag - exit $? - -# parameter macro -- parameter: - name: functest-kubernetes-job-parameters - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: '{slave_label}' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - string: - name: COMMIT_ID - default: "" - description: "commit id to make a snapshot docker image" - - string: - name: GERRIT_REFNAME - default: "" - description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1" - - string: - name: DOCKERFILE - default: "Dockerfile" - description: "Dockerfile to use for creating the image." - - string: - name: ARCH_TAG - default: "{arch_tag}" - description: "If set, this value will be added to the docker image tag as a prefix" - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest-kubernetes images" - -# publisher macros -- publisher: - name: 'functest-kubernetes-arm64-recipients' - publishers: - - email: - recipients: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - delia.popescu@enea.com - -- publisher: - name: 'functest-kubernetes-amd64-recipients' - publishers: - - email: - recipients: > - jalausuch@suse.com morgan.richomme@orange.com - cedric.ollivier@orange.com feng.xiaowei@zte.com.cn - juha.kosonen@nokia.com wangwulin@huawei.com - valentin.boucher@kontron.com diff --git a/jjb/functest/functest-kubernetes-pi.yaml b/jjb/functest/functest-kubernetes-pi.yaml new file mode 100644 index 000000000..efab56c05 --- /dev/null +++ b/jjb/functest/functest-kubernetes-pi.yaml @@ -0,0 +1,891 @@ +--- +- functest-kubernetes-pi-containers: &functest-kubernetes-pi-containers + name: 'functest-kubernetes-pi-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' + +- functest-kubernetes-pi-params: &functest-kubernetes-pi-params + name: 'functest-kubernetes-pi-params' + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params: &functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params' + repo: 'ollivier' + container: 'functest-kubernetes-healthcheck' + port: + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params: &functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params' + repo: 'ollivier' + container: 'functest-kubernetes-smoke' + port: + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-ollivier-functest-kubernetes-security-params: &functest-kubernetes-pi-ollivier-functest-kubernetes-security-params + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-params' + repo: 'ollivier' + container: 'functest-kubernetes-security' + port: + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params: &functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params' + repo: 'ollivier' + container: 'functest-kubernetes-benchmarking' + port: + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params: &functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params' + repo: 'ollivier' + container: 'functest-kubernetes-cnf' + port: + tag: + - latest: + node: v1.30 + - v1.29: + node: v1.29 + - v1.28: + node: v1.28 + - v1.27: + node: v1.27 + - v1.26: + node: v1.26 + - arm-latest: + node: v1.30 + - arm-v1.29: + node: v1.29 + - arm-v1.28: + node: v1.28 + - arm-v1.27: + node: v1.27 + - arm-v1.26: + node: v1.26 + - arm64-latest: + node: v1.30 + - arm64-v1.29: + node: v1.29 + - arm64-v1.28: + node: v1.28 + - arm64-v1.27: + node: v1.27 + - arm64-v1.26: + node: v1.26 + +- functest-kubernetes-pi-jobs: &functest-kubernetes-pi-jobs + name: 'functest-kubernetes-pi-jobs' + current-parameters: true + +- parameter: + name: functest-kubernetes-pi-node + parameters: + - label: + name: node + default: '{node}' + +- parameter: + name: functest-kubernetes-pi-build_tag + parameters: + - random-string: + name: build_tag + +- parameter: + name: functest-kubernetes-pi-DEPLOY_SCENARIO + parameters: + - string: + name: DEPLOY_SCENARIO + default: k8-nosdn-nofeature-noha + +- functest-kubernetes-pi-run-containers: &functest-kubernetes-pi-run-containers + name: 'functest-kubernetes-pi-run-containers' + <<: *functest-kubernetes-pi-containers + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' + +- builder: + name: functest-kubernetes-pi-pull-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + docker pull $image + +- builder: + name: functest-kubernetes-pi-run-containers + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + mkdir -p $WORKSPACE/results + chown {uid}:{gid} $WORKSPACE/results + docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest-kubernetes/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest-kubernetes/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/functest-kubernetes/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image run_tests -t {test} -p -r + +- builder: + name: functest-kubernetes-pi-remove-images + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + docker rmi $image || true + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-pull' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-pull-containers: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-pull' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-rmi' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-remove-images: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-rmi' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-pull' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-pull-containers: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-pull' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-rmi' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-remove-images: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-rmi' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-pull' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-pull-containers: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-pull' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-security-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-rmi' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-remove-images: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-rmi' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-security-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-pull' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-pull-containers: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-pull' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-rmi' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-remove-images: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-rmi' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-pull' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-pull-containers: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-pull' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-rmi' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + builders: + - functest-kubernetes-pi-remove-images: + <<: *functest-kubernetes-pi-containers + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-rmi' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-{test}-run' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-run-containers: + <<: *functest-kubernetes-pi-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-healthcheck' + test: + - k8s_quick + - k8s_smoke + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-{test}-run' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-run-containers: + <<: *functest-kubernetes-pi-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-smoke' + test: + - xrally_kubernetes + - k8s_conformance + - k8s_conformance_serial + - sig_api_machinery + - sig_api_machinery_serial + - sig_apps + - sig_apps_serial + - sig_auth + - sig_cluster_lifecycle + - sig_instrumentation + - sig_network + - sig_node + - sig_scheduling_serial + - sig_storage + - sig_storage_serial + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-{test}-run' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-run-containers: + <<: *functest-kubernetes-pi-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-security-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-security' + test: + - kube_hunter + - kube_bench_master + - kube_bench_node + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-{test}-run' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-run-containers: + <<: *functest-kubernetes-pi-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-benchmarking' + test: + - xrally_kubernetes_full + - netperf + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-{test}-run' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-run-containers: + <<: *functest-kubernetes-pi-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-cnf' + test: + - k8s_vims + - helm_vims + - cnf_testsuite + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-{test}-run' + +- builder: + name: functest-kubernetes-pi-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + mkdir -p $WORKSPACE/results + chown {uid}:{gid} $WORKSPACE/results + docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest-kubernetes \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest-kubernetes \ + -v /home/opnfv/functest-kubernetes/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image zip_campaign + +- job-template: + name: 'functest-kubernetes-pi-{tag}-zip' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-pi-zip: + <<: *functest-kubernetes-pi-run-containers + +- project: + name: 'functest-kubernetes-pi-zip' + <<: *functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-healthcheck' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-pi-{tag}-zip' + +- job-template: + name: 'functest-kubernetes-pi-{tag}-daily' + project-type: multijob + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-pi-node: + node: '{node}' + - functest-kubernetes-pi-build_tag: + build_tag: '' + - functest-kubernetes-pi-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation + properties: + - build-blocker: + blocking-jobs: + - ^functest-kubernetes-(pi-)*.*-(daily|docker|review)$ + # yamllint enable rule:indentation + builders: + - multijob: + name: remove former images + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-rmi' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-rmi' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-rmi' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-rmi' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-rmi' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: pull containers + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-pull' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-pull' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-pull' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-pull' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-pull' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: ollivier/functest-kubernetes-healthcheck:{tag} + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-k8s_quick-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: ollivier/functest-kubernetes-smoke:{tag} + execution-type: SEQUENTIALLY + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-xrally_kubernetes-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-k8s_conformance-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-k8s_conformance_serial-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_api_machinery-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_api_machinery_serial-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_apps-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_apps_serial-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_auth-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_cluster_lifecycle-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_instrumentation-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_network-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_node-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_scheduling_serial-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_storage-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-smoke-{tag}-sig_storage_serial-run' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: ollivier/functest-kubernetes-security:{tag} + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-kube_hunter-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-kube_bench_master-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-security-{tag}-kube_bench_node-run' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: ollivier/functest-kubernetes-benchmarking:{tag} + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-xrally_kubernetes_full-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-benchmarking-{tag}-netperf-run' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: ollivier/functest-kubernetes-cnf:{tag} + projects: + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-k8s_vims-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-helm_vims-run' + <<: *functest-kubernetes-pi-jobs + - name: 'functest-kubernetes-pi-ollivier-functest-kubernetes-cnf-{tag}-cnf_testsuite-run' + <<: *functest-kubernetes-pi-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'functest-kubernetes-pi-{tag}-zip' + <<: *functest-kubernetes-pi-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-pi-daily' + <<: *functest-kubernetes-pi-params + jobs: + - 'functest-kubernetes-pi-{tag}-daily' + +- view: + name: functest-kubernetes-pi + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-kubernetes-pi-[a-z-0-9.]+-daily$ diff --git a/jjb/functest/functest-kubernetes-project-jobs.yaml b/jjb/functest/functest-kubernetes-project-jobs.yaml deleted file mode 100644 index 2e1a410e2..000000000 --- a/jjb/functest/functest-kubernetes-project-jobs.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -- functest-kubernetes-project-params: &functest-kubernetes-project-params - name: 'functest-kubernetes-project-params' - tag: - - latest: - branch: master - slave: lf-virtual1 - - jerma: - branch: stable/jerma - slave: lf-virtual1 - - iruya: - branch: stable/iruya - slave: lf-virtual1 - - hunter: - branch: stable/hunter - slave: lf-virtual1 - -- builder: - name: functest-kubernetes-run-tox - builders: - - shell: tox - -- trigger: - name: functest-kubernetes-project-patchset-created - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest-kubernetes' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false - -- parameter: - name: functest-kubernetes-project-slave - parameters: - - label: - name: slave - default: '{slave}' - -- scm: - name: functest-kubernetes-project-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest-kubernetes - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - -- job-template: - name: 'functest-kubernetes-run-tox-{tag}' - triggers: - - functest-kubernetes-project-patchset-created: - branch: '{branch}' - scm: - - functest-kubernetes-project-scm: - ref: $GERRIT_REFSPEC - parameters: - - functest-kubernetes-project-slave: - slave: '{slave}' - builders: - - functest-kubernetes-run-tox - -- project: - name: 'functest-kubernetes-run-tox' - <<: *functest-kubernetes-project-params - jobs: - - 'functest-kubernetes-run-tox-{tag}' diff --git a/jjb/functest/functest-kubernetes.yaml b/jjb/functest/functest-kubernetes.yaml index 12c9c26a1..dcab411cd 100644 --- a/jjb/functest/functest-kubernetes.yaml +++ b/jjb/functest/functest-kubernetes.yaml @@ -1,57 +1,264 @@ --- -- functest-kubernetes-jobs: &functest-kubernetes-jobs - name: 'functest-kubernetes-jobs' - current-parameters: true +- functest-kubernetes-containers: &functest-kubernetes-containers + name: 'functest-kubernetes-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' - functest-kubernetes-params: &functest-kubernetes-params name: 'functest-kubernetes-params' + tag: + - latest: + from: + build_args: + branch: master + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params: &functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params' + repo: 'opnfv' + container: 'functest-kubernetes-healthcheck' + port: + tag: + - latest: + from: + build_args: + branch: master + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-opnfv-functest-kubernetes-smoke-params: &functest-kubernetes-opnfv-functest-kubernetes-smoke-params + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-params' + repo: 'opnfv' + container: 'functest-kubernetes-smoke' + port: + tag: + - latest: + from: + build_args: + branch: master + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-opnfv-functest-kubernetes-security-params: &functest-kubernetes-opnfv-functest-kubernetes-security-params + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-params' + repo: 'opnfv' + container: 'functest-kubernetes-security' + port: + tag: + - latest: + from: + build_args: + branch: master + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params: &functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params' repo: 'opnfv' + container: 'functest-kubernetes-benchmarking' port: tag: - latest: + from: + build_args: branch: master - slave: lf-virtual8 - - jerma: - branch: stable/jerma - slave: lf-virtual8 - - iruya: - branch: stable/iruya - slave: lf-virtual7 - - hunter: - branch: stable/hunter - slave: lf-virtual5 + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-opnfv-functest-kubernetes-cnf-params: &functest-kubernetes-opnfv-functest-kubernetes-cnf-params + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-params' + repo: 'opnfv' + container: 'functest-kubernetes-cnf' + port: + tag: + - latest: + from: + build_args: + branch: master + node: v1.30 + dependency: 3.16 + - v1.29: + from: + build_args: + branch: stable/v1.29 + node: v1.29 + dependency: 3.16 + - v1.28: + from: + build_args: + branch: stable/v1.28 + node: v1.28 + dependency: 3.16 + - v1.27: + from: + build_args: + branch: stable/v1.27 + node: v1.27 + dependency: 3.16 + - v1.26: + from: + build_args: + branch: stable/v1.26 + node: v1.26 + dependency: 3.16 + +- functest-kubernetes-jobs: &functest-kubernetes-jobs + name: 'functest-kubernetes-jobs' + current-parameters: true - parameter: - name: functest-kubernetes-slave + name: functest-kubernetes-node parameters: - label: - name: slave - default: '{slave}' + name: node + default: '{node}' - parameter: - name: functest-kubernetes-branch + name: functest-kubernetes-build_tag parameters: - - string: - name: branch - default: '{branch}' + - random-string: + name: build_tag -- functest-kubernetes-containers: &functest-kubernetes-containers - name: 'functest-kubernetes-containers' - repo: '{repo}' - port: '{port}' - container: '{container}' - tag: '{tag}' +- parameter: + name: functest-kubernetes-DEPLOY_SCENARIO + parameters: + - string: + name: DEPLOY_SCENARIO + default: k8-nosdn-nofeature-noha - functest-kubernetes-run-containers: &functest-kubernetes-run-containers - name: 'functest-kubernetes-build-containers' + name: 'functest-kubernetes-run-containers' <<: *functest-kubernetes-containers - test: '{test}' - -- functest-kubernetes-build-containers: &functest-kubernetes-build-containers - name: 'functest-kubernetes-build-containers' - <<: *functest-kubernetes-containers - ref_arg: '{ref_arg}' - path: '{path}' + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' - builder: name: functest-kubernetes-pull-containers @@ -68,33 +275,26 @@ docker pull $image - builder: - name: functest-kubernetes-build-containers + name: functest-kubernetes-run-containers builders: - shell: | set +x - if [ "{repo}" = "_" ]; then - image={container}:{tag} - elif [ "{port}" = "None" ]; then - image={repo}/{container}:{tag} - else - image={repo}:{port}/{container}:{tag} + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done fi - if [ "{ref_arg}" = "None" ]; then - build_arg="" - else - build_arg="--build-arg {ref_arg}={ref}" + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done fi - cd {path} - docker build $build_arg \ - --pull=false --no-cache --force-rm=true \ - -t $image . - -- builder: - name: functest-kubernetes-run-containers - builders: - - shell: | - set +ex - [ ! -z "$WORKSPACE" ] && rm -rf $WORKSPACE/* || true + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && rm -rf $WORKSPACE/results || true if [ "{repo}" = "_" ]; then image={container}:{tag} elif [ "{port}" = "None" ]; then @@ -102,15 +302,24 @@ else image={repo}:{port}/{container}:{tag} fi + mkdir -p $WORKSPACE/results + chown {uid}:{gid} $WORKSPACE/results docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ -e S3_ENDPOINT_URL=https://storage.googleapis.com \ - -e S3_DST_URL=s3://artifacts.opnfv.org/functest-kubernetes/$JOB_NAME-$BUILD_ID \ - -e HTTP_DST_URL=http://artifacts.opnfv.org/functest-kubernetes/$JOB_NAME-$BUILD_ID \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest-kubernetes/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest-kubernetes/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/functest-kubernetes/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ - -e DEPLOY_SCENARIO=k8-nosdn-nofeature-noha \ - -v /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config \ - -v /home/opnfv/functest-kubernetes/.boto:/root/.boto \ - $image run_tests -t {test} -p + $image run_tests -t {test} -p -r - builder: name: functest-kubernetes-remove-images @@ -126,108 +335,438 @@ fi docker rmi $image || true -- scm: - name: functest-kubernetes-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest-kubernetes - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - - job-template: - name: 'functest-kubernetes-{repo}-{container}-{tag}-pull' + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-pull' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' builders: - functest-kubernetes-pull-containers: <<: *functest-kubernetes-containers - project: name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-pull' - <<: *functest-kubernetes-params - container: 'functest-kubernetes-healthcheck' + <<: *functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-pull' + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-remove-images: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-rmi' + <<: *functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-pull' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-pull-containers: + <<: *functest-kubernetes-containers - project: name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-pull' - <<: *functest-kubernetes-params - container: 'functest-kubernetes-smoke' + <<: *functest-kubernetes-opnfv-functest-kubernetes-smoke-params jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-pull' + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-pull' - job-template: - name: 'functest-kubernetes-{repo}-{container}-{tag}-rmi' + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' builders: - functest-kubernetes-remove-images: <<: *functest-kubernetes-containers - project: - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-rmi' - <<: *functest-kubernetes-params - container: 'functest-kubernetes-healthcheck' + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-rmi' + <<: *functest-kubernetes-opnfv-functest-kubernetes-smoke-params jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-rmi' + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-pull' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-pull-containers: + <<: *functest-kubernetes-containers - project: - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-rmi' - <<: *functest-kubernetes-params - container: 'functest-kubernetes-smoke' + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-pull' + <<: *functest-kubernetes-opnfv-functest-kubernetes-security-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-rmi' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-remove-images: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-rmi' + <<: *functest-kubernetes-opnfv-functest-kubernetes-security-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-pull' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-pull-containers: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-pull' + <<: *functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-pull' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-rmi' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-remove-images: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-rmi' + <<: *functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-pull' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-pull-containers: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-pull' + <<: *functest-kubernetes-opnfv-functest-kubernetes-cnf-params jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-rmi' + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-pull' - job-template: - name: 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run' + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-rmi' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-remove-images: + <<: *functest-kubernetes-containers + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-rmi' + <<: *functest-kubernetes-opnfv-functest-kubernetes-cnf-params + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-rmi' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-{test}-run' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha builders: - functest-kubernetes-run-containers: <<: *functest-kubernetes-run-containers + test: '{test}' - project: name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck' - <<: *functest-kubernetes-params + <<: *functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: container: 'functest-kubernetes-healthcheck' test: + - k8s_quick - k8s_smoke + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run' + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-{test}-run' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-run-containers: + <<: *functest-kubernetes-run-containers + test: '{test}' - project: name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke' - <<: *functest-kubernetes-params + <<: *functest-kubernetes-opnfv-functest-kubernetes-smoke-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: container: 'functest-kubernetes-smoke' test: - xrally_kubernetes - k8s_conformance + - k8s_conformance_serial + - sig_api_machinery + - sig_api_machinery_serial + - sig_apps + - sig_apps_serial + - sig_auth + - sig_cluster_lifecycle + - sig_instrumentation + - sig_network + - sig_node + - sig_scheduling_serial + - sig_storage + - sig_storage_serial + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-{test}-run' - exclude: - - tag: iruya - test: xrally_kubernetes - - tag: hunter - test: xrally_kubernetes + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-{test}-run' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-run-containers: + <<: *functest-kubernetes-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security' + <<: *functest-kubernetes-opnfv-functest-kubernetes-security-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-security' + test: + - kube_hunter + - kube_bench_master + - kube_bench_node + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-{test}-run' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-run-containers: + <<: *functest-kubernetes-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking' + <<: *functest-kubernetes-opnfv-functest-kubernetes-benchmarking-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-benchmarking' + test: + - xrally_kubernetes_full + - netperf + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-{test}-run' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-{test}-run' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-run-containers: + <<: *functest-kubernetes-run-containers + test: '{test}' + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf' + <<: *functest-kubernetes-opnfv-functest-kubernetes-cnf-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-cnf' + test: + - k8s_vims + - helm_vims + - cnf_testsuite + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-{test}-run' + +- builder: + name: functest-kubernetes-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + mkdir -p $WORKSPACE/results + chown {uid}:{gid} $WORKSPACE/results + docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest-kubernetes \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest-kubernetes \ + -v /home/opnfv/functest-kubernetes/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image zip_campaign + +- job-template: + name: 'functest-kubernetes-{tag}-zip' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + builders: + - functest-kubernetes-zip: + <<: *functest-kubernetes-run-containers + +- project: + name: 'functest-kubernetes-zip' + <<: *functest-kubernetes-opnfv-functest-kubernetes-healthcheck-params + volumes: + - /home/opnfv/functest-kubernetes/config.{tag}:/root/.kube/config + - /home/opnfv/functest-kubernetes/config.{tag}:/home/xtesting/.kube/config + env: + - DEPLOY_SCENARIO=$DEPLOY_SCENARIO + published_ports: + container: 'functest-kubernetes-healthcheck' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-kubernetes-{tag}-zip' - job-template: name: 'functest-kubernetes-{tag}-daily' project-type: multijob triggers: - - timed: '@daily' + - timed: '@weekly' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-kubernetes-{tag}-(daily|check|gate)$' + - ^functest-kubernetes-(pi-)*.*-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -236,6 +775,12 @@ <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi' <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-rmi' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-rmi' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-rmi' + <<: *functest-kubernetes-jobs - multijob: name: pull containers projects: @@ -243,9 +788,17 @@ <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-pull' <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-pull' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-pull' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-pull' + <<: *functest-kubernetes-jobs - multijob: name: opnfv/functest-kubernetes-healthcheck:{tag} projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_quick-run' + <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run' <<: *functest-kubernetes-jobs - multijob: @@ -256,12 +809,234 @@ <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run' <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_api_machinery-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_api_machinery_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_apps-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_apps_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_auth-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_cluster_lifecycle-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_instrumentation-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_network-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_node-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_scheduling_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_storage-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_storage_serial-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-security:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_hunter-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_bench_master-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_bench_node-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-benchmarking:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-xrally_kubernetes_full-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-netperf-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-cnf:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-k8s_vims-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-helm_vims-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-cnf_testsuite-run' + <<: *functest-kubernetes-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'functest-kubernetes-{tag}-zip' + <<: *functest-kubernetes-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-daily' + <<: *functest-kubernetes-params + jobs: + - 'functest-kubernetes-{tag}-daily' + +- view: + name: functest-kubernetes + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-kubernetes-[a-z0-9.-]+-daily$ + +- functest-kubernetes-build-containers: &functest-kubernetes-build-containers + name: 'functest-kubernetes-build-containers' + <<: *functest-kubernetes-containers + ref_arg: '{ref_arg}' + path: '{path}' + build_args: '{build_args}' + from: '{from}' + +- builder: + name: functest-kubernetes-build-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + build_args="" + if [ "{build_args}" != "None" ]; then + for i in $(echo {build_args} | tr -d '[]' |sed "s/, / /g" ); \ + do build_args="--build-arg $i $build_args"; done + fi + if [ "{ref_arg}" != "None" ]; then + build_args="$build_args --build-arg {ref_arg}={ref}" + fi + cd {path} + if [ "{from}" != "None" ]; then + sed -i {from} Dockerfile + fi + docker build $build_args \ + --pull=false --no-cache --force-rm=true \ + -t $image . + +- scm: + name: functest-kubernetes-scm + scm: + - git: + url: 'https://gerrit.opnfv.org/gerrit/functest-kubernetes' + refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*' + branches: + - '{ref}' + +- functest-kubernetes-dep: &functest-kubernetes-dep + name: 'functest-kubernetes-containers' + repo: '{repo}' + container: '{container}' + port: '{port}' + tag: '{dependency}' - job-template: - name: 'functest-kubernetes-{repo}-{container}-{tag}-gate' + name: 'functest-kubernetes-{tag}-dep-pull' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-pull-containers: + <<: *functest-kubernetes-dep + +- functest-kubernetes-dep-params: &functest-kubernetes-dep-params + name: 'functest-kubernetes-dep-params' + repo: '_' + container: 'alpine' + port: + tag: + - latest: + dependency: 3.16 + - v1.29: + dependency: 3.16 + - v1.28: + dependency: 3.16 + - v1.27: + dependency: 3.16 + - v1.26: + dependency: 3.16 + +- project: + name: 'functest-kubernetes-dep-pull' + <<: *functest-kubernetes-dep-params + jobs: + - 'functest-kubernetes-{tag}-dep-pull' + +- job-template: + name: 'functest-kubernetes-{tag}-dep-rmi' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-remove-images: + <<: *functest-kubernetes-dep + +- project: + name: 'functest-kubernetes-dep-rmi' + <<: *functest-kubernetes-dep-params + jobs: + - 'functest-kubernetes-{tag}-dep-rmi' + +- builder: + name: functest-kubernetes-tox + builders: + - shell: | + set +x + apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install software-properties-common gpg -y + add-apt-repository -y ppa:deadsnakes/ppa + apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install \ + libxml2-dev libxslt-dev libffi-dev libjpeg-dev \ + python3.10 python3.10-dev python3.10-distutils \ + python3.9 python3.9-dev python3.9-distutils \ + python3.8 python3.8-dev python3.8-distutils \ + python3-pip enchant-2 -y + pip3 install tox + + tox + +- job-template: + name: 'functest-kubernetes-{tag}-tox' + scm: + - functest-kubernetes-scm: + ref: $GERRIT_REFSPEC + triggers: + - functest-kubernetes-patchset-created: + branch: '{branch}' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-tox: + +- project: + name: functest-kubernetes-tox + <<: *functest-kubernetes-params + jobs: + - 'functest-kubernetes-{tag}-tox' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-gate' + parameters: + - functest-kubernetes-node: + node: '{node}' scm: - functest-kubernetes-scm: ref: $GERRIT_REFSPEC @@ -269,86 +1044,182 @@ - functest-kubernetes-build-containers: <<: *functest-kubernetes-build-containers ref: $GERRIT_REFSPEC + build_args: '{build_args}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-core-gate + <<: *functest-kubernetes-params + repo: opnfv + port: + container: functest-kubernetes-core + ref_arg: BRANCH + path: docker/core + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-gate' - job-template: - name: 'functest-kubernetes-{repo}-{container}-{tag}-check' + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-gate' parameters: - - functest-kubernetes-slave: - slave: '{slave}' - - functest-kubernetes-branch: - branch: '{branch}' + - functest-kubernetes-node: + node: '{node}' scm: - functest-kubernetes-scm: - ref: $branch + ref: $GERRIT_REFSPEC builders: - functest-kubernetes-build-containers: <<: *functest-kubernetes-build-containers - ref: $branch + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-rmi' - repo: _ + name: functest-kubernetes-opnfv-functest-kubernetes-healthcheck-gate + <<: *functest-kubernetes-params + repo: opnfv port: - container: golang - tag: '1.12-alpine3.10' - slave: master + container: functest-kubernetes-healthcheck + ref_arg: + path: docker/healthcheck jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-rmi' + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-gate' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-gate' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-pull' - repo: _ + name: functest-kubernetes-opnfv-functest-kubernetes-cnf-gate + <<: *functest-kubernetes-params + repo: opnfv port: - container: golang - tag: '1.12-alpine3.10' - slave: master + container: functest-kubernetes-cnf + ref_arg: BRANCH + path: docker/cnf jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-pull' + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-gate' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-gate' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-build + name: functest-kubernetes-opnfv-functest-kubernetes-security-gate <<: *functest-kubernetes-params - container: functest-kubernetes-core + repo: opnfv + port: + container: functest-kubernetes-security ref_arg: BRANCH - path: docker/core + path: docker/security jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-gate' - - 'functest-kubernetes-{repo}-{container}-{tag}-check' + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-gate' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-gate' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-build + name: functest-kubernetes-opnfv-functest-kubernetes-smoke-gate <<: *functest-kubernetes-params - container: functest-kubernetes-healthcheck + repo: opnfv + port: + container: functest-kubernetes-smoke ref_arg: - path: docker/healthcheck + path: docker/smoke jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-gate' - - 'functest-kubernetes-{repo}-{container}-{tag}-check' + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-gate' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-gate' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-build + name: functest-kubernetes-opnfv-functest-kubernetes-benchmarking-gate <<: *functest-kubernetes-params - container: functest-kubernetes-smoke + repo: opnfv + port: + container: functest-kubernetes-benchmarking ref_arg: - path: docker/smoke + path: docker/benchmarking jobs: - - 'functest-kubernetes-{repo}-{container}-{tag}-gate' - - 'functest-kubernetes-{repo}-{container}-{tag}-check' + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-gate' + +- trigger: + name: functest-kubernetes-patchset-created + triggers: + - gerrit: + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'functest-kubernetes' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' - job-template: - name: 'functest-kubernetes-{tag}-check' + name: 'functest-kubernetes-{tag}-review' project-type: multijob - parameters: - - functest-kubernetes-slave: - slave: '{slave}' - - functest-kubernetes-branch: + triggers: + - functest-kubernetes-patchset-created: branch: '{branch}' + parameters: + - functest-kubernetes-node: + node: '{node}' + - functest-kubernetes-build_tag: + build_tag: '' + - functest-kubernetes-DEPLOY_SCENARIO: + DEPLOY_SCENARIO: k8-nosdn-nofeature-noha + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-kubernetes-{tag}-(daily|check|gate)$' + - ^functest-kubernetes-(pi-)*.*-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -357,34 +1228,51 @@ <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi' <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-rmi' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-rmi' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-rmi' + <<: *functest-kubernetes-jobs - multijob: - name: remove dependencies + name: remove dependency projects: - - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-rmi' + - name: 'functest-kubernetes-{tag}-dep-rmi' <<: *functest-kubernetes-jobs - multijob: - name: pull dependencies + name: pull dependency projects: - - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-pull' + - name: 'functest-kubernetes-{tag}-dep-pull' <<: *functest-kubernetes-jobs - multijob: name: build opnfv/functest-kubernetes-core projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-check' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-gate' <<: *functest-kubernetes-jobs - multijob: - name: build opnfv/functest-kubernetes-healthcheck + name: build containers projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-check' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-gate' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-gate' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-gate' <<: *functest-kubernetes-jobs - multijob: - name: build containers + name: build opnfv/functest-kubernetes-smoke projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-check' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-gate' + <<: *functest-kubernetes-jobs + - multijob: + name: build opnfv/functest-kubernetes-benchmarking + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-gate' <<: *functest-kubernetes-jobs - multijob: name: opnfv/functest-kubernetes-healthcheck:{tag} projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_quick-run' + <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run' <<: *functest-kubernetes-jobs - multijob: @@ -395,102 +1283,910 @@ <<: *functest-kubernetes-jobs - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run' <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_api_machinery-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_api_machinery_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_apps-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_apps_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_auth-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_cluster_lifecycle-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_instrumentation-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_network-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_node-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_scheduling_serial-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_storage-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sig_storage_serial-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-security:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_hunter-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_bench_master-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-kube_bench_node-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-benchmarking:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-xrally_kubernetes_full-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-netperf-run' + <<: *functest-kubernetes-jobs + - multijob: + name: opnfv/functest-kubernetes-cnf:{tag} + projects: + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-k8s_vims-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-helm_vims-run' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-cnf_testsuite-run' + <<: *functest-kubernetes-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-review' + <<: *functest-kubernetes-params + jobs: + - 'functest-kubernetes-{tag}-review' + +- view: + name: functest-kubernetes-review + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-kubernetes-[a-z0-9.-]+-review$ + +- view: + name: functest-kubernetes-tox + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-kubernetes-[a-z0-9.-]+-tox$ + +- builder: + name: functest-kubernetes-push-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + docker push $image - trigger: - name: functest-kubernetes-patchset-created + name: functest-kubernetes-commit triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest-kubernetes' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false + - pollscm: + cron: "*/30 * * * *" + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-core-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-core + port: + ref_arg: BRANCH + path: docker/core + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-build' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-healthcheck-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-healthcheck + port: + ref_arg: + path: docker/healthcheck + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-build' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-cnf-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-cnf + port: + ref_arg: BRANCH + path: docker/cnf + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-build' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-security-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-security + port: + ref_arg: BRANCH + path: docker/security + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-build' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-smoke-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-smoke + port: + ref_arg: + path: docker/smoke + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-build' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-build' + parameters: + - functest-kubernetes-node: + node: '{node}' + scm: + - functest-kubernetes-scm: + ref: '{branch}' + builders: + - functest-kubernetes-build-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-kubernetes-push-containers: + <<: *functest-kubernetes-build-containers + ref: '{branch}' + +- project: + name: functest-kubernetes-opnfv-functest-kubernetes-benchmarking-build + <<: *functest-kubernetes-params + repo: opnfv + container: functest-kubernetes-benchmarking + port: + ref_arg: + path: docker/benchmarking + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-build' - job-template: - name: 'functest-kubernetes-{tag}-gate' + name: 'functest-kubernetes-{tag}-docker' project-type: multijob triggers: - - functest-kubernetes-patchset-created: - branch: '{branch}' + - functest-kubernetes-commit + scm: + - functest-kubernetes-scm: + ref: '{branch}' parameters: - - functest-kubernetes-slave: - slave: '{slave}' + - functest-kubernetes-node: + node: '{node}' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-kubernetes-{tag}-(daily|check|gate)$' + - ^functest-kubernetes-(pi-)*.*-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: - name: remove former images - projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-rmi' - <<: *functest-kubernetes-jobs - - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-rmi' - <<: *functest-kubernetes-jobs - - multijob: - name: remove dependencies + name: remove dependency projects: - - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-rmi' + - name: 'functest-kubernetes-{tag}-dep-rmi' <<: *functest-kubernetes-jobs - multijob: - name: pull dependencies + name: pull dependency projects: - - name: 'functest-kubernetes-_-golang-1.12-alpine3.10-pull' + - name: 'functest-kubernetes-{tag}-dep-pull' <<: *functest-kubernetes-jobs - multijob: name: build opnfv/functest-kubernetes-core projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-gate' - <<: *functest-kubernetes-jobs - - multijob: - name: build opnfv/functest-kubernetes-healthcheck - projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-gate' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-build' <<: *functest-kubernetes-jobs - multijob: name: build containers projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-gate' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-build' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-build' + <<: *functest-kubernetes-jobs + - name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-build' <<: *functest-kubernetes-jobs - multijob: - name: opnfv/functest-kubernetes-healthcheck:{tag} + name: build opnfv/functest-kubernetes-smoke projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-k8s_smoke-run' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-build' <<: *functest-kubernetes-jobs - multijob: - name: opnfv/functest-kubernetes-smoke:{tag} - execution-type: SEQUENTIALLY + name: build opnfv/functest-kubernetes-benchmarking projects: - - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-xrally_kubernetes-run' - <<: *functest-kubernetes-jobs - - name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-k8s_conformance-run' + - name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-build' <<: *functest-kubernetes-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com - project: - name: 'functest-kubernetes' + name: 'functest-kubernetes-docker' <<: *functest-kubernetes-params jobs: - - 'functest-kubernetes-{tag}-daily' - - 'functest-kubernetes-{tag}-check' - - 'functest-kubernetes-{tag}-gate' + - 'functest-kubernetes-{tag}-docker' + +- builder: + name: functest-kubernetes-trivy + builders: + - shell: | + apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./trivy image --exit-code 1 $image + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-core' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-trivy' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-healthcheck' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-trivy' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-cnf' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-trivy' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-security' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-trivy' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-smoke' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-trivy' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-trivy: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-trivy' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-benchmarking' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-trivy' + +- builder: + name: functest-kubernetes-grype + builders: + - shell: | + apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./grype -q $image + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-core' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-grype' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-healthcheck' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-grype' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-cnf' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-grype' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-security' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-grype' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-smoke' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-grype' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-grype: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-grype' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-benchmarking' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-grype' + +- builder: + name: functest-kubernetes-sbom + builders: + - shell: | + apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + mkdir -p ~/.docker + curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s -- + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + docker sbom $image + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-core-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-core' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-core-{tag}-sbom' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-healthcheck' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-healthcheck-{tag}-sbom' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-cnf-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-cnf' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-cnf-{tag}-sbom' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-security-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-security' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-security-{tag}-sbom' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-smoke-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-smoke' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-smoke-{tag}-sbom' + +- job-template: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-kubernetes-node: + node: '{node}' + builders: + - functest-kubernetes-sbom: + <<: *functest-kubernetes-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-sbom' + <<: *functest-kubernetes-params + repo: 'opnfv' + container: 'functest-kubernetes-benchmarking' + port: + jobs: + - 'functest-kubernetes-opnfv-functest-kubernetes-benchmarking-{tag}-sbom' - view: - name: functest-kubernetes + name: functest-kubernetes-docker + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-kubernetes-[a-z0-9.-]+-docker$ + +- view: + name: functest-kubernetes-trivy + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!functest-kubernetes-pi)(?!functest-kubernetes-ng)^functest-kubernetes-[a-z-0-9.]+-trivy$ + +- view: + name: functest-kubernetes-grype + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!functest-kubernetes-pi)(?!functest-kubernetes-ng)^functest-kubernetes-[a-z-0-9.]+-grype$ + +- view: + name: functest-kubernetes-sbom view-type: list columns: - status @@ -499,4 +2195,4 @@ - last-success - last-failure - last-duration - regex: ^functest-kubernetes-[a-z]+-(daily|check|gate)$ + regex: (?!functest-kubernetes-pi)(?!functest-kubernetes-ng)^functest-kubernetes-[a-z-0-9.]+-sbom$ diff --git a/jjb/functest/functest-pi.yaml b/jjb/functest/functest-pi.yaml new file mode 100644 index 000000000..1ac14f584 --- /dev/null +++ b/jjb/functest/functest-pi.yaml @@ -0,0 +1,1239 @@ +--- +- functest-pi-containers: &functest-pi-containers + name: 'functest-pi-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' + +- functest-pi-params: &functest-pi-params + name: 'functest-pi-params' + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-healthcheck-params: &functest-pi-ollivier-functest-healthcheck-params + name: 'functest-pi-ollivier-functest-healthcheck-params' + repo: 'ollivier' + container: 'functest-healthcheck' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-smoke-params: &functest-pi-ollivier-functest-smoke-params + name: 'functest-pi-ollivier-functest-smoke-params' + repo: 'ollivier' + container: 'functest-smoke' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-smoke-cntt-params: &functest-pi-ollivier-functest-smoke-cntt-params + name: 'functest-pi-ollivier-functest-smoke-cntt-params' + repo: 'ollivier' + container: 'functest-smoke-cntt' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-benchmarking-params: &functest-pi-ollivier-functest-benchmarking-params + name: 'functest-pi-ollivier-functest-benchmarking-params' + repo: 'ollivier' + container: 'functest-benchmarking' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-benchmarking-cntt-params: &functest-pi-ollivier-functest-benchmarking-cntt-params + name: 'functest-pi-ollivier-functest-benchmarking-cntt-params' + repo: 'ollivier' + container: 'functest-benchmarking-cntt' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-ollivier-functest-vnf-params: &functest-pi-ollivier-functest-vnf-params + name: 'functest-pi-ollivier-functest-vnf-params' + repo: 'ollivier' + container: 'functest-vnf' + port: + tag: + - latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - xena-latest: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + - arm64-latest: + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + - arm64-zed: + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + - arm64-yoga: + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + - arm64-xena: + node: laas-xena + DASHBOARD_URL: http://10.200.120.76 + - arm64-wallaby: + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + +- functest-pi-jobs: &functest-pi-jobs + name: 'functest-pi-jobs' + current-parameters: true + +- parameter: + name: functest-pi-node + parameters: + - label: + name: node + default: '{node}' + +- parameter: + name: functest-pi-build_tag + parameters: + - random-string: + name: build_tag + +- parameter: + name: functest-pi-EXTERNAL_NETWORK + parameters: + - string: + name: EXTERNAL_NETWORK + default: public + +- parameter: + name: functest-pi-VOLUME_DEVICE_NAME + parameters: + - string: + name: VOLUME_DEVICE_NAME + default: sdb + +- parameter: + name: functest-pi-IMAGE_PROPERTIES + parameters: + - string: + name: IMAGE_PROPERTIES + default: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + +- functest-pi-run-containers: &functest-pi-run-containers + name: 'functest-pi-run-containers' + <<: *functest-pi-containers + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' + DASHBOARD_URL: '{DASHBOARD_URL}' + +- builder: + name: functest-pi-pull-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker pull $image + +- builder: + name: functest-pi-run-containers + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/functest/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + -e DASHBOARD_URL={DASHBOARD_URL} \ + $image run_tests -t {test} -p -r + +- builder: + name: functest-pi-remove-images + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker rmi $image || true + +- job-template: + name: 'functest-pi-ollivier-functest-healthcheck-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-healthcheck-pull' + <<: *functest-pi-ollivier-functest-healthcheck-params + jobs: + - 'functest-pi-ollivier-functest-healthcheck-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-healthcheck-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-healthcheck-rmi' + <<: *functest-pi-ollivier-functest-healthcheck-params + jobs: + - 'functest-pi-ollivier-functest-healthcheck-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-smoke-pull' + <<: *functest-pi-ollivier-functest-smoke-params + jobs: + - 'functest-pi-ollivier-functest-smoke-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-smoke-rmi' + <<: *functest-pi-ollivier-functest-smoke-params + jobs: + - 'functest-pi-ollivier-functest-smoke-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-smoke-cntt-pull' + <<: *functest-pi-ollivier-functest-smoke-cntt-params + jobs: + - 'functest-pi-ollivier-functest-smoke-cntt-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-smoke-cntt-rmi' + <<: *functest-pi-ollivier-functest-smoke-cntt-params + jobs: + - 'functest-pi-ollivier-functest-smoke-cntt-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-benchmarking-pull' + <<: *functest-pi-ollivier-functest-benchmarking-params + jobs: + - 'functest-pi-ollivier-functest-benchmarking-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-benchmarking-rmi' + <<: *functest-pi-ollivier-functest-benchmarking-params + jobs: + - 'functest-pi-ollivier-functest-benchmarking-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-benchmarking-cntt-pull' + <<: *functest-pi-ollivier-functest-benchmarking-cntt-params + jobs: + - 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-benchmarking-cntt-rmi' + <<: *functest-pi-ollivier-functest-benchmarking-cntt-params + jobs: + - 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-vnf-{tag}-pull' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-pull-containers: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-vnf-pull' + <<: *functest-pi-ollivier-functest-vnf-params + jobs: + - 'functest-pi-ollivier-functest-vnf-{tag}-pull' + +- job-template: + name: 'functest-pi-ollivier-functest-vnf-{tag}-rmi' + parameters: + - functest-pi-node: + node: '{node}' + builders: + - functest-pi-remove-images: + <<: *functest-pi-containers + +- project: + name: 'functest-pi-ollivier-functest-vnf-rmi' + <<: *functest-pi-ollivier-functest-vnf-params + jobs: + - 'functest-pi-ollivier-functest-vnf-{tag}-rmi' + +- job-template: + name: 'functest-pi-ollivier-functest-healthcheck-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-healthcheck' + <<: *functest-pi-ollivier-functest-healthcheck-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-healthcheck' + test: + - connection_check + - tenantnetwork1 + - tenantnetwork2 + - vmready1 + - vmready2 + - singlevm1 + - singlevm2 + - vping_ssh + - vping_userdata + - cinder_test + - odl + - tempest_smoke + - tempest_horizon + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-healthcheck-{tag}-{test}-run' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-smoke' + <<: *functest-pi-ollivier-functest-smoke-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-smoke' + test: + - tempest_neutron + - tempest_cinder + - tempest_keystone + - tempest_heat + - tempest_telemetry + - rally_sanity + - refstack_compute + - refstack_object + - refstack_platform + - tempest_full + - tempest_scenario + - tempest_slow + - patrole_admin + - patrole_member + - patrole_reader + - tempest_barbican + - tempest_octavia + - tempest_cyborg + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-smoke-{tag}-{test}-run' + +- job-template: + name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-smoke-cntt' + <<: *functest-pi-ollivier-functest-smoke-cntt-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-smoke-cntt' + test: + - tempest_neutron_cntt + - tempest_cinder_cntt + - tempest_keystone_cntt + - tempest_heat_cntt + - rally_sanity_cntt + - tempest_full_cntt + - tempest_scenario_cntt + - tempest_slow_cntt + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-smoke-cntt-{tag}-{test}-run' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-benchmarking' + <<: *functest-pi-ollivier-functest-benchmarking-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-benchmarking' + test: + - rally_full + - rally_jobs + - vmtp + - shaker + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-benchmarking-{tag}-{test}-run' + +- job-template: + name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-benchmarking-cntt' + <<: *functest-pi-ollivier-functest-benchmarking-cntt-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-benchmarking-cntt' + test: + - rally_full_cntt + - rally_jobs_cntt + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-{test}-run' + +- job-template: + name: 'functest-pi-ollivier-functest-vnf-{tag}-{test}-run' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-run-containers: + <<: *functest-pi-run-containers + test: '{test}' + +- project: + name: 'functest-pi-ollivier-functest-vnf' + <<: *functest-pi-ollivier-functest-vnf-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-vnf' + test: + - cloudify + - cloudify_ims + - heat_ims + - vyos_vrouter + - juju_epc + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-ollivier-functest-vnf-{tag}-{test}-run' + +- builder: + name: functest-pi-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest \ + -v /home/opnfv/functest/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + -e DASHBOARD_URL={DASHBOARD_URL} \ + $image zip_campaign + +- job-template: + name: 'functest-pi-{tag}-zip' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-pi-zip: + <<: *functest-pi-run-containers + +- project: + name: 'functest-pi-zip' + <<: *functest-pi-ollivier-functest-healthcheck-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-healthcheck' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-pi-{tag}-zip' + +- job-template: + name: 'functest-pi-{tag}-daily' + project-type: multijob + triggers: + - timed: '@weekly' + parameters: + - functest-pi-node: + node: '{node}' + - functest-pi-build_tag: + build_tag: '' + - functest-pi-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-pi-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-pi-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation + properties: + - build-blocker: + blocking-jobs: + - ^functest-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation + builders: + - multijob: + name: remove former images + projects: + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-rmi' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-rmi' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-rmi' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-rmi' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-rmi' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-rmi' + <<: *functest-pi-jobs + - multijob: + name: pull containers + projects: + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-pull' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-pull' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-pull' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-pull' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-pull' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-pull' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-healthcheck:{tag} + projects: + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-connection_check-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-tenantnetwork1-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-tenantnetwork2-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-vmready1-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-vmready2-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-singlevm1-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-singlevm2-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-vping_ssh-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-vping_userdata-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-cinder_test-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-odl-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-tempest_smoke-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-healthcheck-{tag}-tempest_horizon-run' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-smoke:{tag} + projects: + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_neutron-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_cinder-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_keystone-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_heat-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_telemetry-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-rally_sanity-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-refstack_compute-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-refstack_object-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-refstack_platform-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_full-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_scenario-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_slow-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-patrole_admin-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-patrole_member-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-patrole_reader-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_barbican-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_octavia-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-{tag}-tempest_cyborg-run' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-smoke-cntt:{tag} + projects: + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_neutron_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_cinder_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_keystone_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_heat_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-rally_sanity_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_full_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_scenario_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-smoke-cntt-{tag}-tempest_slow_cntt-run' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-benchmarking:{tag} + projects: + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-rally_full-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-rally_jobs-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-vmtp-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-{tag}-shaker-run' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-benchmarking-cntt:{tag} + projects: + - name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-rally_full_cntt-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-benchmarking-cntt-{tag}-rally_jobs_cntt-run' + <<: *functest-pi-jobs + - multijob: + name: ollivier/functest-vnf:{tag} + projects: + - name: 'functest-pi-ollivier-functest-vnf-{tag}-cloudify-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-cloudify_ims-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-heat_ims-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-vyos_vrouter-run' + <<: *functest-pi-jobs + - name: 'functest-pi-ollivier-functest-vnf-{tag}-juju_epc-run' + <<: *functest-pi-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'functest-pi-{tag}-zip' + <<: *functest-pi-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-pi-daily' + <<: *functest-pi-params + jobs: + - 'functest-pi-{tag}-daily' + +- view: + name: functest-pi + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-pi-[a-z-0-9.]+-daily$ diff --git a/jjb/functest/functest-project-jobs.yaml b/jjb/functest/functest-project-jobs.yaml deleted file mode 100644 index 0a836441b..000000000 --- a/jjb/functest/functest-project-jobs.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -- functest-project-params: &functest-project-params - name: 'functest-project-params' - tag: - - latest: - branch: master - slave: lf-virtual9 - - jerma: - branch: stable/jerma - slave: lf-virtual4 - - iruya: - branch: stable/iruya - slave: lf-virtual4 - - hunter: - branch: stable/hunter - slave: lf-virtual6 - -- builder: - name: functest-run-tox - builders: - - shell: tox - -- trigger: - name: functest-project-patchset-created - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false - -- parameter: - name: functest-project-slave - parameters: - - label: - name: slave - default: '{slave}' - -- scm: - name: functest-project-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - -- job-template: - name: 'functest-run-tox-{tag}' - triggers: - - functest-project-patchset-created: - branch: '{branch}' - scm: - - functest-project-scm: - ref: $GERRIT_REFSPEC - parameters: - - functest-project-slave: - slave: '{slave}' - builders: - - functest-run-tox - -- project: - name: 'functest-run-tox' - <<: *functest-project-params - jobs: - - 'functest-run-tox-{tag}' diff --git a/jjb/functest/functest-suite.sh b/jjb/functest/functest-suite.sh deleted file mode 100755 index 469a57726..000000000 --- a/jjb/functest/functest-suite.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1) -if [ -z $container_id ]; then - echo "Functest container not found" - exit 1 -fi - -global_ret_val=0 - -tests=($(echo $FUNCTEST_SUITE_NAME | tr "," "\n")) -for test in ${tests[@]}; do - cmd="run_tests -t $test" - docker exec $container_id $cmd - let global_ret_val+=$? -done - -ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value" -echo ${global_ret_val}>${ret_val_file} - -exit 0 diff --git a/jjb/functest/functest.yaml b/jjb/functest/functest.yaml index feb672c40..463dd9a0a 100644 --- a/jjb/functest/functest.yaml +++ b/jjb/functest/functest.yaml @@ -1,76 +1,351 @@ --- -- functest-jobs: &functest-jobs - name: 'functest-jobs' - current-parameters: true +- functest-containers: &functest-containers + name: 'functest-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' - functest-params: &functest-params name: 'functest-params' + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-healthcheck-params: &functest-opnfv-functest-healthcheck-params + name: 'functest-opnfv-functest-healthcheck-params' + repo: 'opnfv' + container: 'functest-healthcheck' + port: + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-smoke-params: &functest-opnfv-functest-smoke-params + name: 'functest-opnfv-functest-smoke-params' + repo: 'opnfv' + container: 'functest-smoke' + port: + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-smoke-cntt-params: &functest-opnfv-functest-smoke-cntt-params + name: 'functest-opnfv-functest-smoke-cntt-params' repo: 'opnfv' + container: 'functest-smoke-cntt' port: tag: - latest: + from: + build_args: branch: master - slave: lf-virtual9 - dashboard_url: http://172.30.13.94 - - jerma: - branch: stable/jerma - slave: lf-virtual4 - dashboard_url: http://172.30.13.89 - - iruya: - branch: stable/iruya - slave: lf-virtual4 - dashboard_url: http://172.30.13.89 - - hunter: - branch: stable/hunter - slave: lf-virtual6 - dashboard_url: http://172.30.13.91 + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-benchmarking-params: &functest-opnfv-functest-benchmarking-params + name: 'functest-opnfv-functest-benchmarking-params' + repo: 'opnfv' + container: 'functest-benchmarking' + port: + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-benchmarking-cntt-params: &functest-opnfv-functest-benchmarking-cntt-params + name: 'functest-opnfv-functest-benchmarking-cntt-params' + repo: 'opnfv' + container: 'functest-benchmarking-cntt' + port: + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-opnfv-functest-vnf-params: &functest-opnfv-functest-vnf-params + name: 'functest-opnfv-functest-vnf-params' + repo: 'opnfv' + container: 'functest-vnf' + port: + tag: + - latest: + from: + build_args: + branch: master + node: lf-pod4 + DASHBOARD_URL: http://172.30.12.83 + dependency: 3.14 + - zed: + from: + build_args: + branch: stable/zed + node: lf-virtual9 + DASHBOARD_URL: http://172.30.13.94 + dependency: 3.14 + - yoga: + from: + build_args: + branch: stable/yoga + node: lf-pod4-3 + DASHBOARD_URL: http://172.30.12.88 + dependency: 3.14 + - xena: + from: + build_args: + branch: stable/xena + node: lf-pod4-2 + DASHBOARD_URL: http://172.30.12.85 + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: lf-virtual6 + DASHBOARD_URL: http://172.30.13.91 + dependency: 3.13 + +- functest-jobs: &functest-jobs + name: 'functest-jobs' + current-parameters: true - parameter: - name: functest-slave + name: functest-node parameters: - label: - name: slave - default: '{slave}' + name: node + default: '{node}' - parameter: - name: functest-branch + name: functest-build_tag parameters: - - string: - name: branch - default: '{branch}' + - random-string: + name: build_tag - parameter: - name: functest-DEBUG + name: functest-EXTERNAL_NETWORK parameters: - string: - name: DEBUG - default: 'true' + name: EXTERNAL_NETWORK + default: public - parameter: - name: functest-EXTERNAL_NETWORK + name: functest-VOLUME_DEVICE_NAME parameters: - string: - name: EXTERNAL_NETWORK - default: public + name: VOLUME_DEVICE_NAME + default: sdb -- functest-containers: &functest-containers - name: 'functest-containers' - repo: '{repo}' - port: '{port}' - container: '{container}' - tag: '{tag}' +- parameter: + name: functest-IMAGE_PROPERTIES + parameters: + - string: + name: IMAGE_PROPERTIES + default: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi - functest-run-containers: &functest-run-containers name: 'functest-run-containers' <<: *functest-containers - test: '{test}' - dashboard_url: '{dashboard_url}' - -- functest-build-containers: &functest-build-containers - name: 'functest-build-containers' - <<: *functest-containers - ref_arg: '{ref_arg}' - path: '{path}' + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' + DASHBOARD_URL: '{DASHBOARD_URL}' - builder: name: functest-pull-containers @@ -87,33 +362,26 @@ sudo docker pull $image - builder: - name: functest-build-containers + name: functest-run-containers builders: - shell: | set +x - if [ "{repo}" = "_" ]; then - image={container}:{tag} - elif [ "{port}" = "None" ]; then - image={repo}/{container}:{tag} - else - image={repo}:{port}/{container}:{tag} + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done fi - if [ "{ref_arg}" = "None" ]; then - build_arg="" - else - build_arg="--build-arg {ref_arg}={ref}" + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done fi - cd {path} - sudo docker build $build_arg \ - --pull=false --no-cache --force-rm=true \ - -t $image . - -- builder: - name: functest-run-containers - builders: - - shell: | - set +x - [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true if [ "{repo}" = "_" ]; then image={container}:{tag} elif [ "{port}" = "None" ]; then @@ -121,32 +389,25 @@ else image={repo}:{port}/{container}:{tag} fi - if [ "{tag}" = "latest" ]; then - py=3.7 - elif [ "{tag}" = "jerma" ]; then - py=3.7 - elif [ "{tag}" = "iruya" ]; then - py=3.6 - else - py=2.7 - fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ -e S3_ENDPOINT_URL=https://storage.googleapis.com \ - -e S3_DST_URL=s3://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID \ - -e HTTP_DST_URL=http://artifacts.opnfv.org/functest/$JOB_NAME-$BUILD_ID \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/functest/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ - -e DEBUG=$DEBUG \ - -e EXTERNAL_NETWORK=$EXTERNAL_NETWORK \ - -e DASHBOARD_URL={dashboard_url} \ - -v /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file \ - -v /home/opnfv/functest/images:/home/opnfv/functest/images \ - -v /home/opnfv/functest/tempest_blacklist.yaml:/usr/lib/python$py/\ - site-packages/functest/opnfv_tests/openstack/tempest/custom_tests/\ - blacklist.yaml \ - -v /home/opnfv/functest/blacklist.yaml:/usr/lib/python$py/\ - site-packages/functest/opnfv_tests/openstack/rally/blacklist.yaml \ - -v /home/opnfv/functest/.boto:/root/.boto \ - $image run_tests -t {test} -p + -e DASHBOARD_URL={DASHBOARD_URL} \ + $image run_tests -t {test} -p -r - builder: name: functest-remove-images @@ -162,119 +423,215 @@ fi sudo docker rmi $image || true -- scm: - name: functest-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - - job-template: - name: 'functest-{repo}-{container}-{tag}-pull' + name: 'functest-opnfv-functest-healthcheck-{tag}-pull' parameters: - - functest-slave: - slave: '{slave}' + - functest-node: + node: '{node}' builders: - functest-pull-containers: <<: *functest-containers - project: name: 'functest-opnfv-functest-healthcheck-pull' - <<: *functest-params - container: 'functest-healthcheck' + <<: *functest-opnfv-functest-healthcheck-params jobs: - - 'functest-{repo}-{container}-{tag}-pull' + - 'functest-opnfv-functest-healthcheck-{tag}-pull' + +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-rmi' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-containers + +- project: + name: 'functest-opnfv-functest-healthcheck-rmi' + <<: *functest-opnfv-functest-healthcheck-params + jobs: + - 'functest-opnfv-functest-healthcheck-{tag}-rmi' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-containers - project: name: 'functest-opnfv-functest-smoke-pull' - <<: *functest-params - container: 'functest-smoke' + <<: *functest-opnfv-functest-smoke-params jobs: - - 'functest-{repo}-{container}-{tag}-pull' + - 'functest-opnfv-functest-smoke-{tag}-pull' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-rmi' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-containers + +- project: + name: 'functest-opnfv-functest-smoke-rmi' + <<: *functest-opnfv-functest-smoke-params + jobs: + - 'functest-opnfv-functest-smoke-{tag}-rmi' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-containers - project: name: 'functest-opnfv-functest-smoke-cntt-pull' - <<: *functest-params - container: 'functest-smoke-cntt' + <<: *functest-opnfv-functest-smoke-cntt-params jobs: - - 'functest-{repo}-{container}-{tag}-pull' + - 'functest-opnfv-functest-smoke-cntt-{tag}-pull' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-rmi' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-containers - project: - name: 'functest-opnfv-functest-benchmarking-pull' - <<: *functest-params - container: 'functest-benchmarking' + name: 'functest-opnfv-functest-smoke-cntt-rmi' + <<: *functest-opnfv-functest-smoke-cntt-params jobs: - - 'functest-{repo}-{container}-{tag}-pull' + - 'functest-opnfv-functest-smoke-cntt-{tag}-rmi' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-containers - project: - name: 'functest-opnfv-functest-vnf-pull' - <<: *functest-params - container: 'functest-vnf' + name: 'functest-opnfv-functest-benchmarking-pull' + <<: *functest-opnfv-functest-benchmarking-params jobs: - - 'functest-{repo}-{container}-{tag}-pull' + - 'functest-opnfv-functest-benchmarking-{tag}-pull' - job-template: - name: 'functest-{repo}-{container}-{tag}-rmi' + name: 'functest-opnfv-functest-benchmarking-{tag}-rmi' parameters: - - functest-slave: - slave: '{slave}' + - functest-node: + node: '{node}' builders: - functest-remove-images: <<: *functest-containers - project: - name: 'functest-opnfv-functest-healthcheck-rmi' - <<: *functest-params - container: 'functest-healthcheck' + name: 'functest-opnfv-functest-benchmarking-rmi' + <<: *functest-opnfv-functest-benchmarking-params jobs: - - 'functest-{repo}-{container}-{tag}-rmi' + - 'functest-opnfv-functest-benchmarking-{tag}-rmi' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-containers - project: - name: 'functest-opnfv-functest-smoke-rmi' - <<: *functest-params - container: 'functest-smoke' + name: 'functest-opnfv-functest-benchmarking-cntt-pull' + <<: *functest-opnfv-functest-benchmarking-cntt-params jobs: - - 'functest-{repo}-{container}-{tag}-rmi' + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-pull' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-containers - project: - name: 'functest-opnfv-functest-smoke-cntt-rmi' - <<: *functest-params - container: 'functest-smoke-cntt' + name: 'functest-opnfv-functest-benchmarking-cntt-rmi' + <<: *functest-opnfv-functest-benchmarking-cntt-params jobs: - - 'functest-{repo}-{container}-{tag}-rmi' + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-containers - project: - name: 'functest-opnfv-functest-benchmarking-rmi' - <<: *functest-params - container: 'functest-benchmarking' + name: 'functest-opnfv-functest-vnf-pull' + <<: *functest-opnfv-functest-vnf-params jobs: - - 'functest-{repo}-{container}-{tag}-rmi' + - 'functest-opnfv-functest-vnf-{tag}-pull' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-rmi' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-containers - project: name: 'functest-opnfv-functest-vnf-rmi' - <<: *functest-params - container: 'functest-vnf' + <<: *functest-opnfv-functest-vnf-params jobs: - - 'functest-{repo}-{container}-{tag}-rmi' + - 'functest-opnfv-functest-vnf-{tag}-rmi' - job-template: - name: 'functest-{repo}-{container}-{tag}-{test}-run' + name: 'functest-opnfv-functest-healthcheck-{tag}-{test}-run' parameters: - - functest-slave: - slave: '{slave}' - - functest-DEBUG: - DEBUG: 'true' + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' - functest-EXTERNAL_NETWORK: EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi builders: - functest-run-containers: <<: *functest-run-containers + test: '{test}' - project: name: 'functest-opnfv-functest-healthcheck' - <<: *functest-params + <<: *functest-opnfv-functest-healthcheck-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: container: 'functest-healthcheck' test: - connection_check @@ -290,84 +647,226 @@ - odl - tempest_smoke - tempest_horizon - exclude: - - tag: hunter - test: tempest_horizon + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-{repo}-{container}-{tag}-{test}-run' + - 'functest-opnfv-functest-healthcheck-{tag}-{test}-run' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-{test}-run' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-run-containers: + <<: *functest-run-containers + test: '{test}' - project: name: 'functest-opnfv-functest-smoke' - <<: *functest-params + <<: *functest-opnfv-functest-smoke-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: container: 'functest-smoke' test: - - neutron-tempest-plugin-api + - tempest_neutron - tempest_cinder - tempest_keystone + - tempest_heat + - tempest_telemetry - rally_sanity - - refstack_defcore - refstack_compute - refstack_object - refstack_platform - tempest_full - tempest_scenario - tempest_slow - - patrole - - neutron_trunk - - networking-bgpvpn - - networking-sfc - - barbican - - octavia - exclude: - - tag: latest - test: refstack_defcore - - tag: jerma - test: refstack_defcore - - tag: iruya - test: refstack_defcore - - tag: iruya - test: octavia - - tag: hunter - test: refstack_compute - - tag: hunter - test: refstack_object - - tag: hunter - test: refstack_platform - - tag: hunter - test: octavia + - patrole_admin + - patrole_member + - patrole_reader + - tempest_barbican + - tempest_octavia + - tempest_cyborg + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-{repo}-{container}-{tag}-{test}-run' + - 'functest-opnfv-functest-smoke-{tag}-{test}-run' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-{test}-run' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-run-containers: + <<: *functest-run-containers + test: '{test}' - project: name: 'functest-opnfv-functest-smoke-cntt' - <<: *functest-params + <<: *functest-opnfv-functest-smoke-cntt-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: container: 'functest-smoke-cntt' test: - - neutron-tempest-plugin-api - - tempest_cinder - - tempest_keystone - - rally_sanity - - tempest_full - - tempest_scenario - - tempest_slow + - tempest_neutron_cntt + - tempest_cinder_cntt + - tempest_keystone_cntt + - tempest_heat_cntt + - rally_sanity_cntt + - tempest_full_cntt + - tempest_scenario_cntt + - tempest_slow_cntt + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-{repo}-{container}-{tag}-{test}-run' + - 'functest-opnfv-functest-smoke-cntt-{tag}-{test}-run' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-{test}-run' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-run-containers: + <<: *functest-run-containers + test: '{test}' - project: name: 'functest-opnfv-functest-benchmarking' - <<: *functest-params + <<: *functest-opnfv-functest-benchmarking-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: container: 'functest-benchmarking' test: - rally_full - rally_jobs - vmtp - shaker + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-{repo}-{container}-{tag}-{test}-run' + - 'functest-opnfv-functest-benchmarking-{tag}-{test}-run' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-{test}-run' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-run-containers: + <<: *functest-run-containers + test: '{test}' + +- project: + name: 'functest-opnfv-functest-benchmarking-cntt' + <<: *functest-opnfv-functest-benchmarking-cntt-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-benchmarking-cntt' + test: + - rally_full_cntt + - rally_jobs_cntt + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-{test}-run' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-{test}-run' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-run-containers: + <<: *functest-run-containers + test: '{test}' - project: name: 'functest-opnfv-functest-vnf' - <<: *functest-params + <<: *functest-opnfv-functest-vnf-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: container: 'functest-vnf' test: - cloudify @@ -375,27 +874,121 @@ - heat_ims - vyos_vrouter - juju_epc + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'functest-opnfv-functest-vnf-{tag}-{test}-run' + +- builder: + name: functest-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/functest \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/functest \ + -v /home/opnfv/functest/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + -e DASHBOARD_URL={DASHBOARD_URL} \ + $image zip_campaign + +- job-template: + name: 'functest-{tag}-zip' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' + - functest-EXTERNAL_NETWORK: + EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + builders: + - functest-zip: + <<: *functest-run-containers + +- project: + name: 'functest-zip' + <<: *functest-opnfv-functest-healthcheck-params + volumes: + - /home/opnfv/functest/openstack.creds:/home/opnfv/functest/conf/env_file + - /home/opnfv/functest/images:/home/opnfv/functest/images + env: + - EXTERNAL_NETWORK=$EXTERNAL_NETWORK + - VOLUME_DEVICE_NAME=$VOLUME_DEVICE_NAME + - IMAGE_PROPERTIES=$IMAGE_PROPERTIES + published_ports: + container: 'functest-healthcheck' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 jobs: - - 'functest-{repo}-{container}-{tag}-{test}-run' + - 'functest-{tag}-zip' - job-template: name: 'functest-{tag}-daily' project-type: multijob triggers: - - timed: '@daily' + - timed: '@weekly' parameters: - - functest-slave: - slave: '{slave}' - - functest-DEBUG: - DEBUG: 'true' + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' - functest-EXTERNAL_NETWORK: EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-{tag}-(daily|check|gate)$' + - ^functest-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -408,6 +1001,8 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi' <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi' + <<: *functest-jobs - name: 'functest-opnfv-functest-vnf-{tag}-rmi' <<: *functest-jobs - multijob: @@ -421,6 +1016,8 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-benchmarking-{tag}-pull' <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-pull' + <<: *functest-jobs - name: 'functest-opnfv-functest-vnf-{tag}-pull' <<: *functest-jobs - multijob: @@ -455,15 +1052,17 @@ - multijob: name: opnfv/functest-smoke:{tag} projects: - - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_neutron-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cinder-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_keystone-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_heat-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_telemetry-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run' <<: *functest-jobs @@ -477,34 +1076,36 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_slow-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_admin-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_member-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_reader-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_barbican-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_octavia-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-octavia-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cyborg-run' <<: *functest-jobs - multijob: name: opnfv/functest-smoke-cntt:{tag} projects: - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-neutron-tempest-plugin-api-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_neutron_cntt-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_heat_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow_cntt-run' <<: *functest-jobs - multijob: name: opnfv/functest-benchmarking:{tag} @@ -518,8 +1119,14 @@ - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run' <<: *functest-jobs - multijob: + name: opnfv/functest-benchmarking-cntt:{tag} + projects: + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_full_cntt-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_jobs_cntt-run' + <<: *functest-jobs + - multijob: name: opnfv/functest-vnf:{tag} - execution-type: SEQUENTIALLY projects: - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run' <<: *functest-jobs @@ -531,146 +1138,395 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run' <<: *functest-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'functest-{tag}-zip' + <<: *functest-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-daily' + <<: *functest-params + jobs: + - 'functest-{tag}-daily' + +- view: + name: functest + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-[a-z0-9.-]+-daily$ + +- functest-build-containers: &functest-build-containers + name: 'functest-build-containers' + <<: *functest-containers + ref_arg: '{ref_arg}' + path: '{path}' + build_args: '{build_args}' + from: '{from}' + +- builder: + name: functest-build-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + build_args="" + if [ "{build_args}" != "None" ]; then + for i in $(echo {build_args} | tr -d '[]' |sed "s/, / /g" ); \ + do build_args="--build-arg $i $build_args"; done + fi + if [ "{ref_arg}" != "None" ]; then + build_args="$build_args --build-arg {ref_arg}={ref}" + fi + cd {path} + if [ "{from}" != "None" ]; then + sed -i {from} Dockerfile + fi + sudo docker build $build_args \ + --pull=false --no-cache --force-rm=true \ + -t $image . + +- scm: + name: functest-scm + scm: + - git: + url: 'https://gerrit.opnfv.org/gerrit/functest' + refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*' + branches: + - '{ref}' + +- functest-dep: &functest-dep + name: 'functest-containers' + repo: '{repo}' + container: '{container}' + port: '{port}' + tag: '{dependency}' + +- job-template: + name: 'functest-{tag}-dep-pull' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-pull-containers: + <<: *functest-dep + +- functest-dep-params: &functest-dep-params + name: 'functest-dep-params' + repo: '_' + container: 'alpine' + port: + tag: + - latest: + dependency: 3.14 + - zed: + dependency: 3.14 + - yoga: + dependency: 3.14 + - xena: + dependency: 3.14 + - wallaby: + dependency: 3.13 + +- project: + name: 'functest-dep-pull' + <<: *functest-dep-params + jobs: + - 'functest-{tag}-dep-pull' - job-template: - name: 'functest-{repo}-{container}-{tag}-gate' + name: 'functest-{tag}-dep-rmi' parameters: - - functest-slave: - slave: '{slave}' + - functest-node: + node: '{node}' + builders: + - functest-remove-images: + <<: *functest-dep + +- project: + name: 'functest-dep-rmi' + <<: *functest-dep-params + jobs: + - 'functest-{tag}-dep-rmi' + +- builder: + name: functest-tox + builders: + - shell: | + set +x + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install software-properties-common gpg -y + sudo add-apt-repository -y ppa:deadsnakes/ppa + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install \ + libxml2-dev libxslt-dev libffi-dev libjpeg-dev \ + python3.10 python3.10-dev python3.10-distutils \ + python3.9 python3.9-dev python3.9-distutils \ + python3.8 python3.8-dev python3.8-distutils \ + python3-pip enchant-2 -y + sudo pip3 install tox + + tox + +- job-template: + name: 'functest-{tag}-tox' scm: - functest-scm: ref: $GERRIT_REFSPEC + triggers: + - functest-patchset-created: + branch: '{branch}' + parameters: + - functest-node: + node: '{node}' builders: - - functest-build-containers: - <<: *functest-build-containers - ref: $GERRIT_REFSPEC + - functest-tox: + +- project: + name: functest-tox + <<: *functest-params + jobs: + - 'functest-{tag}-tox' - job-template: - name: 'functest-{repo}-{container}-{tag}-check' + name: 'functest-opnfv-functest-core-{tag}-gate' parameters: - - functest-slave: - slave: '{slave}' - - functest-branch: - branch: '{branch}' + - functest-node: + node: '{node}' scm: - functest-scm: - ref: $branch + ref: $GERRIT_REFSPEC builders: - functest-build-containers: <<: *functest-build-containers - ref: $branch - -- project: - name: 'functest-_-alpine-3.10-rmi' - repo: _ - port: - container: alpine - tag: '3.10' - slave: master - jobs: - - 'functest-{repo}-{container}-{tag}-rmi' - -- project: - name: 'functest-_-alpine-3.10-pull' - repo: _ - port: - container: alpine - tag: '3.10' - slave: master - jobs: - - 'functest-{repo}-{container}-{tag}-pull' + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-core-{tag}-build + name: functest-opnfv-functest-core-gate <<: *functest-params + repo: opnfv + port: container: functest-core ref_arg: BRANCH path: docker/core jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-core-{tag}-gate' -- project: - name: functest-opnfv-functest-tempest-{tag}-build - <<: *functest-params - container: functest-tempest - ref_arg: BRANCH - path: docker/tempest - jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' - exclude: - - tag: latest - - tag: jerma +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-gate' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-healthcheck-{tag}-build + name: functest-opnfv-functest-healthcheck-gate <<: *functest-params + repo: opnfv + port: container: functest-healthcheck ref_arg: BRANCH path: docker/healthcheck jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-healthcheck-{tag}-gate' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-gate' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-smoke-{tag}-build + name: functest-opnfv-functest-smoke-gate <<: *functest-params + repo: opnfv + port: container: functest-smoke ref_arg: BRANCH path: docker/smoke jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-smoke-{tag}-gate' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-gate' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-benchmarking-{tag}-build + name: functest-opnfv-functest-benchmarking-gate <<: *functest-params + repo: opnfv + port: container: functest-benchmarking ref_arg: BRANCH path: docker/benchmarking jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-benchmarking-{tag}-gate' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-gate' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-vnf-{tag}-build + name: functest-opnfv-functest-vnf-gate <<: *functest-params + repo: opnfv + port: container: functest-vnf ref_arg: path: docker/vnf jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-vnf-{tag}-gate' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-gate' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: functest-opnfv-functest-smoke-cntt-{tag}-build + name: functest-opnfv-functest-smoke-cntt-gate <<: *functest-params + repo: opnfv + port: container: functest-smoke-cntt ref_arg: BRANCH path: docker/smoke-cntt jobs: - - 'functest-{repo}-{container}-{tag}-gate' - - 'functest-{repo}-{container}-{tag}-check' + - 'functest-opnfv-functest-smoke-cntt-{tag}-gate' - job-template: - name: 'functest-{tag}-check' - project-type: multijob + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-gate' parameters: - - functest-slave: - slave: '{slave}' - - functest-branch: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: $GERRIT_REFSPEC + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: $GERRIT_REFSPEC + build_args: '{build_args}' + +- project: + name: functest-opnfv-functest-benchmarking-cntt-gate + <<: *functest-params + repo: opnfv + port: + container: functest-benchmarking-cntt + ref_arg: BRANCH + path: docker/benchmarking-cntt + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-gate' + +- trigger: + name: functest-patchset-created + triggers: + - gerrit: + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'functest' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + +- job-template: + name: 'functest-{tag}-review' + project-type: multijob + triggers: + - functest-patchset-created: branch: '{branch}' - - functest-DEBUG: - DEBUG: 'true' + parameters: + - functest-node: + node: '{node}' + - functest-build_tag: + build_tag: '' - functest-EXTERNAL_NETWORK: EXTERNAL_NETWORK: public + - functest-VOLUME_DEVICE_NAME: + VOLUME_DEVICE_NAME: sdb + - functest-IMAGE_PROPERTIES: + IMAGE_PROPERTIES: hw_scsi_model:virtio-scsi,hw_disk_bus:scsi + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-{tag}-(daily|check|gate)$' + - ^functest-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -683,43 +1539,42 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi' <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rmi' + <<: *functest-jobs - name: 'functest-opnfv-functest-vnf-{tag}-rmi' <<: *functest-jobs - multijob: - name: remove dependencies + name: remove dependency projects: - - name: 'functest-_-alpine-3.10-rmi' + - name: 'functest-{tag}-dep-rmi' <<: *functest-jobs - multijob: - name: pull dependencies + name: pull dependency projects: - - name: 'functest-_-alpine-3.10-pull' + - name: 'functest-{tag}-dep-pull' <<: *functest-jobs - multijob: name: build opnfv/functest-core projects: - - name: 'functest-opnfv-functest-core-{tag}-check' - <<: *functest-jobs - - multijob: - name: build opnfv/functest-tempest - projects: - - name: 'functest-opnfv-functest-tempest-{tag}-check' + - name: 'functest-opnfv-functest-core-{tag}-gate' <<: *functest-jobs - multijob: name: build containers projects: - - name: 'functest-opnfv-functest-healthcheck-{tag}-check' + - name: 'functest-opnfv-functest-healthcheck-{tag}-gate' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-check' + - name: 'functest-opnfv-functest-smoke-{tag}-gate' <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-check' + - name: 'functest-opnfv-functest-benchmarking-{tag}-gate' <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-check' + - name: 'functest-opnfv-functest-vnf-{tag}-gate' <<: *functest-jobs - multijob: - name: build opnfv/functest-smoke-cntt + name: build cntt containers projects: - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-check' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-gate' + <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-gate' <<: *functest-jobs - multijob: name: opnfv/functest-healthcheck:{tag} @@ -753,15 +1608,17 @@ - multijob: name: opnfv/functest-smoke:{tag} projects: - - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_neutron-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cinder-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_keystone-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_heat-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_telemetry-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run' + - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run' <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run' <<: *functest-jobs @@ -775,34 +1632,36 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-smoke-{tag}-tempest_slow-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_admin-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_member-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run' + - name: 'functest-opnfv-functest-smoke-{tag}-patrole_reader-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_barbican-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_octavia-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-octavia-run' + - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cyborg-run' <<: *functest-jobs - multijob: name: opnfv/functest-smoke-cntt:{tag} projects: - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-neutron-tempest-plugin-api-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_neutron_cntt-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_heat_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario_cntt-run' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow-run' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow_cntt-run' <<: *functest-jobs - multijob: name: opnfv/functest-benchmarking:{tag} @@ -816,8 +1675,14 @@ - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run' <<: *functest-jobs - multijob: + name: opnfv/functest-benchmarking-cntt:{tag} + projects: + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_full_cntt-run' + <<: *functest-jobs + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-rally_jobs_cntt-run' + <<: *functest-jobs + - multijob: name: opnfv/functest-vnf:{tag} - execution-type: SEQUENTIALLY projects: - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run' <<: *functest-jobs @@ -829,218 +1694,964 @@ <<: *functest-jobs - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run' <<: *functest-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-review' + <<: *functest-params + jobs: + - 'functest-{tag}-review' + +- view: + name: functest-review + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-[a-z0-9.-]+-review$ + +- view: + name: functest-tox + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-[a-z0-9.-]+-tox$ + +- builder: + name: functest-push-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker push $image - trigger: - name: functest-patchset-created + name: functest-commit triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false + - pollscm: + cron: "*/30 * * * *" + +- job-template: + name: 'functest-opnfv-functest-core-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-core-build + <<: *functest-params + repo: opnfv + container: functest-core + port: + ref_arg: BRANCH + path: docker/core + jobs: + - 'functest-opnfv-functest-core-{tag}-build' + +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-healthcheck-build + <<: *functest-params + repo: opnfv + container: functest-healthcheck + port: + ref_arg: BRANCH + path: docker/healthcheck + jobs: + - 'functest-opnfv-functest-healthcheck-{tag}-build' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-smoke-build + <<: *functest-params + repo: opnfv + container: functest-smoke + port: + ref_arg: BRANCH + path: docker/smoke + jobs: + - 'functest-opnfv-functest-smoke-{tag}-build' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-benchmarking-build + <<: *functest-params + repo: opnfv + container: functest-benchmarking + port: + ref_arg: BRANCH + path: docker/benchmarking + jobs: + - 'functest-opnfv-functest-benchmarking-{tag}-build' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-vnf-build + <<: *functest-params + repo: opnfv + container: functest-vnf + port: + ref_arg: + path: docker/vnf + jobs: + - 'functest-opnfv-functest-vnf-{tag}-build' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-smoke-cntt-build + <<: *functest-params + repo: opnfv + container: functest-smoke-cntt + port: + ref_arg: BRANCH + path: docker/smoke-cntt + jobs: + - 'functest-opnfv-functest-smoke-cntt-{tag}-build' - job-template: - name: 'functest-{tag}-gate' + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-build' + parameters: + - functest-node: + node: '{node}' + scm: + - functest-scm: + ref: '{branch}' + builders: + - functest-build-containers: + <<: *functest-build-containers + ref: '{branch}' + build_args: '{build_args}' + - functest-push-containers: + <<: *functest-build-containers + ref: '{branch}' + +- project: + name: functest-opnfv-functest-benchmarking-cntt-build + <<: *functest-params + repo: opnfv + container: functest-benchmarking-cntt + port: + ref_arg: BRANCH + path: docker/benchmarking-cntt + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-build' + +- job-template: + name: 'functest-{tag}-docker' project-type: multijob triggers: - - functest-patchset-created: - branch: '{branch}' + - functest-commit + scm: + - functest-scm: + ref: '{branch}' parameters: - - functest-slave: - slave: '{slave}' - - functest-DEBUG: - DEBUG: 'true' - - functest-EXTERNAL_NETWORK: - EXTERNAL_NETWORK: public + - functest-node: + node: '{node}' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^functest-{tag}-(daily|check|gate)$' + - ^functest-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: - name: remove former images + name: remove dependency projects: - - name: 'functest-opnfv-functest-healthcheck-{tag}-rmi' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-rmi' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rmi' - <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-rmi' - <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-rmi' + - name: 'functest-{tag}-dep-rmi' <<: *functest-jobs - multijob: - name: remove dependencies + name: pull dependency projects: - - name: 'functest-_-alpine-3.10-rmi' - <<: *functest-jobs - - multijob: - name: pull dependencies - projects: - - name: 'functest-_-alpine-3.10-pull' + - name: 'functest-{tag}-dep-pull' <<: *functest-jobs - multijob: name: build opnfv/functest-core projects: - - name: 'functest-opnfv-functest-core-{tag}-gate' - <<: *functest-jobs - - multijob: - name: build opnfv/functest-tempest - projects: - - name: 'functest-opnfv-functest-tempest-{tag}-gate' + - name: 'functest-opnfv-functest-core-{tag}-build' <<: *functest-jobs - multijob: name: build containers projects: - - name: 'functest-opnfv-functest-healthcheck-{tag}-gate' + - name: 'functest-opnfv-functest-healthcheck-{tag}-build' <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-gate' + - name: 'functest-opnfv-functest-smoke-{tag}-build' <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-gate' + - name: 'functest-opnfv-functest-benchmarking-{tag}-build' <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-gate' + - name: 'functest-opnfv-functest-vnf-{tag}-build' <<: *functest-jobs - multijob: - name: build opnfv/functest-smoke-cntt + name: build cntt containers projects: - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-gate' + - name: 'functest-opnfv-functest-smoke-cntt-{tag}-build' <<: *functest-jobs - - multijob: - name: opnfv/functest-healthcheck:{tag} - projects: - - name: 'functest-opnfv-functest-healthcheck-{tag}-connection_check-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork1-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-tenantnetwork2-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready1-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-vmready2-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm1-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-singlevm2-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_ssh-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-vping_userdata-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-cinder_test-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-odl-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_smoke-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-healthcheck-{tag}-tempest_horizon-run' - <<: *functest-jobs - - multijob: - name: opnfv/functest-smoke:{tag} - projects: - - name: 'functest-opnfv-functest-smoke-{tag}-neutron-tempest-plugin-api-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-tempest_cinder-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-tempest_keystone-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-rally_sanity-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_defcore-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_compute-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_object-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-refstack_platform-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-tempest_full-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-tempest_scenario-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-tempest_slow-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-patrole-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-neutron_trunk-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-bgpvpn-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-networking-sfc-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-barbican-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-{tag}-octavia-run' - <<: *functest-jobs - - multijob: - name: opnfv/functest-smoke-cntt:{tag} - projects: - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-neutron-tempest-plugin-api-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_cinder-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_keystone-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-rally_sanity-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_full-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_scenario-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-smoke-cntt-{tag}-tempest_slow-run' - <<: *functest-jobs - - multijob: - name: opnfv/functest-benchmarking:{tag} - projects: - - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_full-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-rally_jobs-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-vmtp-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-benchmarking-{tag}-shaker-run' - <<: *functest-jobs - - multijob: - name: opnfv/functest-vnf:{tag} - execution-type: SEQUENTIALLY - projects: - - name: 'functest-opnfv-functest-vnf-{tag}-cloudify-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-cloudify_ims-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-heat_ims-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-vyos_vrouter-run' - <<: *functest-jobs - - name: 'functest-opnfv-functest-vnf-{tag}-juju_epc-run' + - name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-build' <<: *functest-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com - project: - name: 'functest' + name: 'functest-docker' <<: *functest-params jobs: - - 'functest-{tag}-daily' - - 'functest-{tag}-check' - - 'functest-{tag}-gate' + - 'functest-{tag}-docker' + +- builder: + name: functest-trivy + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./trivy image --exit-code 1 $image + +- job-template: + name: 'functest-opnfv-functest-core-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-core-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-core' + port: + jobs: + - 'functest-opnfv-functest-core-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-healthcheck-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-healthcheck' + port: + jobs: + - 'functest-opnfv-functest-healthcheck-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke' + port: + jobs: + - 'functest-opnfv-functest-smoke-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-vnf-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-vnf' + port: + jobs: + - 'functest-opnfv-functest-vnf-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-cntt-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke-cntt' + port: + jobs: + - 'functest-opnfv-functest-smoke-cntt-{tag}-trivy' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-trivy' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-trivy: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-cntt-trivy' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking-cntt' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-trivy' + +- builder: + name: functest-grype + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./grype -q $image + +- job-template: + name: 'functest-opnfv-functest-core-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-core-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-core' + port: + jobs: + - 'functest-opnfv-functest-core-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-healthcheck-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-healthcheck' + port: + jobs: + - 'functest-opnfv-functest-healthcheck-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke' + port: + jobs: + - 'functest-opnfv-functest-smoke-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-vnf-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-vnf' + port: + jobs: + - 'functest-opnfv-functest-vnf-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-cntt-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke-cntt' + port: + jobs: + - 'functest-opnfv-functest-smoke-cntt-{tag}-grype' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-grype' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-grype: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-cntt-grype' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking-cntt' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-grype' + +- builder: + name: functest-sbom + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + sudo mkdir -p ~/.docker + curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sudo sh -s -- + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker sbom $image + +- job-template: + name: 'functest-opnfv-functest-core-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-core-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-core' + port: + jobs: + - 'functest-opnfv-functest-core-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-healthcheck-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-healthcheck-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-healthcheck' + port: + jobs: + - 'functest-opnfv-functest-healthcheck-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-smoke-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke' + port: + jobs: + - 'functest-opnfv-functest-smoke-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-vnf-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-vnf-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-vnf' + port: + jobs: + - 'functest-opnfv-functest-vnf-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-smoke-cntt-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-smoke-cntt-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-smoke-cntt' + port: + jobs: + - 'functest-opnfv-functest-smoke-cntt-{tag}-sbom' + +- job-template: + name: 'functest-opnfv-functest-benchmarking-cntt-{tag}-sbom' + triggers: + - timed: '@weekly' + parameters: + - functest-node: + node: '{node}' + builders: + - functest-sbom: + <<: *functest-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'functest-opnfv-functest-benchmarking-cntt-sbom' + <<: *functest-params + repo: 'opnfv' + container: 'functest-benchmarking-cntt' + port: + jobs: + - 'functest-opnfv-functest-benchmarking-cntt-{tag}-sbom' - view: - name: functest + name: functest-docker + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^functest-[a-z0-9.-]+-docker$ + +- view: + name: functest-trivy + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!functest-kubernetes)(?!functest-pi)^functest-[a-z-0-9.]+-trivy$ + +- view: + name: functest-grype + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!functest-kubernetes)(?!functest-pi)^functest-[a-z-0-9.]+-grype$ + +- view: + name: functest-sbom view-type: list columns: - status @@ -1049,4 +2660,4 @@ - last-success - last-failure - last-duration - regex: ^functest-[a-z]+-(daily|check|gate)$ + regex: (?!functest-kubernetes)(?!functest-pi)^functest-[a-z-0-9.]+-sbom$ diff --git a/jjb/functest/xtesting-ci-docker.yaml b/jjb/functest/xtesting-ci-docker.yaml new file mode 100644 index 000000000..c439d1484 --- /dev/null +++ b/jjb/functest/xtesting-ci-docker.yaml @@ -0,0 +1,189 @@ +--- +- builder: + name: xtesting-ci-docker-builder + builders: + - shell: | + cd {dir} + sudo docker build --pull -t {image} . + sudo docker push {image} + sudo docker system prune --all -f + +- builder: + name: xtesting-ci-docker-multiarch-builder + builders: + - shell: | + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/estesp/manifest-tool + (cd manifest-tool && git checkout v0.9.0 && \ + sudo -E make && sudo -E make install) + (cd {dir} && \ + sudo docker build --pull -t {image}:amd64-{tag} . && \ + sudo docker push {image}:amd64-{tag}) + (cd {dir} && \ + git checkout Dockerfile + sed -i -e "s|{from_amd64}|{to_arm64}|g" Dockerfile + sudo docker build --pull -t {image}:arm64-{tag} . && \ + sudo docker push {image}:arm64-{tag}) + (cd {dir} && \ + git checkout Dockerfile + sed -i -e "s|{from_amd64}|{to_arm}|g" Dockerfile + sudo docker build --pull -t {image}:arm-{tag} . && \ + sudo docker push {image}:arm-{tag}) + sudo manifest-tool push from-args \ + --platforms linux/amd64,linux/arm,linux/arm64 \ + --template {image}:ARCH-{tag} \ + --target {image}:{tag} + sudo docker system prune --all -f + +- scm: + name: xtesting-ci-docker-scm + scm: + - git: + url: https://github.com/collivier/xtesting-docker.git + git-config-name: + git-config-email: + +- trigger: + name: xtesting-ci-docker-trigger + triggers: + - pollscm: + cron: "H/30 * * * *" + - timed: '@daily' + +- parameter: + name: xtesting-ci-docker-parameter + parameters: + - label: + name: node + default: 'xtesting' + +- job-template: + name: xtesting-ci-docker-{stream} + scm: + - xtesting-ci-docker-scm + parameters: + - xtesting-ci-docker-parameter + triggers: + - xtesting-ci-docker-trigger + builders: + - xtesting-ci-docker-builder: + image: '{image}' + dir: '{dir}' + +- job-template: + name: xtesting-ci-docker-multitarch-{stream} + scm: + - xtesting-ci-docker-scm + parameters: + - xtesting-ci-docker-parameter + triggers: + - xtesting-ci-docker-trigger + builders: + - xtesting-ci-docker-multiarch-builder: + image: '{image}' + dir: '{dir}' + tag: '{tag}' + from_amd64: '{from_amd64}' + to_arm64: '{to_arm64}' + to_arm: '{to_arm}' + +- project: + name: xtesting-ci-docker + stream: + - jenkins-lts-slim: + dir: jenkins.debian + image: opnfv/xtesting-jenkins:lts-slim + - jenkins-lts-alpine: + dir: jenkins + image: opnfv/xtesting-jenkins:lts-alpine + - s3www-v0.5.3: + dir: s3www + image: opnfv/xtesting-s3www:v0.5.3 + jobs: + - xtesting-ci-docker-{stream} + +- project: + name: xtesting-ci-docker-multiarch + stream: + - jenkins-agent-debian: + dir: jenkins-agent + image: opnfv/xtesting-jenkins-agent + tag: 4.9-bullseye + from_amd64: debian:bullseye + to_arm64: arm64v8/debian:bullseye + to_arm: arm32v7/debian:bullseye + - jenkins-agent-ubuntu: + dir: jenkins-agent-ubuntu + image: opnfv/xtesting-jenkins-agent + tag: 4.9-jammy + from_amd64: ubuntu:jammy + to_arm64: arm64v8/ubuntu:jammy + to_arm: arm32v7/ubuntu:jammy + - jenkins-agent-auto: + dir: jenkins-agent-auto + image: opnfv/xtesting-jenkins-agent-auto + tag: 4.9-bullseye + from_amd64: opnfv/xtesting-jenkins-agent:4.9-bullseye + to_arm64: opnfv/xtesting-jenkins-agent:arm64-4.9-bullseye + to_arm: opnfv/xtesting-jenkins-agent:arm-4.9-bullseye + jobs: + - xtesting-ci-docker-multitarch-{stream} + +- builder: + name: xtesting-ci-docker-trivy-builder + builders: + - shell: | + curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b . + ./trivy image --exit-code 1 {image} + +- trigger: + name: xtesting-ci-docker-trivy-trigger + triggers: + - timed: '@daily' + +- parameter: + name: xtesting-ci-docker-trivy-parameter + parameters: + - label: + name: node + default: 'xtesting' + +- job-template: + name: 'xtesting-ci-docker-trivy-{stream}' + triggers: + - xtesting-ci-docker-trivy-trigger + parameters: + - xtesting-ci-docker-trivy-parameter + builders: + - xtesting-ci-docker-trivy-builder: + image: '{image}' + +- project: + name: 'xtesting-ci-docker-trivy' + stream: + - jenkins-lts-slim: + image: opnfv/xtesting-jenkins:lts-slim + - jenkins-lts-alpine: + image: opnfv/xtesting-jenkins:lts-alpine + - s3www-v0.5.3: + image: opnfv/xtesting-s3www:v0.5.3 + - xtesting-jenkins-agent-4.9-bullseye: + image: opnfv/xtesting-jenkins-agent:4.9-bullseye + - xtesting-jenkins-agent-4.9-jammy: + image: opnfv/xtesting-jenkins-agent:4.9-jammy + - xtesting-jenkins-agent-auto-4.9-bullseye: + image: opnfv/xtesting-jenkins-agent-auto:4.9-bullseye + jobs: + - 'xtesting-ci-docker-trivy-{stream}' + +- view: + name: xtesting-ci-docker + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-ci-docker.*$ diff --git a/jjb/functest/xtesting-ci-vm.yaml b/jjb/functest/xtesting-ci-vm.yaml new file mode 100644 index 000000000..367598fe4 --- /dev/null +++ b/jjb/functest/xtesting-ci-vm.yaml @@ -0,0 +1,233 @@ +--- +- scm: + name: xtesting-ci-vm-scm + scm: + - git: + url: '{url}' + branches: + - '{ref}' + +- builder: + name: xtesting-ci-vm-builder + builders: + - shell: | + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - + echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \ + /etc/apt/sources.list.d/google-cloud-sdk.list + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + DEBIAN_FRONTEND=noninteractive sudo apt-get \ + -o DPkg::Lock::Timeout=300 install python3-diskimage-builder -y + if [ "{project}" == "xtestingci" ]; then + export ELEMENTS_PATH=$(pwd)/elements + else + git init ansible-role-xtesting + (cd ansible-role-xtesting && + git fetch --tags https://github.com/collivier/ansible-role-xtesting.git {role-version} && + git checkout FETCH_HEAD) + export ELEMENTS_PATH=$(pwd)/elements:$(pwd)/ansible-role-xtesting/elements + fi + export DIB_XTESTINGCI_VERSION={role-version} + disk-image-create --image-size 20 -o {project}-{version}.qcow2 debian vm {project} + gsutil cp {project}-{version}.qcow2 gs://artifacts.opnfv.org/{project}/{project}-{version}.qcow2 + rm -rf {project}-{version}.qcow2 {project}-{version}.d + +- trigger: + name: xtesting-ci-vm-trigger + triggers: + - timed: '@weekly' + +- parameter: + name: xtesting-ci-vm-parameter + parameters: + - label: + name: node + default: 'opnfv-build' + +- job-template: + name: '{project}-{version}-vm' + scm: + - xtesting-ci-vm-scm: + url: '{url}' + ref: '{ref}' + triggers: + - xtesting-ci-vm-trigger + parameters: + - xtesting-ci-vm-parameter + properties: + - build-blocker: + use-build-blocker: true + blocking-level: 'NODE' + blocking-jobs: + - '^.*-vm$' + builders: + - xtesting-ci-vm-builder: + project: '{project}' + version: '{version}' + role-version: '{role-version}' + +- project: + name: 'xtesting-ci-vm' + project: + - xtestingci: + url: https://github.com/collivier/ansible-role-xtesting.git + - xtesting: + url: https://git.opnfv.org/functest-xtesting.git + - functest: + url: https://git.opnfv.org/functest.git + - functest-kubernetes: + url: https://git.opnfv.org/functest-kubernetes.git + version: + - latest: + ref: master + role-version: master + - '2023.2': + ref: stable/2023.2 + role-version: master + - '2023.1': + ref: stable/2023.1 + role-version: master + - zed: + ref: stable/zed + role-version: master + - yoga: + ref: stable/yoga + role-version: master + - xena: + ref: stable/xena + role-version: master + - wallaby: + ref: stable/wallaby + role-version: master + - leguer: + ref: stable/leguer + role-version: master + - kali: + ref: stable/kali + role-version: master + - jerma: + ref: stable/jerma + role-version: master + - v1.28: + ref: stable/v1.28 + role-version: master + - v1.27: + ref: stable/v1.27 + role-version: master + - v1.26: + ref: stable/v1.26 + role-version: master + - v1.25: + ref: stable/v1.25 + role-version: master + - v1.24: + ref: stable/v1.24 + role-version: master + - v1.23: + ref: stable/v1.23 + role-version: master + - v1.22: + ref: stable/v1.22 + role-version: master + exclude: + - project: xtestingci + version: '2023.2' + - project: functest + version: '2023.2' + - project: functest-kubernetes + version: '2023.2' + - project: xtestingci + version: '2023.1' + - project: functest + version: '2023.1' + - project: functest-kubernetes + version: '2023.1' + - project: xtestingci + version: zed + - project: functest-kubernetes + version: zed + - project: xtestingci + version: yoga + - project: functest-kubernetes + version: yoga + - project: xtestingci + version: xena + - project: functest-kubernetes + version: xena + - project: xtestingci + version: wallaby + - project: functest-kubernetes + version: wallaby + - project: xtestingci + version: leguer + - project: xtesting + version: leguer + - project: functest-kubernetes + version: leguer + - project: xtestingci + version: kali + - project: xtesting + version: kali + - project: functest-kubernetes + version: kali + - project: xtestingci + version: jerma + - project: xtesting + version: jerma + - project: functest-kubernetes + version: jerma + - project: xtestingci + version: v1.28 + - project: functest + version: v1.28 + - project: xtesting + version: v1.28 + - project: xtestingci + version: v1.27 + - project: functest + version: v1.27 + - project: xtesting + version: v1.27 + - project: xtestingci + version: v1.26 + - project: functest + version: v1.26 + - project: xtesting + version: v1.26 + - project: xtestingci + version: v1.25 + - project: functest + version: v1.25 + - project: xtesting + version: v1.25 + - project: xtestingci + version: v1.24 + - project: functest + version: v1.24 + - project: xtesting + version: v1.24 + - project: xtestingci + version: v1.23 + - project: functest + version: v1.23 + - project: xtesting + version: v1.23 + - project: xtestingci + version: v1.22 + - project: functest + version: v1.22 + - project: xtesting + version: v1.22 + jobs: + - '{project}-{version}-vm' + +- view: + name: xtesting-ci-vm + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^.*-vm$ diff --git a/jjb/functest/xtesting-ci.yaml b/jjb/functest/xtesting-ci.yaml new file mode 100644 index 000000000..9969d538b --- /dev/null +++ b/jjb/functest/xtesting-ci.yaml @@ -0,0 +1,184 @@ +--- +- builder: + name: xtesting-ci-tests + builders: + - shell: | + set +x + sudo apt-get -o DPkg::Lock::Timeout=300 update + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install python3-pip docker.io podman -y + curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 + chmod +x ./kind + sudo mv ./kind /usr/local/bin/kind + kind delete clusters xtesting jenkins gitlab || true + sudo docker ps -aq |xargs sudo docker stop || true + sudo docker ps -aq |xargs sudo docker rm || true + sudo docker system prune -f --all || true + sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf + sudo systemctl daemon-reload + sudo systemctl restart docker + sudo podman ps -aq |xargs sudo podman stop || true + sudo podman ps -aq |xargs sudo podman rm || true + sudo rm -rfv /data /tmp/xtesting* + sudo apt-get install ansible patch -y + rm -rf ~/.ansible/roles/collivier.xtesting + case {release} in + stable) + ansible-galaxy install -f collivier.xtesting ;; + *) + ansible-galaxy install -f git+https://github.com/collivier/ansible-role-xtesting.git,{release} + mv ~/.ansible/roles/ansible-role-xtesting ~/.ansible/roles/collivier.xtesting ;; + esac + (cd ~/.ansible/roles/collivier.xtesting; patch -p1 < tests/docker_config_json.patch) + ansible-galaxy collection install -f -r ~/.ansible/roles/collivier.xtesting/requirements.yml + ansible-playbook -vvvv ~/.ansible/roles/collivier.xtesting/tests/{playbook}.yml + +- builder: + name: xtesting-ci-tests-remote + builders: + - shell: | + set +x + ssh opnfv@10.200.140.224 << EOF + sudo apt-get -o DPkg::Lock::Timeout=300 update + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install python3-pip docker.io podman -y + curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 + chmod +x ./kind + sudo mv ./kind /usr/local/bin/kind + kind delete clusters xtesting jenkins gitlab || true + sudo docker ps -aq |xargs sudo docker stop || true + sudo docker ps -aq |xargs sudo docker rm || true + sudo docker system prune -f --all || true + sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf + sudo systemctl daemon-reload + sudo systemctl restart docker + sudo podman ps -aq |xargs sudo podman stop || true + sudo podman ps -aq |xargs sudo podman rm || true + sudo rm -rfv /data /tmp/xtesting* + EOF + sudo apt-get install ansible patch -y + rm -rf ~/.ansible/roles/collivier.xtesting + case {release} in + stable) + ansible-galaxy install -f collivier.xtesting ;; + *) + ansible-galaxy install -f git+https://github.com/collivier/ansible-role-xtesting.git,{release} + mv ~/.ansible/roles/ansible-role-xtesting ~/.ansible/roles/collivier.xtesting ;; + esac + (cd ~/.ansible/roles/collivier.xtesting; patch -p1 < tests/docker_config_json.patch) + ansible-galaxy collection install -f -r ~/.ansible/roles/collivier.xtesting/requirements.yml + sed -i "s/127.0.0.1/10.200.140.224/g" ~/.ansible/roles/collivier.xtesting/tests/{playbook}.yml + echo 10.200.140.224 ansible_host=10.200.140.224 ansible_user=opnfv > /tmp/inventory + ansible-playbook -i /tmp/inventory -vvvv ~/.ansible/roles/collivier.xtesting/tests/{playbook}.yml + +- parameter: + name: xtesting-ci-node + parameters: + - label: + name: node + default: '{node}' + +- job-template: + name: 'xtesting-ci-tests-{release}-{playbook}' + triggers: + - timed: '@daily' + parameters: + - xtesting-ci-node: + node: '{node}' + properties: + - build-blocker: + use-build-blocker: true + blocking-level: 'NODE' + blocking-jobs: + - '^xtesting-ci-tests-.*$' + builders: + - xtesting-ci-tests: + playbook: '{playbook}' + release: '{release}' + +- job-template: + name: 'xtesting-ci-tests-remote-{release}-{playbook}' + triggers: + - timed: '@daily' + parameters: + - xtesting-ci-node: + node: '{node}' + properties: + - build-blocker: + use-build-blocker: true + blocking-level: 'NODE' + blocking-jobs: + - '^xtesting-ci-tests-.*$' + builders: + - xtesting-ci-tests-remote: + playbook: '{playbook}' + release: '{release}' + +- playbook: &playbook + name: 'playbook' + playbook: + - all + - podman + - proxy + - proxy2 + - radosgw + - nexus + - repo + - twice + - macro + - branch + - jjb + - https + - https2 + - gitlab.insert + - jenkins_kind + - jenkins_kind2 + - gitlab_kind + - chainedci + - kubernetes0 + - kubernetes1 + - kubernetes2 + - proxy_kubernetes + - proxy_kubernetes2 + - k8s_jenkins_kind0 + - k8s_jenkins_kind1 + - k8s_jenkins_kind2 + - k8s_jenkins_kind3 + - k8s_gitlab0 + - k8s_gitlab1 + - k8s_gitlab_kind0 + - k8s_gitlab_kind1 + - k8s_gitlab_kind2 + - k8s_gitlab_kind3 + +- project: + name: xtesting-ci-tests + <<: *playbook + node: xtestingci + release: + - stable + - master + jobs: + - 'xtesting-ci-tests-{release}-{playbook}' + +- project: + name: xtesting-ci-tests-remote + <<: *playbook + node: xtesting + release: + - stable + - master + jobs: + - 'xtesting-ci-tests-remote-{release}-{playbook}' + +- view: + name: xtesting-ci + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-ci-tests-.*$ diff --git a/jjb/functest/xtesting-docker.yaml b/jjb/functest/xtesting-docker.yaml deleted file mode 100644 index fbc90c2e9..000000000 --- a/jjb/functest/xtesting-docker.yaml +++ /dev/null @@ -1,234 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## -- project: - - name: xtesting-docker - - project: functest-xtesting - - stream: - - master: - branch: '{stream}' - disabled: false - - jerma: - branch: 'stable/{stream}' - disabled: false - - iruya: - branch: 'stable/{stream}' - disabled: false - - hunter: - branch: 'stable/{stream}' - disabled: false - - arch_tag: - - 'amd64': - slave_label: 'opnfv-build-ubuntu' - - 'arm64': - slave_label: 'opnfv-build-ubuntu-arm' - - # settings for jobs run in multijob phases - build-job-settings: &build-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: | - PUSH_IMAGE=$PUSH_IMAGE - COMMIT_ID=$COMMIT_ID - GERRIT_REFNAME=$GERRIT_REFNAME - DOCKERFILE=$DOCKERFILE - kill-phase-on: FAILURE - abort-all-jobs: false - - manifest-job-settings: &manifest-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: - GERRIT_REFNAME=$GERRIT_REFNAME - kill-phase-on: FAILURE - abort-all-jobs: false - - # yamllint enable rule:key-duplicates - jobs: - - "xtesting-docker-{stream}" - - "xtesting-docker-build-{arch_tag}-{stream}" - - "xtesting-docker-manifest-{stream}" - -######################## -# job templates -######################## -- job-template: - name: 'xtesting-docker-{stream}' - - project-type: multijob - - disabled: '{obj:disabled}' - - parameters: - - xtesting-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: 'opnfv-build-ubuntu' - arch_tag: 'amd64' - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - triggers: - - pollscm: - cron: "*/30 * * * *" - - gerrit-trigger-tag-created: - project: '{project}' - - builders: - - multijob: - name: 'build xtesting images' - execution-type: PARALLEL - projects: - - name: 'xtesting-docker-build-amd64-{stream}' - <<: *build-job-settings - - name: 'xtesting-docker-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish xtesting manifests' - execution-type: PARALLEL - projects: - - name: 'xtesting-docker-manifest-{stream}' - <<: *manifest-job-settings - - publishers: - - 'xtesting-amd64-recipients' - - 'xtesting-arm64-recipients' - -- job-template: - name: 'xtesting-docker-build-{arch_tag}-{stream}' - disabled: '{obj:disabled}' - parameters: - - xtesting-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: '{slave_label}' - arch_tag: '{arch_tag}' - scm: - - git-scm - builders: - - shell: | - #!/bin/bash -ex - sudo arch={arch_tag} bash ./build.sh - exit $? - -- job-template: - name: 'xtesting-docker-manifest-{stream}' - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: 'opnfv-build-ubuntu' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest images" - - - disabled: '{obj:disabled}' - - builders: - - shell: | - #!/bin/bash -ex - case "{stream}" in - "master") - tag="latest" ;; - *) - tag="{stream}" ;; - esac - sudo manifest-tool push from-args \ - --platforms linux/amd64,linux/arm64 \ - --template $REPO/xtesting:ARCH-$tag \ - --target $REPO/xtesting:$tag - exit $? - -- parameter: - name: xtesting-job-parameters - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: '{slave_label}' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - string: - name: COMMIT_ID - default: "" - description: "commit id to make a snapshot docker image" - - string: - name: GERRIT_REFNAME - default: "" - description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1" - - string: - name: DOCKERFILE - default: "Dockerfile" - description: "Dockerfile to use for creating the image." - - string: - name: ARCH_TAG - default: "{arch_tag}" - description: "If set, this value will be added to the docker image tag as a prefix" - - string: - name: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - - string: - name: REPO - default: "opnfv" - description: "Repository name for functest images" - -# publisher macros -- publisher: - name: 'xtesting-arm64-recipients' - publishers: - - email: - recipients: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - delia.popescu@enea.com - -- publisher: - name: 'xtesting-amd64-recipients' - publishers: - - email: - recipients: > - jalausuch@suse.com morgan.richomme@orange.com - cedric.ollivier@orange.com feng.xiaowei@zte.com.cn - juha.kosonen@nokia.com wangwulin@huawei.com - valentin.boucher@kontron.com diff --git a/jjb/functest/xtesting-pi.yaml b/jjb/functest/xtesting-pi.yaml new file mode 100644 index 000000000..86ac98f30 --- /dev/null +++ b/jjb/functest/xtesting-pi.yaml @@ -0,0 +1,425 @@ +--- +- xtesting-pi-containers: &xtesting-pi-containers + name: 'xtesting-pi-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' + +- xtesting-pi-params: &xtesting-pi-params + name: 'xtesting-pi-params' + tag: + - latest: + node: opnfv-build + - 2023.2: + node: opnfv-build + - 2023.1: + node: opnfv-build + - zed: + node: opnfv-build + - yoga: + node: opnfv-build + - xena: + node: opnfv-build + - wallaby: + node: opnfv-build + - arm-latest: + node: opnfv-build + - arm-2.23.2: + node: opnfv-build + - arm-2.23.1: + node: opnfv-build + - arm-zed: + node: opnfv-build + - arm-yoga: + node: opnfv-build + - arm-xena: + node: opnfv-build + - arm-wallaby: + node: opnfv-build + - arm64-latest: + node: opnfv-build + - arm64-2023.2: + node: opnfv-build + - arm64-2023.1: + node: opnfv-build + - arm64-zed: + node: opnfv-build + - arm64-yoga: + node: opnfv-build + - arm64-xena: + node: opnfv-build + - arm64-wallaby: + node: opnfv-build + +- xtesting-pi-ollivier-xtesting-params: &xtesting-pi-ollivier-xtesting-params + name: 'xtesting-pi-ollivier-xtesting-params' + repo: 'ollivier' + container: 'xtesting' + port: + tag: + - latest: + node: opnfv-build + - 2023.2: + node: opnfv-build + - 2023.1: + node: opnfv-build + - zed: + node: opnfv-build + - yoga: + node: opnfv-build + - xena: + node: opnfv-build + - wallaby: + node: opnfv-build + - arm-latest: + node: opnfv-build + - arm-2.23.2: + node: opnfv-build + - arm-2.23.1: + node: opnfv-build + - arm-zed: + node: opnfv-build + - arm-yoga: + node: opnfv-build + - arm-xena: + node: opnfv-build + - arm-wallaby: + node: opnfv-build + - arm64-latest: + node: opnfv-build + - arm64-2023.2: + node: opnfv-build + - arm64-2023.1: + node: opnfv-build + - arm64-zed: + node: opnfv-build + - arm64-yoga: + node: opnfv-build + - arm64-xena: + node: opnfv-build + - arm64-wallaby: + node: opnfv-build + +- xtesting-pi-jobs: &xtesting-pi-jobs + name: 'xtesting-pi-jobs' + current-parameters: true + +- parameter: + name: xtesting-pi-node + parameters: + - label: + name: node + default: '{node}' + +- parameter: + name: xtesting-pi-build_tag + parameters: + - random-string: + name: build_tag + +- xtesting-pi-run-containers: &xtesting-pi-run-containers + name: 'xtesting-pi-run-containers' + <<: *xtesting-pi-containers + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' + +- builder: + name: xtesting-pi-pull-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker pull $image + +- builder: + name: xtesting-pi-run-containers + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image run_tests -t {test} -p -r + +- builder: + name: xtesting-pi-remove-images + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker rmi $image || true + +- job-template: + name: 'xtesting-pi-ollivier-xtesting-{tag}-pull' + parameters: + - xtesting-pi-node: + node: '{node}' + builders: + - xtesting-pi-pull-containers: + <<: *xtesting-pi-containers + +- project: + name: 'xtesting-pi-ollivier-xtesting-pull' + <<: *xtesting-pi-ollivier-xtesting-params + jobs: + - 'xtesting-pi-ollivier-xtesting-{tag}-pull' + +- job-template: + name: 'xtesting-pi-ollivier-xtesting-{tag}-rmi' + parameters: + - xtesting-pi-node: + node: '{node}' + builders: + - xtesting-pi-remove-images: + <<: *xtesting-pi-containers + +- project: + name: 'xtesting-pi-ollivier-xtesting-rmi' + <<: *xtesting-pi-ollivier-xtesting-params + jobs: + - 'xtesting-pi-ollivier-xtesting-{tag}-rmi' + +- job-template: + name: 'xtesting-pi-ollivier-xtesting-{tag}-{test}-run' + parameters: + - xtesting-pi-node: + node: '{node}' + - xtesting-pi-build_tag: + build_tag: '' + builders: + - xtesting-pi-run-containers: + <<: *xtesting-pi-run-containers + test: '{test}' + +- project: + name: 'xtesting-pi-ollivier-xtesting' + <<: *xtesting-pi-ollivier-xtesting-params + volumes: + env: + published_ports: + container: 'xtesting' + test: + - first + - second + - third + - fourth + - fifth + - sixth + - eighth + - nineth + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + exclude: + - tag: wallaby + test: nineth + - tag: xena + test: nineth + jobs: + - 'xtesting-pi-ollivier-xtesting-{tag}-{test}-run' + +- builder: + name: xtesting-pi-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting \ + -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image zip_campaign + +- job-template: + name: 'xtesting-pi-{tag}-zip' + parameters: + - xtesting-pi-node: + node: '{node}' + - xtesting-pi-build_tag: + build_tag: '' + builders: + - xtesting-pi-zip: + <<: *xtesting-pi-run-containers + +- project: + name: 'xtesting-pi-zip' + <<: *xtesting-pi-ollivier-xtesting-params + volumes: + env: + published_ports: + container: 'xtesting' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'xtesting-pi-{tag}-zip' + +- job-template: + name: 'xtesting-pi-{tag}-daily' + project-type: multijob + triggers: + - timed: '@daily' + parameters: + - xtesting-pi-node: + node: '{node}' + - xtesting-pi-build_tag: + build_tag: '' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation + properties: + - build-blocker: + blocking-jobs: + - ^xtesting-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation + builders: + - multijob: + name: remove former images + projects: + - name: 'xtesting-pi-ollivier-xtesting-{tag}-rmi' + <<: *xtesting-pi-jobs + - multijob: + name: pull containers + projects: + - name: 'xtesting-pi-ollivier-xtesting-{tag}-pull' + <<: *xtesting-pi-jobs + - multijob: + name: ollivier/xtesting:{tag} + projects: + - name: 'xtesting-pi-ollivier-xtesting-{tag}-first-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-second-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-third-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-fourth-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-fifth-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-sixth-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-eighth-run' + <<: *xtesting-pi-jobs + - name: 'xtesting-pi-ollivier-xtesting-{tag}-nineth-run' + <<: *xtesting-pi-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'xtesting-pi-{tag}-zip' + <<: *xtesting-pi-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-pi-daily' + <<: *xtesting-pi-params + jobs: + - 'xtesting-pi-{tag}-daily' + +- view: + name: xtesting-pi + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-pi-[a-z-0-9.]+-daily$ diff --git a/jjb/functest/xtesting-project-jobs.yaml b/jjb/functest/xtesting-project-jobs.yaml deleted file mode 100644 index a1013feb3..000000000 --- a/jjb/functest/xtesting-project-jobs.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -- xtesting-project-params: &xtesting-project-params - name: 'xtesting-project-params' - tag: - - latest: - branch: master - slave: lf-virtual1 - - jerma: - branch: stable/jerma - slave: lf-virtual1 - - iruya: - branch: stable/iruya - slave: lf-virtual1 - - hunter: - branch: stable/hunter - slave: lf-virtual1 - -- builder: - name: xtesting-run-tox - builders: - - shell: tox - -- trigger: - name: xtesting-project-patchset-created - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest-xtesting' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false - -- parameter: - name: xtesting-project-slave - parameters: - - label: - name: slave - default: '{slave}' - -- scm: - name: xtesting-project-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest-xtesting - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - -- job-template: - name: 'xtesting-run-tox-{tag}' - triggers: - - xtesting-project-patchset-created: - branch: '{branch}' - scm: - - xtesting-project-scm: - ref: $GERRIT_REFSPEC - parameters: - - xtesting-project-slave: - slave: '{slave}' - builders: - - xtesting-run-tox - -- project: - name: 'xtesting-run-tox' - <<: *xtesting-project-params - jobs: - - 'xtesting-run-tox-{tag}' diff --git a/jjb/functest/xtesting.yaml b/jjb/functest/xtesting.yaml index b34fc100c..fbd8ba445 100644 --- a/jjb/functest/xtesting.yaml +++ b/jjb/functest/xtesting.yaml @@ -1,57 +1,133 @@ --- -- xtesting-jobs: &xtesting-jobs - name: 'xtesting-jobs' - current-parameters: true +- xtesting-containers: &xtesting-containers + name: 'xtesting-containers' + repo: '{repo}' + port: '{port}' + container: '{container}' + tag: '{tag}' - xtesting-params: &xtesting-params name: 'xtesting-params' + tag: + - latest: + from: + build_args: + branch: master + node: opnfv-build + dependency: 3.17 + - 2023.2: + from: + build_args: + branch: stable/2023.2 + node: opnfv-build + dependency: 3.17 + - 2023.1: + from: + build_args: + branch: stable/2023.1 + node: opnfv-build + dependency: 3.17 + - zed: + from: + build_args: + branch: stable/zed + node: opnfv-build + dependency: 3.16 + - yoga: + from: + build_args: + branch: stable/yoga + node: opnfv-build + dependency: 3.16 + - xena: + from: + build_args: + branch: stable/xena + node: opnfv-build + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: opnfv-build + dependency: 3.13 + +- xtesting-opnfv-xtesting-params: &xtesting-opnfv-xtesting-params + name: 'xtesting-opnfv-xtesting-params' repo: 'opnfv' + container: 'xtesting' port: tag: - latest: + from: + build_args: branch: master - slave: lf-virtual1 - - jerma: - branch: stable/jerma - slave: lf-virtual1 - - iruya: - branch: stable/iruya - slave: lf-virtual1 - - hunter: - branch: stable/hunter - slave: lf-virtual1 + node: opnfv-build + dependency: 3.17 + - 2023.2: + from: + build_args: + branch: stable/2023.2 + node: opnfv-build + dependency: 3.17 + - 2023.1: + from: + build_args: + branch: stable/2023.1 + node: opnfv-build + dependency: 3.17 + - zed: + from: + build_args: + branch: stable/zed + node: opnfv-build + dependency: 3.16 + - yoga: + from: + build_args: + branch: stable/yoga + node: opnfv-build + dependency: 3.16 + - xena: + from: + build_args: + branch: stable/xena + node: opnfv-build + dependency: 3.14 + - wallaby: + from: + build_args: + branch: stable/wallaby + node: opnfv-build + dependency: 3.13 + +- xtesting-jobs: &xtesting-jobs + name: 'xtesting-jobs' + current-parameters: true - parameter: - name: xtesting-slave + name: xtesting-node parameters: - label: - name: slave - default: '{slave}' + name: node + default: '{node}' - parameter: - name: xtesting-branch + name: xtesting-build_tag parameters: - - string: - name: branch - default: '{branch}' - -- xtesting-containers: &xtesting-containers - name: 'xtesting-containers' - repo: '{repo}' - port: '{port}' - container: '{container}' - tag: '{tag}' + - random-string: + name: build_tag - xtesting-run-containers: &xtesting-run-containers - name: 'xtesting-build-containers' + name: 'xtesting-run-containers' <<: *xtesting-containers - test: '{test}' - -- xtesting-build-containers: &xtesting-build-containers - name: 'xtesting-build-containers' - <<: *xtesting-containers - ref_arg: '{ref_arg}' - path: '{path}' + privileged: '{privileged}' + volumes: '{volumes}' + env: '{env}' + network: '{network}' + uid: '{uid}' + gid: '{gid}' + published_ports: '{published_ports}' - builder: name: xtesting-pull-containers @@ -68,33 +144,26 @@ sudo docker pull $image - builder: - name: xtesting-build-containers + name: xtesting-run-containers builders: - shell: | set +x - if [ "{repo}" = "_" ]; then - image={container}:{tag} - elif [ "{port}" = "None" ]; then - image={repo}/{container}:{tag} - else - image={repo}:{port}/{container}:{tag} + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done fi - if [ "{ref_arg}" = "None" ]; then - build_arg="" - else - build_arg="--build-arg {ref_arg}={ref}" + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done fi - cd {path} - sudo docker build $build_arg \ - --pull=false --no-cache --force-rm=true \ - -t $image . - -- builder: - name: xtesting-run-containers - builders: - - shell: | - set +x - [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/* || true + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true if [ "{repo}" = "_" ]; then image={container}:{tag} elif [ "{port}" = "None" ]; then @@ -102,14 +171,24 @@ else image={repo}:{port}/{container}:{tag} fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ -e S3_ENDPOINT_URL=https://storage.googleapis.com \ - -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting/$JOB_NAME-$BUILD_ID \ - -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting/$JOB_NAME-$BUILD_ID \ + -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \ + -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ - -v /home/opnfv/xtesting/.boto:/root/.boto \ - -e DEBUG=true \ - $image run_tests -t {test} -p + $image run_tests -t {test} -p -r - builder: name: xtesting-remove-images @@ -125,59 +204,54 @@ fi sudo docker rmi $image || true -- scm: - name: xtesting-scm - scm: - - git: - url: https://gerrit.opnfv.org/gerrit/functest-xtesting - refspec: '+refs/changes/*:refs/changes/*' - branches: - - '{ref}' - - job-template: - name: 'xtesting-{repo}-{container}-{tag}-pull' + name: 'xtesting-opnfv-xtesting-{tag}-pull' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' builders: - xtesting-pull-containers: <<: *xtesting-containers - project: name: 'xtesting-opnfv-xtesting-pull' - <<: *xtesting-params - container: 'xtesting' + <<: *xtesting-opnfv-xtesting-params jobs: - - 'xtesting-{repo}-{container}-{tag}-pull' + - 'xtesting-opnfv-xtesting-{tag}-pull' - job-template: - name: 'xtesting-{repo}-{container}-{tag}-rmi' + name: 'xtesting-opnfv-xtesting-{tag}-rmi' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' builders: - xtesting-remove-images: <<: *xtesting-containers - project: name: 'xtesting-opnfv-xtesting-rmi' - <<: *xtesting-params - container: 'xtesting' + <<: *xtesting-opnfv-xtesting-params jobs: - - 'xtesting-{repo}-{container}-{tag}-rmi' + - 'xtesting-opnfv-xtesting-{tag}-rmi' - job-template: - name: 'xtesting-{repo}-{container}-{tag}-{test}-run' + name: 'xtesting-opnfv-xtesting-{tag}-{test}-run' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' + - xtesting-build_tag: + build_tag: '' builders: - xtesting-run-containers: <<: *xtesting-run-containers + test: '{test}' - project: name: 'xtesting-opnfv-xtesting' - <<: *xtesting-params + <<: *xtesting-opnfv-xtesting-params + volumes: + env: + published_ports: container: 'xtesting' test: - first @@ -186,13 +260,91 @@ - fourth - fifth - sixth + - eighth + - nineth + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 exclude: - - tag: hunter - test: sixth - - tag: iruya - test: sixth + - tag: wallaby + test: nineth + - tag: xena + test: nineth jobs: - - 'xtesting-{repo}-{container}-{tag}-{test}-run' + - 'xtesting-opnfv-xtesting-{tag}-{test}-run' + +- builder: + name: xtesting-zip + builders: + - shell: | + set +x + volumes=; + if [ "{volumes}" != "None" ]; then + for i in $(echo {volumes} | tr -d '[]' |sed "s/, / /g" ); \ + do volumes="-v $i $volumes"; done + fi + env=; + if [ "{env}" != "None" ]; then + for i in $(eval echo {env} | tr -d '[]' |sed "s/, / /g" ); \ + do env="-e $i $env"; done + fi + published_ports=; + if [ "{published_ports}" != "None" ]; then + for i in $(echo {published_ports} | tr -d '[]' |sed "s/, / /g" ); \ + do published_ports="-p $i $published_ports"; done + fi + [ ! -z "$WORKSPACE" ] && sudo rm -rf $WORKSPACE/results || true + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo mkdir -p $WORKSPACE/results + sudo chown {uid}:{gid} $WORKSPACE/results + sudo docker run --rm \ + --privileged={privileged} \ + --network={network} \ + $volumes \ + $env \ + $published_ports \ + -e S3_ENDPOINT_URL=https://storage.googleapis.com \ + -e S3_DST_URL=s3://artifacts.opnfv.org/xtesting \ + -e HTTP_DST_URL=http://artifacts.opnfv.org/xtesting \ + -v /home/opnfv/xtesting/.boto:/etc/boto.cfg \ + -e TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e TEST_DB_EXT_URL=http://testresults.opnfv.org/test/api/v1/results \ + -e NODE_NAME=$node \ + -e BUILD_TAG=$BUILD_TAG \ + -v $WORKSPACE/../$JOB_NAME/results:/var/lib/xtesting/results \ + $image zip_campaign + +- job-template: + name: 'xtesting-{tag}-zip' + parameters: + - xtesting-node: + node: '{node}' + - xtesting-build_tag: + build_tag: '' + builders: + - xtesting-zip: + <<: *xtesting-run-containers + +- project: + name: 'xtesting-zip' + <<: *xtesting-opnfv-xtesting-params + volumes: + env: + published_ports: + container: 'xtesting' + privileged: 'false' + network: bridge + uid: 1000 + gid: 1000 + jobs: + - 'xtesting-{tag}-zip' - job-template: name: 'xtesting-{tag}-daily' @@ -200,14 +352,18 @@ triggers: - timed: '@daily' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' + - xtesting-build_tag: + build_tag: '' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^xtesting-{tag}-(daily|check|gate)$' + - ^xtesting-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -234,79 +390,247 @@ <<: *xtesting-jobs - name: 'xtesting-opnfv-xtesting-{tag}-sixth-run' <<: *xtesting-jobs + - name: 'xtesting-opnfv-xtesting-{tag}-eighth-run' + <<: *xtesting-jobs + - name: 'xtesting-opnfv-xtesting-{tag}-nineth-run' + <<: *xtesting-jobs + - multijob: + name: dump all campaign data + projects: + - name: 'xtesting-{tag}-zip' + <<: *xtesting-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-daily' + <<: *xtesting-params + jobs: + - 'xtesting-{tag}-daily' + +- view: + name: xtesting + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-[a-z0-9.-]+-daily$ + +- xtesting-build-containers: &xtesting-build-containers + name: 'xtesting-build-containers' + <<: *xtesting-containers + ref_arg: '{ref_arg}' + path: '{path}' + build_args: '{build_args}' + from: '{from}' + +- builder: + name: xtesting-build-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + build_args="" + if [ "{build_args}" != "None" ]; then + for i in $(echo {build_args} | tr -d '[]' |sed "s/, / /g" ); \ + do build_args="--build-arg $i $build_args"; done + fi + if [ "{ref_arg}" != "None" ]; then + build_args="$build_args --build-arg {ref_arg}={ref}" + fi + cd {path} + if [ "{from}" != "None" ]; then + sed -i {from} Dockerfile + fi + sudo docker build $build_args \ + --pull=false --no-cache --force-rm=true \ + -t $image . + +- scm: + name: xtesting-scm + scm: + - git: + url: 'https://gerrit.opnfv.org/gerrit/functest-xtesting' + refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*' + branches: + - '{ref}' + +- xtesting-dep: &xtesting-dep + name: 'xtesting-containers' + repo: '{repo}' + container: '{container}' + port: '{port}' + tag: '{dependency}' - job-template: - name: 'xtesting-{repo}-{container}-{tag}-gate' + name: 'xtesting-{tag}-dep-pull' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' + builders: + - xtesting-pull-containers: + <<: *xtesting-dep + +- xtesting-dep-params: &xtesting-dep-params + name: 'xtesting-dep-params' + repo: '_' + container: 'alpine' + port: + tag: + - latest: + dependency: 3.17 + - 2023.2: + dependency: 3.17 + - 2023.1: + dependency: 3.17 + - zed: + dependency: 3.16 + - yoga: + dependency: 3.16 + - xena: + dependency: 3.14 + - wallaby: + dependency: 3.13 + +- project: + name: 'xtesting-dep-pull' + <<: *xtesting-dep-params + jobs: + - 'xtesting-{tag}-dep-pull' + +- job-template: + name: 'xtesting-{tag}-dep-rmi' + parameters: + - xtesting-node: + node: '{node}' + builders: + - xtesting-remove-images: + <<: *xtesting-dep + +- project: + name: 'xtesting-dep-rmi' + <<: *xtesting-dep-params + jobs: + - 'xtesting-{tag}-dep-rmi' + +- builder: + name: xtesting-tox + builders: + - shell: | + set +x + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install software-properties-common gpg -y + sudo add-apt-repository -y ppa:deadsnakes/ppa + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install \ + libxml2-dev libxslt-dev libffi-dev libjpeg-dev \ + python3.10 python3.10-dev python3.10-distutils \ + python3.9 python3.9-dev python3.9-distutils \ + python3.8 python3.8-dev python3.8-distutils \ + python3-pip enchant-2 -y + sudo pip3 install tox + + tox + +- job-template: + name: 'xtesting-{tag}-tox' scm: - xtesting-scm: ref: $GERRIT_REFSPEC + triggers: + - xtesting-patchset-created: + branch: '{branch}' + parameters: + - xtesting-node: + node: '{node}' builders: - - xtesting-build-containers: - <<: *xtesting-build-containers - ref: $GERRIT_REFSPEC + - xtesting-tox: + +- project: + name: xtesting-tox + <<: *xtesting-params + jobs: + - 'xtesting-{tag}-tox' - job-template: - name: 'xtesting-{repo}-{container}-{tag}-check' + name: 'xtesting-opnfv-xtesting-{tag}-gate' parameters: - - xtesting-slave: - slave: '{slave}' - - xtesting-branch: - branch: '{branch}' + - xtesting-node: + node: '{node}' scm: - xtesting-scm: - ref: $branch + ref: $GERRIT_REFSPEC builders: - xtesting-build-containers: <<: *xtesting-build-containers - ref: $branch - -- project: - name: 'xtesting-_-alpine-3.10-rmi' - repo: _ - port: - container: alpine - tag: '3.10' - slave: master - jobs: - - 'xtesting-{repo}-{container}-{tag}-rmi' - -- project: - name: 'xtesting-_-alpine-3.10-pull' - repo: _ - port: - container: alpine - tag: '3.10' - slave: master - jobs: - - 'xtesting-{repo}-{container}-{tag}-pull' + ref: $GERRIT_REFSPEC + build_args: '{build_args}' - project: - name: xtesting-opnfv-xtesting-{tag}-build + name: xtesting-opnfv-xtesting-gate <<: *xtesting-params + repo: opnfv + port: container: xtesting ref_arg: BRANCH - path: docker + path: docker/core jobs: - - 'xtesting-{repo}-{container}-{tag}-gate' - - 'xtesting-{repo}-{container}-{tag}-check' + - 'xtesting-opnfv-xtesting-{tag}-gate' + +- trigger: + name: xtesting-patchset-created + triggers: + - gerrit: + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'functest-xtesting' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' - job-template: - name: 'xtesting-{tag}-check' + name: 'xtesting-{tag}-review' project-type: multijob - parameters: - - xtesting-slave: - slave: '{slave}' - - xtesting-branch: + triggers: + - xtesting-patchset-created: branch: '{branch}' + parameters: + - xtesting-node: + node: '{node}' + - xtesting-build_tag: + build_tag: '' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^xtesting-{tag}-(daily|check|gate)$' + - ^xtesting-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: name: remove former images @@ -314,19 +638,19 @@ - name: 'xtesting-opnfv-xtesting-{tag}-rmi' <<: *xtesting-jobs - multijob: - name: remove dependencies + name: remove dependency projects: - - name: 'xtesting-_-alpine-3.10-rmi' + - name: 'xtesting-{tag}-dep-rmi' <<: *xtesting-jobs - multijob: - name: pull dependencies + name: pull dependency projects: - - name: 'xtesting-_-alpine-3.10-pull' + - name: 'xtesting-{tag}-dep-pull' <<: *xtesting-jobs - multijob: name: opnfv/xtesting projects: - - name: 'xtesting-opnfv-xtesting-{tag}-check' + - name: 'xtesting-opnfv-xtesting-{tag}-gate' <<: *xtesting-jobs - multijob: name: opnfv/xtesting:{tag} @@ -343,92 +667,314 @@ <<: *xtesting-jobs - name: 'xtesting-opnfv-xtesting-{tag}-sixth-run' <<: *xtesting-jobs + - name: 'xtesting-opnfv-xtesting-{tag}-eighth-run' + <<: *xtesting-jobs + - name: 'xtesting-opnfv-xtesting-{tag}-nineth-run' + <<: *xtesting-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-review' + <<: *xtesting-params + jobs: + - 'xtesting-{tag}-review' + +- view: + name: xtesting-review + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-[a-z0-9.-]+-review$ + +- view: + name: xtesting-tox + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-[a-z0-9.-]+-tox$ + +- builder: + name: xtesting-push-containers + builders: + - shell: | + set +x + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker push $image - trigger: - name: xtesting-patchset-created + name: xtesting-commit triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'functest-xtesting' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - skip-vote: - successful: false - failed: false - unstable: false - notbuilt: false + - pollscm: + cron: "*/30 * * * *" + +- job-template: + name: 'xtesting-opnfv-xtesting-{tag}-build' + parameters: + - xtesting-node: + node: '{node}' + scm: + - xtesting-scm: + ref: '{branch}' + builders: + - xtesting-build-containers: + <<: *xtesting-build-containers + ref: '{branch}' + build_args: '{build_args}' + - xtesting-push-containers: + <<: *xtesting-build-containers + ref: '{branch}' + +- project: + name: xtesting-opnfv-xtesting-build + <<: *xtesting-params + repo: opnfv + container: xtesting + port: + ref_arg: BRANCH + path: docker/core + jobs: + - 'xtesting-opnfv-xtesting-{tag}-build' - job-template: - name: 'xtesting-{tag}-gate' + name: 'xtesting-{tag}-docker' project-type: multijob triggers: - - xtesting-patchset-created: - branch: '{branch}' + - xtesting-commit + scm: + - xtesting-scm: + ref: '{branch}' parameters: - - xtesting-slave: - slave: '{slave}' + - xtesting-node: + node: '{node}' + # PyYAML and yamllint differ here + # see https://github.com/yaml/pyyaml/issues/234 + # yamllint disable rule:indentation properties: - build-blocker: - use-build-blocker: true - blocking-level: 'NODE' blocking-jobs: - - '^xtesting-{tag}-(daily|check|gate)$' + - ^xtesting-(pi-)*{tag}-(daily|docker|review)$ + # yamllint enable rule:indentation builders: - multijob: - name: remove former images + name: remove dependency projects: - - name: 'xtesting-opnfv-xtesting-{tag}-rmi' + - name: 'xtesting-{tag}-dep-rmi' <<: *xtesting-jobs - multijob: - name: remove dependencies + name: pull dependency projects: - - name: 'xtesting-_-alpine-3.10-rmi' - <<: *xtesting-jobs - - multijob: - name: pull dependencies - projects: - - name: 'xtesting-_-alpine-3.10-pull' + - name: 'xtesting-{tag}-dep-pull' <<: *xtesting-jobs - multijob: name: opnfv/xtesting projects: - - name: 'xtesting-opnfv-xtesting-{tag}-gate' - <<: *xtesting-jobs - - multijob: - name: opnfv/xtesting:{tag} - projects: - - name: 'xtesting-opnfv-xtesting-{tag}-first-run' - <<: *xtesting-jobs - - name: 'xtesting-opnfv-xtesting-{tag}-second-run' - <<: *xtesting-jobs - - name: 'xtesting-opnfv-xtesting-{tag}-third-run' - <<: *xtesting-jobs - - name: 'xtesting-opnfv-xtesting-{tag}-fourth-run' - <<: *xtesting-jobs - - name: 'xtesting-opnfv-xtesting-{tag}-fifth-run' - <<: *xtesting-jobs - - name: 'xtesting-opnfv-xtesting-{tag}-sixth-run' + - name: 'xtesting-opnfv-xtesting-{tag}-build' <<: *xtesting-jobs + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com - project: - name: 'xtesting' + name: 'xtesting-docker' <<: *xtesting-params jobs: - - 'xtesting-{tag}-daily' - - 'xtesting-{tag}-check' - - 'xtesting-{tag}-gate' + - 'xtesting-{tag}-docker' + +- builder: + name: xtesting-trivy + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./trivy image --exit-code 1 $image + +- job-template: + name: 'xtesting-opnfv-xtesting-{tag}-trivy' + triggers: + - timed: '@daily' + parameters: + - xtesting-node: + node: '{node}' + builders: + - xtesting-trivy: + <<: *xtesting-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-opnfv-xtesting-trivy' + <<: *xtesting-params + repo: 'opnfv' + container: 'xtesting' + port: + jobs: + - 'xtesting-opnfv-xtesting-{tag}-trivy' + +- builder: + name: xtesting-grype + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b . + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + ./grype -q $image + +- job-template: + name: 'xtesting-opnfv-xtesting-{tag}-grype' + triggers: + - timed: '@daily' + parameters: + - xtesting-node: + node: '{node}' + builders: + - xtesting-grype: + <<: *xtesting-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-opnfv-xtesting-grype' + <<: *xtesting-params + repo: 'opnfv' + container: 'xtesting' + port: + jobs: + - 'xtesting-opnfv-xtesting-{tag}-grype' + +- builder: + name: xtesting-sbom + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install curl -y + + sudo mkdir -p ~/.docker + curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sudo sh -s -- + if [ "{repo}" = "_" ]; then + image={container}:{tag} + elif [ "{port}" = "None" ]; then + image={repo}/{container}:{tag} + else + image={repo}:{port}/{container}:{tag} + fi + sudo docker sbom $image + +- job-template: + name: 'xtesting-opnfv-xtesting-{tag}-sbom' + triggers: + - timed: '@daily' + parameters: + - xtesting-node: + node: '{node}' + builders: + - xtesting-sbom: + <<: *xtesting-containers + publishers: + - email-ext: + failure: false + first-failure: true + fixed: true + recipients: cedric.ollivier@orange.com + +- project: + name: 'xtesting-opnfv-xtesting-sbom' + <<: *xtesting-params + repo: 'opnfv' + container: 'xtesting' + port: + jobs: + - 'xtesting-opnfv-xtesting-{tag}-sbom' - view: - name: xtesting + name: xtesting-docker + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^xtesting-[a-z0-9.-]+-docker$ + +- view: + name: xtesting-trivy + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!xtesting-pi)^xtesting-[a-z-0-9.]+-trivy$ + +- view: + name: xtesting-grype + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: (?!xtesting-pi)^xtesting-[a-z-0-9.]+-grype$ + +- view: + name: xtesting-sbom view-type: list columns: - status @@ -437,4 +983,4 @@ - last-success - last-failure - last-duration - regex: ^xtesting-[a-z]+-(daily|check|gate)$ + regex: (?!xtesting-pi)^xtesting-[a-z-0-9.]+-sbom$ |