# General
jenkins-ssh-credential: test-credential
jenkins-ssh-release-credential: test-release-credential
+ submodule-recursive: true
+ submodule-timeout: 10
+ submodule-disable: false
# Gerrit Infra
gerrit-server-name: test-server
git-url: https://github.com
git-clone-url: "git@github.com:"
github-org: example-org
+ github-url: https://github.com/project
github_pr_whitelist:
- jpwku
- tykeal
project-name: self-release-project
branch: master
mvn-settings: gerrit-maven-project-settings
+
+- project:
+ name: "{project-name}-release-github"
+ jobs:
+ - "{project-name}-github-release-jobs"
+
+ project: self-release/project-github
+ project-name: self-release-project-github
+ branch: master
+ mvn-settings: github-maven-project-settings
:language: yaml
+Job Groups
+==========
+
+Below is a list of Release job groups:
+
+.. literalinclude:: ../../jjb/lf-release-job-groups.yaml
+ :language: yaml
+
+
Jenkins Jobs
------------
pattern: 'packer\/templates\/{templates}\.json'
- compare-type: REG_EXP
pattern: 'packer\/vars\/{platforms}\.json'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/provision\/{templates}\.yaml'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/provision\/local-{templates}\.yaml'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/templates\/{templates}\.json'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/vars\/{platforms}\.json'
- job-template:
name: "{project-name}-packer-merge-{platforms}-{templates}"
- 'packer\/provision\/local-{templates}\.yaml'
- 'packer\/templates\/{templates}\.json'
- 'packer\/vars\/{platforms}\.json'
+ - 'packer\/common-packer\/provision\/{templates}\.yaml'
+ - 'packer\/common-packer\/provision\/local-{templates}\.yaml'
+ - 'packer\/common-packer\/templates\/{templates}\.json'
+ - 'packer\/common-packer\/vars\/{platforms}\.json'
+
white-list-target-branches:
- "{branch}"
pattern: 'packer\/templates\/{templates}\.json'
- compare-type: REG_EXP
pattern: 'packer\/vars\/{platforms}\.json'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/provision\/{templates}\.yaml'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/provision\/local-{templates}\.yaml'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/templates\/{templates}\.json'
+ - compare-type: REG_EXP
+ pattern: 'packer\/common-packer\/vars\/{platforms}\.json'
- job-template:
name: "{project-name}-packer-verify-build-{platforms}-{templates}"
- 'packer\/provision\/local-{templates}\.yaml'
- 'packer\/templates\/{templates}\.json'
- 'packer\/vars\/{platforms}\.json'
+ - 'packer\/common-packer\/vars\/{platforms}\.json'
+ - 'packer\/common-packer\/provision\/{templates}\.yaml'
+ - 'packer\/common-packer\/provision\/local-{templates}\.yaml'
+ - 'packer\/common-packer\/templates\/{templates}\.json'
#################
# Packer Verify #
jobs:
- gerrit-release-verify
- gerrit-release-merge
+
+- job-group:
+ name: "{project-name}-github-release-jobs"
+
+ # This job group contains all the recommended jobs that should be deployed
+ # for any project using self releases.
+
+ jobs:
+ - github-release-verify
+ - github-release-merge
# yamllint disable-line rule:line-length
comment-contains-value: '^Patch Set\s+\d+:\s+(recheck|reverify)\s*$'
+ github_included_regions:
+ - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+
#####################
# Job Configuration #
#####################
unstable: "{gerrit-skip-vote}"
notbuilt: "{gerrit-skip-vote}"
+- job-template:
+ name: "{project-name}-release-verify"
+ id: github-release-verify
+ <<: *lf_release_common
+ # yamllint disable-line rule:key-duplicates
+ <<: *lf_release_verify
+
+ properties:
+ - lf-infra-properties:
+ build-days-to-keep: "{build-days-to-keep}"
+ - github:
+ url: "{github-url}/{github-org}/{project}"
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: "{build-timeout}"
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+
+ scm:
+ - lf-infra-github-scm:
+ url: "{git-clone-url}{github-org}/{project}"
+ refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
+ branch: "$sha1"
+ submodule-recursive: "{submodule-recursive}"
+ submodule-timeout: "{submodule-timeout}"
+ submodule-disable: "{submodule-disable}"
+ choosing-strategy: default
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+
+ triggers:
+ - github-pull-request:
+ trigger-phrase: ^(recheck|reverify)$
+ only-trigger-phrase: false
+ status-context: "Github Release Verify"
+ permit-all: true
+ github-hooks: true
+ white-list-target-branches:
+ - "{branch}"
+ included-regions: "{obj:github_included_regions}"
+
#################
# RELEASE MERGE #
#################
- comment-added-contains-event:
comment-contains-value: '^Patch Set\s+\d+:\s+remerge\s*$'
+ github_included_regions:
+ - '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+
#####################
# Job Configuration #
#####################
- compare-type: REG_EXP
pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+- job-template:
+ name: "{project-name}-release-merge"
+ id: github-release-merge
+ <<: *lf_release_common
+ # yamllint disable-line rule:key-duplicates
+ <<: *lf_release_merge
+
+ properties:
+ - lf-infra-properties:
+ build-days-to-keep: "{build-days-to-keep}"
+ - github:
+ url: "{github-url}/{github-org}/{project}"
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: "{build-timeout}"
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+
+ scm:
+ - lf-infra-github-scm:
+ url: "{git-clone-url}{github-org}/{project}"
+ refspec: "+refs/pull/*:refs/remotes/origin/pr/*"
+ branch: "$sha1"
+ submodule-recursive: "{submodule-recursive}"
+ submodule-timeout: "{submodule-timeout}"
+ submodule-disable: "{submodule-disable}"
+ choosing-strategy: default
+ jenkins-ssh-credential: "{jenkins-ssh-credential}"
+
+ triggers:
+ - github-pull-request:
+ trigger-phrase: "^remerge$"
+ only-trigger-phrase: true
+ status-context: "Github Release Merge"
+ permit-all: true
+ github-hooks: true
+ white-list-target-branches:
+ - "{branch}"
+ included-regions: "{obj:github_included_regions}"
+
################
# PyPI RELEASE #
################
--- /dev/null
+---
+fixes:
+ - |
+ Add regex to trigger packer jobs when common-packer templates are updated.
--- /dev/null
+---
+fixes:
+ - |
+ Add self release verify and merge jobs for GitHub based projects.
--- /dev/null
+---
+fixes:
+ - |
+ Fixes an bug with 'job-cost.sh' that would cause builds to be marked
+ as unstable if not run on AWS or OpenStack.
--- /dev/null
+---
+fixes:
+ - |
+ Fix the release job script to handle LOG_DIR unbound variable
+ and condition to check if the LOGS_SERVER or CDN_URL is being used.
--- /dev/null
+---
+fixes:
+ - |
+ Remove python 2.7 support
+
+ As per the deprecation notice python 2.7 is not long supported.
+ This causing job failures since the dependencies install
+ are not maintained.
+
+ DEPRECATION: Python 2.7 reached the end of its life on January 1st,
+ 2020. Please upgrade your Python as Python 2.7 is no longer
+ maintained. pip 21.0 will drop support for Python 2.7 in January
+ 2021. More details about Python 2 support in pip can be found at
+ https://pip.pypa.io/en/latest/development/release-process/#python-2-support
+ pip 21.0 will remove support for this functionality.
--- /dev/null
+---
+fixes:
+ - |
+ Updates the 'sudo-logs.sh' script to set ownerhsip to current build
+ user and user's login group, instead of the explicit
+ 'jenkins:jenkins'. This will allow sudoer log ownership to work on
+ builders not using 'jenkins' as their build username.
# shellcheck disable=SC1090
source ~/lf-env.sh
+if [[ ! -f /run/cloud-init/result.json && ! -f stack-cost ]]; then
+ # Don't attempt to calculate job cost as build is not running in a
+ # cloud environment
+ echo "INFO: Skipping job cost calculation"
+ exit 0
+fi
+
# AWS job cost not supported, exit
cloudtype="$(jq -r .v1.datasource /run/cloud-init/result.json)"
if [[ $cloudtype == "DataSourceEc2Local" ]]; then
fi
fi
- #Project may still want to use system py27
- #pip and setuptools must be updated for py27 to work.
- python -m pip install --user --quiet --upgrade pip
- python -m pip install --user --quiet --no-warn-script-location --upgrade setuptools
- python --version
- python -m pip --version
- python -m pip freeze
-
python3 -m pip install --user --quiet --upgrade pip
python3 -m pip install --user --quiet --no-warn-script-location --upgrade setuptools
python3 -m pip install --user --quiet --no-warn-script-location --upgrade --upgrade-strategy eager -r "$requirements_file"
set_variables_common(){
echo "INFO: Setting common variables"
- if [[ -z ${LOGS_SERVER:-} ]] || [[ -z ${CDN_URL:-} ]]; then
+ if [[ -z ${LOGS_SERVER:-} ]] && [[ -z ${CDN_URL:-} ]]; then
echo "ERROR: LOGS_SERVER or CDN_URL not defined"
exit 1
fi
release_file="None"
fi
+ if [[ -z ${LOG_DIR:-} ]]; then
+ LOG_DIR=$(yq -r ".log_dir" "$release_file")
+ fi
if [[ -n ${LOGS_SERVER:-} ]]; then
logs_url="${LOGS_SERVER}/${NEXUS_PATH}${LOG_DIR}"
elif [[ -n ${CDN_URL:-} ]]; then
;;
esac
sudo_log=$(basename "$sudo_log")
- sudo chown jenkins:jenkins "/tmp/$sudo_log"
+ sudo chown "$(id -nu)": "/tmp/$sudo_log"
chmod 0644 "/tmp/$sudo_log"
mkdir -p "$WORKSPACE/archives/sudo"
mv "/tmp/$sudo_log" "$WORKSPACE/archives/sudo/$sudo_log"
[testenv:pre-commit]
basepython = python3
deps =
- pre-commit
+ pre-commit==2.9.3
commands =
pre-commit run --all-files --show-diff-on-failure
pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_EDITMSG