The following text is the example of Jenkins jobs at you can create for plugins.
deploy-plugin.sh:
#!/bin/bash
set -ex
export SYSTEM_TESTS="${WORKSPACE}/utils/\
jenkins/system_tests.sh"
export LOGS_DIR=${WORKSPACE}/logs/\
${BUILD_NUMBER}
export VENV_PATH='/home/jenkins/\
venv-nailgun-tests-2.9'
# Change this to appropriate fuel-qa
# variable for your plugin
YOUR_PLUGIN_PATH="$(ls ./*rpm)"
export YOUR_PLUGIN_PATH
sh -x "${SYSTEM_TESTS}" -w "${WORKSPACE}" -V \
"${VENV_PATH}" -i "${ISO_PATH}" -t test -o \
--group="${TEST_GROUP}"
prepare_env.sh:
#!/bin/bash
set -ex
export VENV_PATH="/home/jenkins/\
venv-nailgun-tests-2.9"
rm -rf "${VENV_PATH}"
REQS_PATH="${WORKSPACE}/fuel-qa/\
fuelweb_test/requirements.txt"
virtualenv --system-site-packages \
"${VENV_PATH}"
source "${VENV_PATH}/bin/activate"
pip install -r "${REQS_PATH}" --upgrade
django-admin.py syncdb --settings=devops.\
settings --noinput
django-admin.py migrate devops --settings\
=devops.settings --noinput
deactivate
syntax-build-plugin.sh:
#!/bin/bash
set -ex
find . -name '*.erb' -print 0 | xargs -0 -P1 \
-I '%' erb -P -x -T '-' % | ruby -c
find . -name '*.pp' -print 0| xargs -0 -P1 \
puppet parser validate --verbose
find . -name '*.pp' -print 0| xargs -0 -P1 \
puppet-lint \
--fail-on-warnings \
--with-context \
--with-filename \
--no-140chars-check \
--no-variable_scope-check \
--no-nested_classes_or_defines-check \
--no-autoloader_layout-check \
--no-class_inherits_from_params_class-check \
--no-documentation-check \
--no-arrow_alignment-check
fpb --check ./
fpb --build ./
plugins.yaml:
- project:
name: plugin_name #Your plugin mame
path_to_fuel_iso: $PWD #Path to FuelISO
plugin_repo: plugin_repo #Your plugin repo name\
at stackforge
email_to: emails_list #List of emails separated\
by comma
test_group: test_group #Test group in fuel-qa for\
deployment tests of your plugin
jobs:
- 'prepare_env'
- '{name}.build'
- '{name}.{dist}.deploy':
dist: 'centos'
- '{name}.{dist}.deploy':
dist: 'ubuntu'
- job-template:
name: 'prepare_env'
builders:
- shell:
!include-raw-escape './builders/prepare_env.sh'
description: 'Prepare environment to testing'
logrotate:
numToKeep: 10
parameters:
- string:
name: 'GERRIT_REFSPEC'
default: 'refs/heads/master'
scm:
- git:
branches:
- $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
url: 'https://review.openstack.org/stackforge\
/fuel-qa'
choosing-strategy: gerrit
clean:
before: true
publishers:
- email:
notify-every-unstable-build: true
recipients: '{email_to}'
- job-template:
name: '{name}.build'
builders:
- shell:
!include-raw-escape './builders/syntax-\
build-plugin.sh'
description: '<a href=https://github.com/\
stackforge/{plugin_repo}>Build {name} plugin\
from fuel-plugins project</a>'
logrotate:
numToKeep: 10
parameters:
- string:
name: 'GERRIT_REFSPEC'
default: 'refs/heads/master'
scm:
- git:
branches:
- $GERRIT_BRANCH
name: ''
refspec: $GERRIT_REFSPEC
url: 'https://review.openstack.org/\
stackforge/{plugin_repo}'
choosing-strategy: gerrit
clean:
before: true
triggers:
- gerrit:
trigger-on:
- patchset-created-event #Trigger\
plugin build for every gerrit patchset
projects:
- project-compare-type: 'PLAIN'
project-pattern: '{plugin_repo}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**'
silent: true
server-name: 'review.openstack.org'
publishers:
- archive:
artifacts: '*.rpm'
- email:
notify-every-unstable-build: true
recipients: '{email_to}'
- job-template:
name: '{name}.{dist}.deploy'
builders:
- copyartifact:
project: '{name}.build'
which-build: last-successful
- inject:
properties-content: |
OPENSTACK_RELEASE={dist}
TEST_GROUP={test_group}
ISO_PATH={path_to_fuel_iso}
- shell:
!include-raw-escape './builders/\
deploy-plugin.sh'
description: 'fuel-qa system test for {name}'
logrotate:
numToKeep: 10
parameters:
- string:
name: 'GERRIT_REFSPEC'
default: 'refs/heads/master'
scm:
- git:
branches:
- $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
url: 'https://review.openstack.org/\
stackforge/fuel-qa'
choosing-strategy: gerrit
clean:
before: true
wipe-workspace: false
publishers:
- archive:
artifacts: 'logs/$BUILD_NUMBER/*'
- email:
notify-every-unstable-build: true
recipients: '{email_to}'
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.