Note that Gerrit will override this parameter automatically if a
job is triggered by Gerrit.
</description>
- <defaultValue/>
+ <defaultValue>refs/heads/master</defaultValue>
+ </hudson.model.StringParameterDefinition>
+ <hudson.model.StringParameterDefinition>
+ <name>LFTOOLS_VERSION</name>
+ <description>Version of lftools to install. Can be a specific version like
+'0.6.0' or a PEP-440 definition.
+https://www.python.org/dev/peps/pep-0440/
+For example '<1.0.0' or '>=1.0.0,<2.0.0'.
+</description>
+ <defaultValue><1.0.0</defaultValue>
</hudson.model.StringParameterDefinition>
<hudson.model.StringParameterDefinition>
<name>JJB_VERSION</name>
<compareType>ANT</compareType>
<pattern>**/*.yaml</pattern>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
+ <compareType>ANT</compareType>
+ <pattern>**/global-jjb</pattern>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
</filePaths>
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
##############################################################################
echo "---> lftools-install.sh"
+# Script to install lftools via a version passed in via lf-infra-parameters
+#
+# Required parameters:
+#
+# LFTOOLS_VERSION: Passed in via lf-infra-parameters configuration. Can be
+# set to a strict version number like '1.2.3' or using
+# PEP-440 definitions.
+#
+# Examples:
+# <1.0.0
+# >=1.0.0,<2.0.0
+#
+# By default a released version of lftools should always be used.
+# The purpose of the 2 variables below is so that lftools devs can test
+# unreleased versions of lftools. There are 2 methods to install a dev version
+# of lftools:
+#
+# 1) gerrit patch: Used to test a patch that has not yet been merged.
+# To do this set something like this:
+# LFTOOLS_MODE=gerrit
+# LFTOOLS_REFSPEC=refs/changes/96/5296/7
+#
+# 2) git branch: Used to install an lftools version from a specific branch.
+# To use this set the variables as follows:
+# LFTOOLS_MODE=git
+# LFTOOLS_REFSPEC=master
+#
+# 3) release : The intended use case and default setting.
+# Set LFTOOLS_MODE=release, in this case LFTOOLS_REFSPEC is unused.
+
+LFTOOLS_MODE=release # release | git | gerrit
+LFTOOLS_REFSPEC=master
+
# 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
# shellcheck source=/tmp/v/lftools/bin/activate disable=SC1091
source "/tmp/v/lftools/bin/activate"
pip install --quiet --upgrade pip
-pip install --quiet --upgrade "lftools<1.0.0"
+
+case $LFTOOLS_MODE in
+ gerrit)
+ git clone https://gerrit.linuxfoundation.org/infra/releng/lftools.git /tmp/lftools
+ pushd /tmp/lftools
+ git fetch origin "$LFTOOLS_REFSPEC"
+ git checkout FETCH_HEAD
+ pip install --quiet --upgrade -r requirements.txt
+ pip install --quiet --upgrade -e .
+ popd
+ ;;
+
+ git)
+ pip install --quiet --upgrade git+https://gerrit.linuxfoundation.org/infra/releng/lftools.git@"$BRANCH"
+ ;;
+
+ release)
+ if [[ $LFTOOLS_VERSION =~ ^[0-9] ]]; then
+ LFTOOLS_VERSION="==$LFTOOLS_VERSION"
+ fi
+
+ pip install --quiet --upgrade "lftools${LFTOOLS_VERSION}"
+ ;;
+esac
+
+lftools --version
# pipdeptree prints out a lot of information because lftools pulls in many
# dependencies. Let's only print it if we want to debug.
Note that Gerrit will override this parameter automatically if a
job is triggered by Gerrit.
</description>
- <defaultValue/>
+ <defaultValue>refs/heads/master</defaultValue>
+ </hudson.model.StringParameterDefinition>
+ <hudson.model.StringParameterDefinition>
+ <name>LFTOOLS_VERSION</name>
+ <description>Version of lftools to install. Can be a specific version like
+'0.6.0' or a PEP-440 definition.
+https://www.python.org/dev/peps/pep-0440/
+For example '<1.0.0' or '>=1.0.0,<2.0.0'.
+</description>
+ <defaultValue><1.0.0</defaultValue>
</hudson.model.StringParameterDefinition>
<hudson.model.StringParameterDefinition>
<name>JJB_VERSION</name>
<compareType>ANT</compareType>
<pattern>**/*.yaml</pattern>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
+ <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
+ <compareType>ANT</compareType>
+ <pattern>**/global-jjb</pattern>
+ </com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
</filePaths>
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
##############################################################################
echo "---> lftools-install.sh"
+# Script to install lftools via a version passed in via lf-infra-parameters
+#
+# Required parameters:
+#
+# LFTOOLS_VERSION: Passed in via lf-infra-parameters configuration. Can be
+# set to a strict version number like '1.2.3' or using
+# PEP-440 definitions.
+#
+# Examples:
+# <1.0.0
+# >=1.0.0,<2.0.0
+#
+# By default a released version of lftools should always be used.
+# The purpose of the 2 variables below is so that lftools devs can test
+# unreleased versions of lftools. There are 2 methods to install a dev version
+# of lftools:
+#
+# 1) gerrit patch: Used to test a patch that has not yet been merged.
+# To do this set something like this:
+# LFTOOLS_MODE=gerrit
+# LFTOOLS_REFSPEC=refs/changes/96/5296/7
+#
+# 2) git branch: Used to install an lftools version from a specific branch.
+# To use this set the variables as follows:
+# LFTOOLS_MODE=git
+# LFTOOLS_REFSPEC=master
+#
+# 3) release : The intended use case and default setting.
+# Set LFTOOLS_MODE=release, in this case LFTOOLS_REFSPEC is unused.
+
+LFTOOLS_MODE=release # release | git | gerrit
+LFTOOLS_REFSPEC=master
+
# 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
# shellcheck source=/tmp/v/lftools/bin/activate disable=SC1091
source "/tmp/v/lftools/bin/activate"
pip install --quiet --upgrade pip
-pip install --quiet --upgrade "lftools<1.0.0"
+
+case $LFTOOLS_MODE in
+ gerrit)
+ git clone https://gerrit.linuxfoundation.org/infra/releng/lftools.git /tmp/lftools
+ pushd /tmp/lftools
+ git fetch origin "$LFTOOLS_REFSPEC"
+ git checkout FETCH_HEAD
+ pip install --quiet --upgrade -r requirements.txt
+ pip install --quiet --upgrade -e .
+ popd
+ ;;
+
+ git)
+ pip install --quiet --upgrade git+https://gerrit.linuxfoundation.org/infra/releng/lftools.git@"$BRANCH"
+ ;;
+
+ release)
+ if [[ $LFTOOLS_VERSION =~ ^[0-9] ]]; then
+ LFTOOLS_VERSION="==$LFTOOLS_VERSION"
+ fi
+
+ pip install --quiet --upgrade "lftools${LFTOOLS_VERSION}"
+ ;;
+esac
+
+lftools --version
# pipdeptree prints out a lot of information because lftools pulls in many
# dependencies. Let's only print it if we want to debug.
- lf_packer: &lf_packer_common
name: lf-packer-common
- # Adds wrappers and parameters sections common to packer jobs.
+ # Provide configuration common in packer jobs.
######################
# Default parameters #
######################
+ branch: master
build-timeout: 45
+ stream: master
+ submodule-recursive: true
packer-cloud-settings: packer-cloud-env
- wrappers:
- - lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ #####################
+ # Job Configuration #
+ #####################
+
+ project-type: freestyle
+ node: '{build-node}'
+
+ properties:
+ - lf-infra-properties:
+ project: '{project}'
+ build-days-to-keep: 7
parameters:
- lf-infra-parameters:
project: '{project}'
stream: '{stream}'
branch: '{branch}'
+ lftools-version: '{lftools-version}'
- lf-infra-packer-parameters:
packer-version: '{packer-version}'
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ publishers:
+ - lf-infra-publish
+
- parameter:
name: lf-infra-jjb-parameters
parameters:
pattern: '**/*.sh'
- compare-type: ANT
pattern: '**/*.yaml'
+ - compare-type: ANT
+ pattern: '**/global-jjb'
#####################
# Job Configuration #
project: '{project}'
stream: '{stream}'
branch: '{branch}'
+ lftools-version: '{lftools-version}'
- lf-infra-jjb-parameters:
jjb-version: '{jjb-version}'
# Packer Merge #
################
-- lf_packer_merge_builders: &lf_packer_merge_builders
- name: lf-packer-merge-builders
+- lf_packer_merge: &lf_packer_merge
+ name: lf-packer-merge
- # Adds builders section common to merge packer jobs.
- # {packer-cloud-settings} is passed from the project, defines the managed
- # file-id name created in Jenkins
- # (default: packer-cloud-env)
- # {packer-version}: is global defined in job group level, the version number
- # can be updated to install the latest version of packer.
- # {platforms}: defines the packer platform file, passed from the project.
- # {template}: defines the packer template file, passed from the project.
+ # Packer Merge job runs `packer build` to build system images in the cloud.
+ #
+ # Required parameters:
+ #
+ # :build-node: The node to run build on.
+ # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
+ # be configured in defaults.yaml)
+ # :mvn-settings: The name of settings file containing credentials for
+ # the project.
+ # :platforms: Platform or distribution to build. Typically json file
+ # found in the packer/vars directory. (Example: centos)
+ # :template: System template to build. Typically shell script found in
+ # the packer/provision directory. (Example: java-builder)
+ #
+ # Optional parameters:
+ #
+ # :branch: Git branch to fetch for the build. (default: master)
+ # :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)
+ # :packer-cloud-settings: Name of settings file containing credentials
+ # for the cloud that packer will build on. (default: packer-cloud-env)
+ # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
+ # :stream: Keyword that can be used to represent a release code-name.
+ # Often the same as the branch. (default: master)
+ # :submodule-recursive: Whether to checkout submodules recursively.
+ # (default: true)
+ #
+ # :gerrit_verify_triggers: Override Gerrit Triggers.
+ # :gerrit_trigger_file_paths: Override file paths which can be used to
+ # filter which file modifications will trigger a build.
+ # (default defined by lf_jjb_common)
+
+ ######################
+ # Default parameters #
+ ######################
+
+ gerrit_merge_triggers:
+ - change-merged-event
+ - comment-added-contains-event:
+ comment-contains-value: remerge$
+
+ #####################
+ # Job Configuration #
+ #####################
builders:
- lf-infra-packer-validate:
- job-template:
name: '{project-name}-packer-merge-{platforms}-{templates}'
id: gerrit-packer-merge
- concurrent: true
- <<: *lf_jjb_common
- # yamllint disable-line rule:key-duplicates
<<: *lf_packer_common
# yamllint disable-line rule:key-duplicates
- <<: *lf_packer_merge_builders
-
- ######################
- # Default parameters #
- ######################
+ <<: *lf_packer_merge
git-url: '$GIT_URL/$GERRIT_PROJECT'
- gerrit_merge_triggers:
- - change-merged-event
- - comment-added-contains-event:
- comment-contains-value: remerge$
-
- #####################
- # Job Configuration #
- #####################
-
scm:
- lf-infra-gerrit-scm:
git-url: '{git-url}'
- job-template:
name: '{project-name}-packer-merge-{platforms}-{templates}'
id: github-packer-merge
- concurrent: true
- <<: *lf_jjb_common
- # yamllint disable-line rule:key-duplicates
<<: *lf_packer_common
# yamllint disable-line rule:key-duplicates
- <<: *lf_packer_merge_builders
-
- #####################
- # Job Configuration #
- #####################
+ <<: *lf_packer_merge
properties:
- github:
# Packer Verify #
#################
-- lf_packer_verify_builders: &lf_packer_verify_builders
- name: lf-packer-verify-builders
-
- # Adds builders section common to verify packer jobs.
- # {packer-cloud-settings} is passed from the project, defines the managed
- # file-id name created in Jenkins
- # (default: packer-cloud-env)
- # {packer-version}: is global defined in job group level, the version number
- # can be updated to install the latest version of packer.
+- lf_packer_verify: &lf_packer_verify
+ name: lf-packer-verify
- builders:
- - lf-infra-packer-validate:
- packer-cloud-settings: '{packer-cloud-settings}'
- packer-version: '{packer-version}'
-
-- job-template:
- name: '{project-name}-packer-verify'
- id: gerrit-packer-verify
- concurrent: true
- <<: *lf_jjb_common
- # yamllint disable-line rule:key-duplicates
- <<: *lf_packer_common
- # yamllint disable-line rule:key-duplicates
- <<: *lf_packer_verify_builders
+ # Packer Verify job runs `packer validate` to verify packer configuration.
+ #
+ # Required parameters:
+ #
+ # :build-node: The node to run build on.
+ # :jenkins-ssh-credential: Credential to use for SSH. (Generally should
+ # be configured in defaults.yaml)
+ # :mvn-settings: The name of settings file containing credentials for
+ # the project.
+ #
+ # Optional parameters:
+ #
+ # :branch: Git branch to fetch for the build. (default: master)
+ # :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)
+ # :packer-cloud-settings: Name of settings file containing credentials
+ # for the cloud that packer will build on. (default: packer-cloud-env)
+ # :packer-version: Version of packer to install / use in build. (default: 1.0.2)
+ # :stream: Keyword that can be used to represent a release code-name.
+ # Often the same as the branch. (default: master)
+ # :submodule-recursive: Whether to checkout submodules recursively.
+ # (default: true)
+ #
+ # :gerrit_verify_triggers: Override Gerrit Triggers.
+ # :gerrit_trigger_file_paths: Override file paths which can be used to
+ # filter which file modifications will trigger a build.
+ # (default defined by lf_jjb_common)
######################
# Default parameters #
######################
build-timeout: 10
- git-url: '$GIT_URL/$GERRIT_PROJECT'
gerrit_verify_triggers:
- patchset-created-event:
# Job Configuration #
#####################
+ concurrent: true
+
+ builders:
+ - lf-infra-packer-validate:
+ packer-cloud-settings: '{packer-cloud-settings}'
+ packer-version: '{packer-version}'
+
+- job-template:
+ name: '{project-name}-packer-verify'
+ id: gerrit-packer-verify
+ <<: *lf_packer_common
+ # yamllint disable-line rule:key-duplicates
+ <<: *lf_packer_verify
+
+ git-url: '$GIT_URL/$GERRIT_PROJECT'
+
scm:
- lf-infra-gerrit-scm:
git-url: '{git-url}'
- job-template:
name: '{project-name}-packer-verify'
id: github-packer-verify
- concurrent: true
- <<: *lf_jjb_common
- # yamllint disable-line rule:key-duplicates
<<: *lf_packer_common
# yamllint disable-line rule:key-duplicates
- <<: *lf_packer_verify_builders
-
- ######################
- # Default parameters #
- ######################
-
- build-timeout: 10
-
- #####################
- # Job Configuration #
- #####################
+ <<: *lf_packer_verify
properties:
- github: