<hudson.triggers.TimerTrigger>
<spec>H H * * 6</spec>
</hudson.triggers.TimerTrigger>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
+ <spec/>
+ <gerritProjects>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
+ <compareType>ANT</compareType>
+ <pattern>releng/ciman</pattern>
+ <branches>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
+ <compareType>ANT</compareType>
+ <pattern>**/master</pattern>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
+ </branches>
+ <disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
+ </gerritProjects>
+ <skipVote>
+ <onSuccessful>true</onSuccessful>
+ <onFailed>true</onFailed>
+ <onUnstable>true</onUnstable>
+ <onNotBuilt>true</onNotBuilt>
+ </skipVote>
+ <silentMode>false</silentMode>
+ <silentStartMode>false</silentStartMode>
+ <escapeQuotes>true</escapeQuotes>
+ <noNameAndEmailParameters>false</noNameAndEmailParameters>
+ <readableMessage>false</readableMessage>
+ <dependencyJobsNames/>
+ <notificationLevel/>
+ <dynamicTriggerConfiguration>False</dynamicTriggerConfiguration>
+ <triggerConfigURL/>
+ <allowTriggeringUnreviewedPatches>false</allowTriggeringUnreviewedPatches>
+ <triggerOnEvents>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
+ <commentAddedCommentContains>run-clm$</commentAddedCommentContains>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
+ </triggerOnEvents>
+ <buildStartMessage/>
+ <buildFailureMessage/>
+ <buildSuccessfulMessage/>
+ <buildUnstableMessage/>
+ <buildNotBuiltMessage/>
+ <buildUnsuccessfulFilepath/>
+ <customUrl/>
+ <serverName>test-server</serverName>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
</triggers>
<builders>
<hudson.tasks.Shell>
# pipdeptree
</command>
</hudson.tasks.Shell>
+ <EnvInjectBuilder>
+ <info>
+ <propertiesContent>PYTHON_VERSION=python3</propertiesContent>
+ </info>
+ </EnvInjectBuilder>
<hudson.tasks.Shell>
<command>#!/bin/bash
# SPDX-License-Identifier: EPL-1.0
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
-virtualenv --quiet "/tmp/v/tox"
+virtualenv --quiet -p "$PYTHON_VERSION" "/tmp/v/tox"
# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
source "/tmp/v/tox/bin/activate"
pip install --quiet --upgrade pip
pip install --quiet --upgrade pipdeptree
-pip install --quiet --upgrade detox tox argparse
+pip install --quiet --upgrade argparse detox tox tox-pyenv
echo "----> Pip Dependency Tree"
pipdeptree
-
-#!/bin/bash
+</command>
+ </hudson.tasks.Shell>
+ <hudson.tasks.Shell>
+ <command>#!/bin/bash
# SPDX-License-Identifier: EPL-1.0
##############################################################################
# Copyright (c) 2017 The Linux Foundation and others.
##############################################################################
echo "---> tox-run.sh"
+# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
+source "/tmp/v/tox/bin/activate"
+
# Ensure we fail the job if any steps fail.
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox"
mkdir -p "$ARCHIVE_TOX_DIR"
-
cd "$WORKSPACE/$TOX_DIR"
+if [ -d "/opt/pyenv" ]; then
+ echo "---> Setting up pyenv"
+ export PYENV_ROOT="/opt/pyenv"
+ export PATH="$PYENV_ROOT/bin:$PATH"
+fi
+
+set +e # Allow detox to fail so that we can collect the logs in the next step
if [ ! -z "$TOX_ENVS" ]; then
detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
else
detox | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
fi
# Disable SC2116 as we want to echo a space separated list of TOX_ENVS
# shellcheck disable=SC2116
-for i in $(echo "${TOX_ENVS//,/ }"); do
- cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i"
+for i in .tox/*/log; do
+ tox_env=$(echo $i | awk -F'/' '{print $2}')
+ cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"
done
+set -e # Logs collected so re-enable
echo "Completed tox runs."
+
+test "$detox_status" -eq 0 || exit "$detox_status"
</command>
</hudson.tasks.Shell>
</builders>
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
-virtualenv --quiet "/tmp/v/tox"
+virtualenv --quiet -p "$PYTHON_VERSION" "/tmp/v/tox"
# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
source "/tmp/v/tox/bin/activate"
pip install --quiet --upgrade pip
pip install --quiet --upgrade pipdeptree
-pip install --quiet --upgrade detox tox argparse
+pip install --quiet --upgrade argparse detox tox tox-pyenv
echo "----> Pip Dependency Tree"
pipdeptree
</extensions>
</scm>
<triggers class="vector">
- <hudson.triggers.TimerTrigger>
- <spec>H H * * 6</spec>
- </hudson.triggers.TimerTrigger>
+ <org.jenkinsci.plugins.ghprb.GhprbTrigger>
+ <spec/>
+ <adminlist/>
+ <allowMembersOfWhitelistedOrgsAsAdmin>false</allowMembersOfWhitelistedOrgsAsAdmin>
+ <whitelist/>
+ <orgslist/>
+ <cron/>
+ <triggerPhrase>^run-clm$</triggerPhrase>
+ <onlyTriggerPhrase>false</onlyTriggerPhrase>
+ <useGitHubHooks>true</useGitHubHooks>
+ <permitAll>true</permitAll>
+ <autoCloseFailedPullRequests>false</autoCloseFailedPullRequests>
+ <extensions>
+ <org.jenkinsci.plugins.ghprb.extensions.status.GhprbSimpleStatus>
+ <commitStatusContext>CLM</commitStatusContext>
+ </org.jenkinsci.plugins.ghprb.extensions.status.GhprbSimpleStatus>
+ </extensions>
+ </org.jenkinsci.plugins.ghprb.GhprbTrigger>
</triggers>
<builders>
<hudson.tasks.Shell>
# pipdeptree
</command>
</hudson.tasks.Shell>
+ <EnvInjectBuilder>
+ <info>
+ <propertiesContent>PYTHON_VERSION=python3</propertiesContent>
+ </info>
+ </EnvInjectBuilder>
<hudson.tasks.Shell>
<command>#!/bin/bash
# SPDX-License-Identifier: EPL-1.0
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
-virtualenv --quiet "/tmp/v/tox"
+virtualenv --quiet -p "$PYTHON_VERSION" "/tmp/v/tox"
# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
source "/tmp/v/tox/bin/activate"
pip install --quiet --upgrade pip
pip install --quiet --upgrade pipdeptree
-pip install --quiet --upgrade detox tox argparse
+pip install --quiet --upgrade argparse detox tox tox-pyenv
echo "----> Pip Dependency Tree"
pipdeptree
-
-#!/bin/bash
+</command>
+ </hudson.tasks.Shell>
+ <hudson.tasks.Shell>
+ <command>#!/bin/bash
# SPDX-License-Identifier: EPL-1.0
##############################################################################
# Copyright (c) 2017 The Linux Foundation and others.
##############################################################################
echo "---> tox-run.sh"
+# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
+source "/tmp/v/tox/bin/activate"
+
# Ensure we fail the job if any steps fail.
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox"
mkdir -p "$ARCHIVE_TOX_DIR"
-
cd "$WORKSPACE/$TOX_DIR"
+if [ -d "/opt/pyenv" ]; then
+ echo "---> Setting up pyenv"
+ export PYENV_ROOT="/opt/pyenv"
+ export PATH="$PYENV_ROOT/bin:$PATH"
+fi
+
+set +e # Allow detox to fail so that we can collect the logs in the next step
if [ ! -z "$TOX_ENVS" ]; then
detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
else
detox | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
fi
# Disable SC2116 as we want to echo a space separated list of TOX_ENVS
# shellcheck disable=SC2116
-for i in $(echo "${TOX_ENVS//,/ }"); do
- cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i"
+for i in .tox/*/log; do
+ tox_env=$(echo $i | awk -F'/' '{print $2}')
+ cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"
done
+set -e # Logs collected so re-enable
echo "Completed tox runs."
+
+test "$detox_status" -eq 0 || exit "$detox_status"
</command>
</hudson.tasks.Shell>
</builders>
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
-virtualenv --quiet "/tmp/v/tox"
+virtualenv --quiet -p "$PYTHON_VERSION" "/tmp/v/tox"
# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
source "/tmp/v/tox/bin/activate"
pip install --quiet --upgrade pip
pip install --quiet --upgrade pipdeptree
-pip install --quiet --upgrade detox tox argparse
+pip install --quiet --upgrade argparse detox tox tox-pyenv
echo "----> Pip Dependency Tree"
pipdeptree
- github-tox-verify
+
+Macros
+======
+
+lf-tox-install
+--------------
+
+Runs a shell script that installs tox in a Python virtualenv.
+
+:Required Parameters:
+
+ :python-version: Base Python version to use in the virtualenv. For example
+ python2 or python3.
+
+
Job Templates
=============
:build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
:build-timeout: Timeout in seconds before aborting build. (default: 10)
:git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+ :python-version: Version of Python to configure as a base in virtualenv.
+ (default: python3)
:stream: Keyword representing a release code-name.
Often the same as the branch. (default: master)
:submodule-recursive: Whether to checkout submodules recursively.
stream: master
submodule-recursive: true
+ gerrit_clm_triggers:
+ - comment-added-contains-event:
+ comment-contains-value: run-clm$
+
#####################
# Job Configuration #
#####################
triggers:
# Build weekly on Saturdays
- timed: 'H H * * 6'
+ - gerrit:
+ server-name: '{gerrit-server-name}'
+ trigger-on: '{obj:gerrit_clm_triggers}'
+ projects:
+ - project-compare-type: ANT
+ project-pattern: '{project}'
+ branches:
+ - branch-compare-type: ANT
+ branch-pattern: '**/{branch}'
+ skip-vote:
+ successful: true
+ failed: true
+ unstable: true
+ notbuilt: true
builders:
- lf-maven-install:
choosing-strategy: default
jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ triggers:
+ - lf-infra-github-pr-trigger:
+ trigger-phrase: '^run-clm$'
+ only-trigger-phrase: false
+ status-context: 'CLM'
+ permit-all: true
+ github-hooks: true
+ github-org: ''
+ github_pr_whitelist:
+ - ''
+ github_pr_admin_list:
+ - ''
+
#########################
# Maven Javadoc Publish #
#########################
jobs:
- github-tox-verify
+##########
+# Macros #
+##########
+
+- builder:
+ name: lf-infra-tox-install
+ builders:
+ - inject:
+ properties-content: 'PYTHON_VERSION={python-version}'
+ - shell: !include-raw-escape: ../shell/tox-install.sh
+
##############
# Tox Verify #
##############
build-days-to-keep: 7
build-timeout: 10
git-url: '$GIT_URL/$GERRIT_PROJECT'
+ python-version: python3
stream: master
submodule-recursive: true
tox-dir: ''
# Without running the install first the run in the publisher will fail
# due to missing lftools because it gets installed into a tox venv.
- ../shell/lftools-install.sh
- - shell: !include-raw-escape:
- - ../shell/tox-install.sh
- - ../shell/tox-run.sh
+ - lf-infra-tox-install:
+ python-version: '{python-version}'
+ - shell: !include-raw-escape: ../shell/tox-run.sh
publishers:
- lf-infra-publish
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
-virtualenv --quiet "/tmp/v/tox"
+virtualenv --quiet -p "$PYTHON_VERSION" "/tmp/v/tox"
# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
source "/tmp/v/tox/bin/activate"
pip install --quiet --upgrade pip
pip install --quiet --upgrade pipdeptree
-pip install --quiet --upgrade detox tox argparse
+pip install --quiet --upgrade argparse detox tox tox-pyenv
echo "----> Pip Dependency Tree"
pipdeptree
##############################################################################
echo "---> tox-run.sh"
+# shellcheck source=/tmp/v/tox/bin/activate disable=SC1091
+source "/tmp/v/tox/bin/activate"
+
# Ensure we fail the job if any steps fail.
# DO NOT set -u as virtualenv's activate script has unbound variables
set -e -o pipefail
ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox"
mkdir -p "$ARCHIVE_TOX_DIR"
-
cd "$WORKSPACE/$TOX_DIR"
+if [ -d "/opt/pyenv" ]; then
+ echo "---> Setting up pyenv"
+ export PYENV_ROOT="/opt/pyenv"
+ export PATH="$PYENV_ROOT/bin:$PATH"
+fi
+
+set +e # Allow detox to fail so that we can collect the logs in the next step
if [ ! -z "$TOX_ENVS" ]; then
detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
else
detox | tee -a "$ARCHIVE_TOX_DIR/detox.log"
+ detox_status="${PIPESTATUS[0]}"
fi
# Disable SC2116 as we want to echo a space separated list of TOX_ENVS
# shellcheck disable=SC2116
-for i in $(echo "${TOX_ENVS//,/ }"); do
- cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i"
+for i in .tox/*/log; do
+ tox_env=$(echo $i | awk -F'/' '{print $2}')
+ cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env"
done
+set -e # Logs collected so re-enable
echo "Completed tox runs."
+
+test "$detox_status" -eq 0 || exit "$detox_status"