#!/bin/bash
##############################################################################
# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
# fit for arm64
DOCKER_ARCH="$(uname -m)"
UBUNTU_PORTS_URL="http://ports.ubuntu.com/ubuntu-ports/"
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */---
###################################
# job configuration for dovetail
###################################
- project:
name: dovetail
project: '{name}'
# --------------------------------------
# BRANCH ANCHORS
# --------------------------------------
# 1)the stream/branch here represents the SUT(System Under Test) stream/branch
# 2)docker-tag is the docker tag of dovetail(only master by now, then all latest used)
# the dovetail stream is one-to-one mapping with dovetail docker-tag
# the dovetail is not sync with A/B/C release
master: &master
stream: master
branch: '{stream}'
dovetail-branch: '{stream}'
gs-pathname: ''
docker-tag: 'latest'
disabled: true
hunter: &hunter
stream: hunter
branch: 'stable/{stream}'
dovetail-branch: 'master'
gs-pathname: '/{stream}'
docker-tag: 'latest'
# ----------------------------------
# POD, PLATFORM, AND BRANCH MAPPING
# ----------------------------------
# CI PODs
# This section should only contain the SUTs
# that have been switched using labels for slaves
# -----------------------------------------------
# the pods, SUTs listed here are just examples to
# let the dovetail tool run, there can be more ways beside CI to
# run the dovetail tool.
# pods, SUTs will be added/adjusted when needed
pod:
# fuel CI PODs
- baremetal:
slave-label: fuel-baremetal
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- virtual:
slave-label: fuel-virtual
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- baremetal:
slave-label: fuel-baremetal
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *hunter
- virtual:
slave-label: fuel-virtual
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *hunter
# -------------------------------
# Installers not using labels
# CI PODs
# This section should only contain the installers
# that have not been switched using labels for slaves
# -------------------------------
# apex PODs
- virtual:
slave-label: apex-virtual-master
SUT: apex
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- baremetal:
slave-label: apex-baremetal-master
SUT: apex
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- virtual:
slave-label: apex-virtual-master
SUT: apex
auto-trigger-name: 'daily-trigger-disabled'
<<: *hunter
- baremetal:
slave-label: apex-baremetal-master
SUT: apex
auto-trigger-name: 'daily-trigger-disabled'
<<: *hunter
# armband CI PODs
- armband-baremetal:
slave-label: armband-baremetal
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- armband-virtual:
slave-label: armband-virtual
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
# -------------------------------
# None-CI PODs
# -------------------------------
- zte-pod1:
slave-label: zte-pod1
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- zte-pod2:
slave-label: zte-pod2
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
- zte-pod3:
slave-label: zte-pod3
SUT: fuel
auto-trigger-name: 'daily-trigger-disabled'
<<: *master
# -------------------------------
testsuite:
- 'default'
- 'proposed_tests'
testarea:
- 'mandatory'
- 'optional'
jobs:
- 'dovetail-{SUT}-{pod}-{testsuite}-{stream}'
- 'dovetail-{SUT}-{pod}-{testsuite}-{testarea}-{stream}'
################################
# job templates
################################
- job-template:
name: 'dovetail-{SUT}-{pod}-{testsuite}-{stream}'
disabled: false
concurrent: true
properties:
- logrotate-default
- throttle:
enabled: true
max-per-node: 1
option: 'project'
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
- timeout:
timeout: 300
abort: true
- fix-workspace-permissions
triggers:
- '{auto-trigger-name}'
parameters:
- project-parameter:
project: '{project}'
branch: '{dovetail-branch}'
- '{SUT}-defaults'
- '{slave-label}-defaults'
- string:
name: DEPLOY_SCENARIO
default: 'os-nosdn-nofeature-ha'
- string:
name: DOCKER_TAG
default: '{docker-tag}'
description: 'Tag to pull dovetail docker image'
- string:
name: CI_DEBUG
default: 'true'
description: "Show debug output information"
- string:
name: TESTSUITE
default: '{testsuite}'
description: "dovetail testsuite to run"
- string:
name: TESTAREA
default: 'all'
description: "dovetail testarea to run"
- string:
name: DOVETAIL_REPO_DIR
default: "/home/opnfv/dovetail"
description: "Directory where the dovetail repository is cloned"
- string:
name: SUT_BRANCH
default: '{branch}'
description: "SUT branch"
scm:
- git-scm
builders:
- description-setter:
description: "POD: $NODE_NAME"
- 'dovetail-cleanup'
- 'dovetail-run'
publishers:
- archive:
artifacts: 'results/**/*'
allow-empty: true
fingerprint: true
- email-jenkins-admins-on-failure
- job-template:
name: 'dovetail-{SUT}-{pod}-{testsuite}-{testarea}-{stream}'
disabled: false
concurrent: true
properties:
- logrotate-default
- throttle:
enabled: true
max-per-node: 1
option: 'project'
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
- timeout:
timeout: 300
abort: true
- fix-workspace-permissions
triggers:
- '{auto-trigger-name}'
parameters:
- project-parameter:
project: '{project}'
branch: '{dovetail-branch}'
- '{SUT}-defaults'
- '{slave-label}-defaults'
- string:
name: DEPLOY_SCENARIO
default: 'os-nosdn-nofeature-ha'
- string:
name: DOCKER_TAG
default: '{docker-tag}'
description: 'Tag to pull dovetail docker image'
- string:
name: CI_DEBUG
default: 'true'
description: "Show debug output information"
- string:
name: TESTSUITE
default: '{testsuite}'
description: "dovetail testsuite to run"
- string:
name: TESTAREA
default: '{testarea}'
description: "dovetail testarea to run"
- string:
name: DOVETAIL_REPO_DIR
default: "/home/opnfv/dovetail"
description: "Directory where the dovetail repository is cloned"
- string:
name: SUT_BRANCH
default: '{branch}'
description: "SUT branch"
scm:
- git-scm
builders:
- description-setter:
description: "POD: $NODE_NAME"
- 'dovetail-cleanup'
- 'dovetail-run'
publishers:
- archive:
artifacts: 'results/**/*'
allow-empty: true
fingerprint: true
- email-jenkins-admins-on-failure
# -------------------------
# builder macros
# -------------------------
- builder:
name: dovetail-run
builders:
- shell:
!include-raw: ./dovetail-run.sh
- builder:
name: dovetail-cleanup
builders:
- shell:
!include-raw: ./dovetail-cleanup.sh