project-config/jenkins/jobs/macros.yaml
Alex Schultz 5328118f3c Create a puppet-agent-install builder
The puppet-module-build job requires puppet be available. Rather than
include it in bindep.txt which would conflict with the other jobs, this
change creates a builder to pull in the latest version of puppet from
puppetlabs.

Change-Id: I2c56d16ee3e0be6982e51e4457c9beb25f175c3e
2017-05-16 13:21:34 -06:00

1086 lines
32 KiB
YAML

- builder:
name: contact
builders:
- shell: |
#!/bin/sh
echo "For problems with this job, contact {name} <{email}> freenode: {irc}"
- builder:
name: print-template-name
builders:
- shell: 'echo JJB template: {template-name}'
- builder:
name: zuul-git-prep
builders:
- shell: |
#!/bin/bash -xe
CLONEMAP=`mktemp`
function cleanup {
# In cases where zuul-cloner is aborted during a git
# clone operation, git will remove the git work tree in
# its cleanup. The work tree in these jobs is the
# workspace directory, which means that subsequent
# jenkins post-build actions can not run because the
# workspace has been removed.
# To reduce the likelihood of this having an impact,
# recreate the workspace directory if needed
mkdir -p $WORKSPACE
rm -f $CLONEMAP
}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: $ZUUL_PROJECT
dest: .
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org $ZUUL_PROJECT
- builder:
name: zuul-git-prep-upper-constraints
builders:
- shell: |
#!/bin/bash -xe
CLONEMAP=`mktemp`
REQS_DIR=`mktemp -d`
function cleanup {
mkdir -p $WORKSPACE
rm -rf $CLONEMAP $REQS_DIR
}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: $ZUUL_PROJECT
dest: .
EOF
# zuul cloner works poorly if there are 2 names that are the
# same in here.
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
cat >> $CLONEMAP << EOF
- name: openstack/requirements
dest: $REQS_DIR
EOF
fi
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org $ZUUL_PROJECT openstack/requirements
# REQS_DIR is not set for openstack/requirements and there's also
# no need to copy in this case.
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
cp $REQS_DIR/upper-constraints.txt ./
fi
- builder:
name: zuul-git-branch-prep-upper-constraints
builders:
- shell: |
#!/bin/bash -xe
export BRANCH={branch}
CLONEMAP=`mktemp`
REQS_DIR=`mktemp -d`
function cleanup {{
mkdir -p $WORKSPACE
rm -rf $CLONEMAP $REQS_DIR
}}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: $ZUUL_PROJECT
dest: .
EOF
# zuul cloner works poorly if there are 2 names that are the
# same in here.
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
cat >> $CLONEMAP << EOF
- name: openstack/requirements
dest: $REQS_DIR
EOF
fi
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
--branch=$BRANCH \
git://git.openstack.org $ZUUL_PROJECT openstack/requirements
# REQS_DIR is not set for openstack/requirements and there's also
# no need to copy in this case.
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
cp $REQS_DIR/upper-constraints.txt ./
fi
- builder:
name: zuul-git-prep-upper-constraints-cross
builders:
- shell: |
#!/bin/bash -xe
CLONEMAP=`mktemp`
REQS_DIR=`mktemp -d`
function cleanup {{
mkdir -p $WORKSPACE
rm -rf $CLONEMAP $REQS_DIR
}}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: '{project}'
dest: .
EOF
# zuul cloner works poorly if there are 2 names that are the
# same in here.
if [[ "{project}" != "openstack/requirements" ]]; then
cat >> $CLONEMAP << EOF
- name: openstack/requirements
dest: $REQS_DIR
EOF
fi
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org {project} openstack/requirements
# REQS_DIR is not set for openstack/requirements and there's also
# no need to copy in this case.
if [[ "{project}" != "openstack/requirements" ]]; then
cp $REQS_DIR/upper-constraints.txt ./
fi
- builder:
name: zuul-git-prep-upper-constraints-api-ref
builders:
- shell: |
#!/bin/bash -xe
CLONEMAP=`mktemp`
REQS_DIR=`mktemp -d`
function cleanup {{
mkdir -p $WORKSPACE
rm -rf $CLONEMAP $REQS_DIR
}}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: '{project}'
dest: .
EOF
# clone os-api-ref into a subdir of the main project, makes
# it easy to find later for installing.
cat >> $CLONEMAP << EOF
- name: openstack/os-api-ref
dest: os-api-ref
- name: openstack/requirements
dest: $REQS_DIR
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org '{project}' openstack/os-api-ref openstack/requirements
cp $REQS_DIR/upper-constraints.txt ./
- builder:
name: zuul-git-branch-prep
builders:
- shell: |
#!/bin/bash -xe
export BRANCH={branch}
CLONEMAP=`mktemp`
function cleanup {{
mkdir -p $WORKSPACE
rm -f $CLONEMAP
}}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: $ZUUL_PROJECT
dest: .
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
--branch=$BRANCH \
git://git.openstack.org $ZUUL_PROJECT
- builder:
# Use this macro in the release pipeline to get a tagged repo with
# tag checked out and requirements repo with the branch the tag is
# on.
# The macro also works in other pipelines.
name: zuul-release-git-prep-upper-constraints
builders:
- shell: |
#!/bin/bash -xe
function get_branch_tag {
BRANCHES=`git branch -a --contains $ZUUL_REFNAME`
TARGET_BRANCH=`echo "$BRANCHES"|grep '^ remotes/origin/stable'|cut -d/ -f3-|sort|head -n1`
if [ -z $TARGET_BRANCH ] ; then
TARGET_BRANCH=`echo "$BRANCHES"|grep '^ remotes/origin/'|cut -d/ -f3-|sort|grep -v ^HEAD|head -n1`
fi
# Nothing found.
# Note that zuul-cloner will also fallback to master if
# the TARGET_BRANCH does not exist.
if [ -z $TARGET_BRANCH ] ; then
echo "Tag not found, falling back to master"
TARGET_BRANCH=master
fi
}
CLONEMAP=`mktemp`
REQS_DIR=`mktemp -d`
function cleanup {
mkdir -p $WORKSPACE
rm -rf $CLONEMAP $REQS_DIR
}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: $ZUUL_PROJECT
dest: .
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org $ZUUL_PROJECT
if [[ "$ZUUL_PROJECT" != "openstack/requirements" ]]; then
# Figure out branch for requirements checkout
if [[ "$ZUUL_REFNAME" =~ ^refs/tags/ ]] ; then
get_branch_tag
else
# ZUUL_REFNAME is only available in post jobs
TARGET_BRANCH=${ZUUL_REFNAME:-$ZUUL_REF}
fi
cat > $CLONEMAP << EOF
clonemap:
- name: openstack/requirements
dest: $REQS_DIR
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
--branch $TARGET_BRANCH \
git://git.openstack.org openstack/requirements
cp $REQS_DIR/upper-constraints.txt ./
fi
- builder:
name: zuul-clone
builders:
- shell: |
#!/bin/bash
/usr/zuul-env/bin/zuul-cloner --cache-dir /opt/git \
git://git.openstack.org {project}
- builder:
name: zuul-clone-workspace
builders:
- shell: |
#!/bin/bash -xe
CLONEMAP=`mktemp`
function cleanup {{
# In cases where zuul-cloner is aborted during a git
# clone operation, git will remove the git work tree in
# its cleanup. The work tree in these jobs is the
# workspace directory, which means that subsequent
# jenkins post-build actions can not run because the
# workspace has been removed.
# To reduce the likelyhood of this having an impact,
# recreate the workspace directory if needed
mkdir -p $WORKSPACE
rm -f $CLONEMAP
}}
trap cleanup EXIT
cat > $CLONEMAP << EOF
clonemap:
- name: {project}
dest: .
EOF
/usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
git://git.openstack.org {project}
- builder:
name: revoke-sudo
builders:
- shell: |
#!/bin/bash -x
sudo rm -f /etc/sudoers.d/jenkins-sudo
# Prove that general sudo access is actually revoked
! sudo -n true
- builder:
name: coverage
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-cover.sh {env}"
- builder:
name: docs-env
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh {env}"
- builder:
name: docs-tags-only-env
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-docs.sh {env} tags-only"
- builder:
name: docs
builders:
- docs-env:
env: venv
- builder:
name: add-docs-root-marker
builders:
- shell: |
#!/bin/bash -xe
MARKER_TEXT="Project: $ZUUL_PROJECT Ref: $ZUUL_REFNAME Build: $ZUUL_UUID Revision: $ZUUL_NEWREV"
echo $MARKER_TEXT > {docsrootdir}/.root-marker
- builder:
name: gerrit-package
builders:
- shell: "/usr/local/jenkins/slave_scripts/package-gerrit.sh"
- builder:
name: linters
builders:
- run-tox:
envlist: linters
- builder:
name: bashate
builders:
- run-tox:
envlist: bashate
- builder:
name: pep8
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-pep8.sh {env}"
- builder:
name: pylint
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-pylint.sh {env}"
- builder:
name: nodejs-install
builders:
- shell: |
#!/bin/bash -eux
# Prerequisites
sudo apt-get update
sudo apt-get install -y apt-transport-https lsb-release curl
DISTRO=$(lsb_release -c -s)
# Install via nodesource
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
echo "deb https://deb.nodesource.com/node_{version}.x $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
echo "deb-src https://deb.nodesource.com/node_{version}.x $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install -y nodejs
# Output to the log for debugging's sake.
node --version
npm --version
npm config set registry https://registry.npmjs.org/
- builder:
name: npm-run
builders:
- shell: |
#!/bin/bash -eux
export DISPLAY=:99
npm install --verbose
# Try running as a standard lifecycle script, otherwise try custom.
npm_lifecycle_phases="publish install version test stop start restart pack"
if [[ $npm_lifecycle_phases =~ (^| ){command}($| ) ]]; then
npm {command} --verbose
else
npm run {command} --verbose
fi
# If no shrinkwrap exists, generate it.
if [ ! -f ./npm-shrinkwrap.json ]; then
npm prune # https://github.com/npm/npm/issues/6298
npm shrinkwrap
fi
- builder:
name: npm-dsvm-run
builders:
- shell: |
#!/bin/bash -eux
export PYTHONUNBUFFERED=true
export DEVSTACK_GATE_TEMPEST=0
export DEVSTACK_GATE_EXERCISES=0
export DEVSTACK_GATE_INSTALL_TESTONLY=1
export DEVSTACK_GATE_NEUTRON=1
# Xvfb Buffer...
export DISPLAY=:99
npm install
npm_lifecycle_phases="publish install version test stop start restart pack"
# Run any custom devstack configuration required by the project
function pre_test_hook {{
# Try running as a standard lifecycle script, otherwise try custom.
if [[ $npm_lifecycle_phases =~ (^| ){pre_test_command}($| ) ]]; then
npm {pre_test_command} --silent
else
npm run {pre_test_command} --silent
fi
}}
export -f pre_test_hook
function post_test_hook {{
# If you need access to devstack's clouds.yaml file, it is available
# at its canonical location at /etc/openstack/clouds.yaml
# Try running as a standard lifecycle script, otherwise try custom.
if [[ $npm_lifecycle_phases =~ (^| ){post_test_command}($| ) ]]; then
npm {post_test_command} --silent
else
npm run {post_test_command} --silent
fi
}}
export -f post_test_hook
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
./safe-devstack-vm-gate-wrap.sh
- builder:
name: local_conf
builders:
- shell: |
#!/bin/bash -xe
cat << 'EOF' >>"/tmp/dg-local.conf"
{conf}
EOF
- builder:
name: xvfb-start
builders:
- shell: |
DIMENSIONS='1280x1024x24'
/usr/bin/Xvfb :99 -screen 0 ${DIMENSIONS} -ac +extension GLX +render -noreset 2>&1 > /dev/null &
- builder:
name: xvfb-install
builders:
- shell: |
sudo apt-get update
sudo apt-get install -y xvfb
- builder:
name: firefox-install
builders:
- shell: |
sudo apt-get update
sudo apt-get install -y firefox dbus
- builder:
name: chrome-install
builders:
- shell: |
sudo apt-get update
sudo apt-get install -y chromium-browser
- builder:
name: diskimage-builder-install
builders:
- shell: |
sudo apt-get update
sudo apt-get install -y qemu kpartx debootstrap
sudo -H pip install dib-utils
sudo -H pip install diskimage-builder
- builder:
name: proposal-slave-cleanup
builders:
- shell: |
#!/bin/bash
cd /
rm -rf `dirname $WORKSPACE`/*
mkdir $WORKSPACE
cd $WORKSPACE
- builder:
name: puppet-agent-install
builders:
- shell: |
if [ -f /usr/bin/yum ]; then
sudo yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
sudo yum install -y puppet-agent
elif [ -f /usr/bin/apt-get ]; then
wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb -o /tmp/puppet.deb
sudo dpkg -i /tmp/puppet.deb
sudo apt-get install puppet-agent
rm -rf /tmp/puppet.deb
fi
- builder:
name: puppet-prepare-node
builders:
- shell: |
if [ -f /usr/bin/yum ]; then
sudo yum -y remove facter puppet hiera rdo-release "centos-release-openstack-*" "centos-release-ceph-*"
sudo yum -y install libxml2-devel libxslt-devel ruby-devel zlib-devel
sudo yum -y groupinstall "Development Tools"
# Uninstall python-requests from pip, since we install it in
# system-config/install_puppet.sh
sudo pip uninstall requests -y || true
elif [ -f /usr/bin/apt-get ]; then
sudo apt-get remove -y --purge facter puppet puppet-common hiera
sudo apt-get update
sudo apt-get install -y libxml2-dev libxslt-dev ruby-dev zlib1g-dev
# /etc/default/puppet is not purged when removing Puppet
# but need to be dropped if we want to re-install puppet-agent on Xenial
sudo rm -rf /etc/default/puppet
fi
- builder:
name: puppet-lint
builders:
- shell: |
if [ -f Modulefile -o -f metadata.json ]; then
if [ -f Modulefile ]; then
MODULE=$(awk '/^name/ {print $NF}' Modulefile |tr -d \"\')
elif [ -f metadata.json ]; then
MODULE=$(python -c 'import json;print json.load(open("metadata.json"))["name"]')
fi
if [ -z "$MODULE" ]; then
echo "Module name not defined in Modulefile or metadata.json"
else
mkdir -p "$MODULE"
rsync -a --exclude="$MODULE" --exclude ".*" . "$MODULE"
cd "$MODULE"
fi
fi
mkdir .bundled_gems
export GEM_HOME=`pwd`/.bundled_gems
if [ -f Gemfile ]; then
gem install bundler --no-rdoc --no-ri --verbose
$GEM_HOME/bin/bundle install --without system_tests
$GEM_HOME/bin/bundle exec rake lint 2>&1
else
gem install rake -n ./.bundled_gems/
gem install puppet-lint
gem install puppetlabs_spec_helper
./.bundled_gems/rake lint 2>&1
fi
- builder:
name: pin-pip
builders:
- shell: sudo pip install "pip<8" "virtualenv<14"
- builder:
name: ansible-prep
builders:
- shell: |
#!/bin/bash -xe
sudo -H pip install -U ansible
- builder:
name: ansible-syntax
builders:
- shell: |
#!/bin/bash -xe
cd tests
ansible-playbook --syntax-check -i inventory test.yml -e rolename=$(basename $(dirname $(pwd)))
- builder:
name: ansible-lint-prep
builders:
- shell: |
#!/bin/bash -xe
sudo -H pip install ansible-lint
- builder:
name: ansible-lint
builders:
- shell: |
#!/bin/bash -xe
ansible-lint **/*.yml
- builder:
name: chef-bootstrap
builders:
- shell: |
#!/bin/bash -x
./bootstrap.sh allinone
- builder:
name: chef-bootstrap-multinode
builders:
- shell: |
#!/bin/bash -x
./bootstrap.sh multinode
- builder:
name: chef-rake-test
builders:
- shell: |
#!/bin/bash -x
chef exec rake
- builder:
name: chef-rake-integration
builders:
- shell: |
#!/bin/bash -x
chef exec rake integration
- builder:
name: run-tests
builders:
- shell: "./run-tests.sh"
- builder:
name: selenium
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-selenium.sh"
- builder:
name: js-build
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-jsbuild.sh {command}"
- builder:
name: python27
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py27"
- builder:
name: python34
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py34"
- builder:
name: python35
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh py35"
- builder:
name: pypy
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh pypy"
- builder:
name: run-tox
builders:
- shell: "/usr/local/jenkins/slave_scripts/run-tox.sh {envlist}"
- builder:
name: tox-with-tmpdir-passed-in
builders:
- shell: |
#!/bin/bash -x
export TMPDIR={new_tmpdir_loc}
/usr/local/jenkins/slave_scripts/run-tox.sh {envlist}
- builder:
name: assert-no-extra-files
builders:
- shell: |
#!/bin/bash
OUT=`git ls-files --other --exclude-standard --directory`
if [ -z "$OUT" ]; then
echo "No extra files created during test."
exit 0
else
echo "The following un-ignored files were created during the test:"
echo "$OUT"
exit 0 # TODO: change to 1 to fail tests.
fi
- builder:
name: tarball
builders:
- shell: |
#!/bin/bash -xe
/usr/local/jenkins/slave_scripts/run-tarball.sh {env}
/usr/local/jenkins/slave_scripts/run-wheel.sh {env}
- builder:
name: devstack-checkout
builders:
- shell: |
#!/bin/bash -xe
cat > clonemap.yaml << EOF
clonemap:
- name: openstack-infra/devstack-gate
dest: devstack-gate
EOF
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
git://git.openstack.org \
openstack-infra/devstack-gate
- builder:
name: link-logs
builders:
- shell: |
#!/bin/sh
echo "Detailed logs: http://logs.openstack.org/$LOG_PATH/"
- builder:
name: net-info
builders:
- shell: |
#!/bin/sh
export PATH=$PATH:/sbin
if [ -f /etc/dib-builddate.txt ]; then
echo "Image build date"
echo "================"
cat /etc/dib-builddate.txt
fi
echo "Host & kernel"
echo "============="
uname -a
echo "Network configuration data..."
[ -f /mnt/config/openstack/latest/network_info.json ] && python -mjson.tool /mnt/config/openstack/latest/network_info.json
[ -f /mnt/config/openstack/latest/network_data.json ] && python -mjson.tool /mnt/config/openstack/latest/network_data.json
[ -f /mnt/config/openstack/latest/vendor_data.json ] && python -mjson.tool /mnt/config/openstack/latest/vendor_data.json
echo "Network interface addresses..."
echo "=============================="
ip address show
echo "Network routing tables..."
echo "========================="
ip route show
ip -6 route show
echo "Network neighbors..."
echo "===================="
ip neighbor show
echo "Route to Git mirror..."
echo "======================"
traceroute6 -n git.openstack.org \
|| traceroute -n git.openstack.org \
|| true
- builder:
name: install-distro-packages
builders:
- shell: /usr/local/jenkins/slave_scripts/install-distro-packages.sh
- builder:
name: install-distro-packages-fallback-test
builders:
- shell: |
#!/bin/bash -xe
# use the fallback list instead of existing bindep.txt
export PACKAGES=/usr/local/jenkins/common_data/bindep-fallback.txt
if [ "$ZUUL_PROJECT" == "openstack-infra/bindep" ] ; then
# if testing a change to bindep, use its entrypoint
virtualenv bindep-env
bindep-env/bin/pip install -U .
export BINDEP=bindep-env/bin/bindep
elif [ "$ZUUL_PROJECT" == "openstack-infra/project-config" ] ; then
# if testing a change to project-config, use its fallback list
export PACKAGES=jenkins/data/bindep-fallback.txt
fi
/usr/local/jenkins/slave_scripts/install-distro-packages.sh
- builder:
name: static-publish-prep
# We want to publish to the docroot but the scp publisher cannot remove
# paths, so use a shell builder to move the content in the right place and
# publish from there.
builders:
- shell: |
#!/bin/bash -xe
rm -rf ,content
mv {source} ,content
rm -rf .[^.]* [^,]*
# Disable errexit here because there might not be any dotfiles.
set +e
mv ,content/.[^.]* ./
set -e
mv ,content/* ./
rm -r ,content
- builder:
name: install-buck
builders:
- shell: |
#!/bin/bash -xe
if [[ ! -d "buck" ]]
then
git clone https://gerrit.googlesource.com/buck
cd buck
ant
fi
- builder:
name: print-node-uuid
builders:
- shell: |
#!/bin/sh
[ -f /etc/nodepool/uuid ] && echo "Node UUID: $(cat /etc/nodepool/uuid)"
- builder:
name: bundle-install
builders:
- shell: |
mkdir .bundled_gems
export GEM_HOME=`pwd`/.bundled_gems
bundle install
- builder:
name: exec-rake
builders:
- shell: |
mkdir -p .bundled_gems
export GEM_HOME=`pwd`/.bundled_gems
bundle exec rake
# This builder runs tools/test-setup.sh if its exists. This allows
# projects to setup unit tests in a specific way.
- builder:
name: extra-test-setup
builders:
- shell: |
if [ -x tools/test-setup.sh ] ; then
tools/test-setup.sh
fi
- builder:
name: allow-local-ssh-root
builders:
- shell: |
#!/bin/bash
echo "" | sudo tee -a /etc/ssh/sshd_config
echo "Match address 127.0.0.1" | sudo tee -a /etc/ssh/sshd_config
echo " PermitRootLogin without-password" | sudo tee -a /etc/ssh/sshd_config
echo "" | sudo tee -a /etc/ssh/sshd_config
echo "Match address ::1" | sudo tee -a /etc/ssh/sshd_config
echo " PermitRootLogin without-password" | sudo tee -a /etc/ssh/sshd_config
mkdir -p .ssh
ssh-keygen -f ~/.ssh/id_rsa -b 2048 -P ""
sudo mkdir -p /root/.ssh
cat ~/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
if [ -f /usr/bin/yum ]; then
sudo systemctl reload sshd
elif [ -f /usr/bin/apt-get ]; then
sudo service ssh restart
fi
- builder:
name: mount-xfs-tmp-space
builders:
- shell: |
#!/bin/bash -xe
# create a large-ish file that we'll mount as a loopback
truncate -s 1GB {xfs_file}
# format the new file as xfs
/sbin/mkfs.xfs {xfs_file}
# loopback mount the file
mkdir -p {xfs_mount_point}
sudo mount -o loop,noatime,nodiratime {xfs_file} {xfs_mount_point}
sudo chmod 777 {xfs_mount_point}
# ======================================================================
- wrapper:
name: build-timeout
wrappers:
- timeout:
timeout: '{timeout}'
timeout-var: 'BUILD_TIMEOUT'
fail: true
# ======================================================================
- publisher:
name: tarball
publishers:
- scp:
site: tarballs.openstack.org
files:
- target: 'tarballs/{project}/'
source: 'dist/*.tar.gz'
- publisher:
name: deb-pkgs
publishers:
- scp:
site: 'tarballs.openstack.org'
files:
- target: 'tarballs/packaging-deb/{project}/'
source: 'uploads/**'
keep-hierarchy: true
- publisher:
name: wheel
publishers:
- scp:
site: tarballs.openstack.org
files:
- target: 'tarballs/{project}/'
source: 'dist/*.whl'
- publisher:
name: war
publishers:
- scp:
site: tarballs.openstack.org
files:
- target: '{target}'
source: '{warfile}'
- publisher:
name: console-log
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
copy-console: true
copy-after-failure: true
- publisher:
name: devstack-logs
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'logs/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: coverage-log
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'cover/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: coverage-log-ruby
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'coverage/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: test-results
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: '**/*nose_results.html'
keep-hierarchy: false
copy-after-failure: true
- target: 'logs/$LOG_PATH'
source: '**/*testr_results.html.gz'
keep-hierarchy: false
copy-after-failure: true
- target: 'logs/$LOG_PATH'
source: '.testrepository/tmp*'
keep-hierarchy: false
copy-after-failure: true
- target: 'logs/$LOG_PATH'
source: '**/*testrepository.subunit.gz'
keep-hierarchy: false
copy-after-failure: true
- target: 'logs/$LOG_PATH/tox'
source: '.tox/*/log/*'
keep-hierarchy: false
copy-after-failure: true
- publisher:
name: upload-sphinx-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH'
source: 'doc/build/html/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-api-guide-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH'
source: 'api-guide/build/html/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-api-ref-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH'
source: 'api-ref/build/html/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-placement-api-ref-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH'
source: 'placement-api-ref/build/html/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-docs-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH/'
source: 'publish-docs/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-releasenotes-draft
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'docs-draft/$LOG_PATH'
source: 'releasenotes/build/html/**'
keep-hierarchy: true
copy-after-failure: true
- publisher:
name: upload-to-docs-site
publishers:
- afs:
site: afs-docs
source: 'publish-docs/**'
target: '/'
remove-prefix: 'publish-docs/'
- publisher:
name: upload-doc-build-results
publishers:
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'build-*.log.gz'
keep-hierarchy: false
copy-after-failure: true