[INF-146]
Unify mechanism across multiple ci-management repos
- move converted per-repo jobs into the jjb/repos hierarchy
- Pull in macros (with onf- prefix) and common scripts from ONOS/Aether
ci-management repos, unifying behavior
- Update tagging scripts to unify changes
- Update gerrit repo multi-checkout and patch script
- Change over to newer static host for publishing charts/docs
- use python3 venv instead of virtualenv
Change-Id: Id46fdc23679b8854c54e294a7fb022e69d6d28f9
diff --git a/Makefile b/Makefile
index af7a30a..1071410 100644
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,7 @@
$(VENV_DIR):
@echo "Setting up virtualenv for JJB testing"
- virtualenv -p python3 $@
+ python3 -m venv $@
$@/bin/pip install jenkins-job-builder==$(JJB_VERSION) pipdeptree
$(JOBCONFIG_DIR):
diff --git a/jjb/charts.yaml b/jjb/charts.yaml
deleted file mode 100644
index 9999d4b..0000000
--- a/jjb/charts.yaml
+++ /dev/null
@@ -1,179 +0,0 @@
----
-# CORD helm chart publishing tasks
-
-- project:
- name: helm-repo
-
- # add repos that have documentation to the project list in both jobs
- jobs:
- - 'publish-helm-repo':
- project-regexp: '{helm-charts-projects-regexp}'
- branch-regexp: '{supported-branches-regexp}'
-
-- job-template:
- id: publish-helm-repo
- name: 'publish-helm-repo'
- description: |
- Created by publish-helm-repo job-template from ci-management/jjb/charts.yaml
-
- triggers:
- - cord-infra-gerrit-trigger-merge:
- gerrit-server-name: '{gerrit-server-name}'
- project-regexp: '{project-regexp}'
- branch-regexp: '{branch-regexp}'
- file-include-regexp: '{all-files-regexp}'
- dependency-jobs: '{dependency-jobs}'
-
- properties:
- - cord-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
- artifact-num-to-keep: '{artifact-num-to-keep}'
-
- wrappers:
- - lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
- scm:
- - lf-infra-gerrit-scm:
- git-url: '$GIT_URL/$GERRIT_PROJECT'
- refspec: ''
- branch: '$GERRIT_BRANCH'
- submodule-disable: '{submodule-disable}'
- submodule-recursive: 'false'
- submodule-timeout: '{submodule-timeout}'
- choosing-strategy: 'gerrit'
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
- node: 'ubuntu18.04-basebuild-2c-4g'
- project-type: freestyle
- concurrent: false
-
- builders:
- - shell: |
- #!/usr/bin/env bash
- set -eu -o pipefail
-
- echo "git version: $(git --version)"
-
- # Configure git
- git config --global user.email "do-not-reply@opennetworking.org"
- git config --global user.name "Jenkins"
-
- # Checkout 'cord-charts-repo' repo that contains updated charts
- git clone ssh://jenkins@gerrit.opencord.org:29418/cord-charts-repo.git
-
- # Clone the `helm-repo-tools` which contains scripts
- git clone ssh://jenkins@gerrit.opencord.org:29418/helm-repo-tools.git
-
- # Setup helm and external repos
- helm repo add stable https://charts.helm.sh/stable
- helm repo add rook-release https://charts.rook.io/release
- helm repo add cord https://charts.opencord.org
- helm repo add elastic https://helm.elastic.co
- helm repo add kiwigrid https://kiwigrid.github.io
-
- # Update the repo
- ./helm-repo-tools/helmrepo.sh
-
- # Tag and push to git the charts repo
- pushd cord-charts-repo
-
- # only update if charts are changed
- set +e
- if git diff --exit-code index.yaml > /dev/null; then
- echo "No changes to charts in patchset $GERRIT_CHANGE_NUMBER on project: $GERRIT_PROJECT, exiting."
- exit 0
- fi
- set -e
-
- # version tag is the current date in RFC3339 format
- NEW_VERSION=$(date -u +%Y%m%dT%H%M%SZ)
-
- # Add changes and create commit
- git add -A
- git commit -m "Changed by CORD Jenkins publish-helm-repo job: $BUILD_NUMBER, for project: $GERRIT_PROJECT, patchset: $GERRIT_CHANGE_NUMBER"
-
- # create tag on new commit
- git tag "$NEW_VERSION"
-
- echo "Tags including new tag:"
- git tag -n
-
- # push new commit and tag back into repo
- git push origin
- git push origin "$NEW_VERSION"
- popd
-
- # Set up the ssh host keys for the docs host
- mkdir -p ~/.ssh
- echo '{docs-ssh-host-key}' >> ~/.ssh/known_hosts
-
- # Copy updated repo to host
- rsync -rvzh --delete-after --exclude=.git cord-charts-repo/ {docs-ssh-host}:/var/www/charts
-
- publishers:
- - email:
- recipients: 'andy@opennetworking.org kailash@opennetworking.org luca@opennetworking.org teo@opennetworking.org saurav@opennetworking.org zdw@opennetworking.org'
-
-# check helm charts with `helm lint --strict` and that charts version is
-# updated when the contents of a chart is modified.
-- job-template:
- id: verify-helm-lint
- name: 'verify_{project}_helm-lint'
- description: |
- Created by verify-helm-lint job-template from ci-management/jjb/charts.yaml
-
- triggers:
- - cord-infra-gerrit-trigger-patchset:
- gerrit-server-name: '{gerrit-server-name}'
- project-regexp: '^{project}$'
- branch-regexp: '{branch-regexp}'
- file-include-regexp: '{all-files-regexp}'
- dependency-jobs: '{dependency-jobs}'
-
- properties:
- - cord-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
- artifact-num-to-keep: '{artifact-num-to-keep}'
-
- wrappers:
- - lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
- scm:
- - lf-infra-gerrit-scm:
- git-url: '$GIT_URL/$GERRIT_PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-disable: '{submodule-disable}'
- submodule-recursive: 'false'
- submodule-timeout: '{submodule-timeout}'
- choosing-strategy: gerrit
- jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
- node: 'ubuntu18.04-basebuild-2c-4g'
- project-type: freestyle
- concurrent: true
-
- builders:
- - shell: |
- #!/usr/bin/env bash
- set -eu -o pipefail
-
- # Setup helm and external repos
- helm repo add stable https://charts.helm.sh/stable
- helm repo add rook-release https://charts.rook.io/release
- helm repo add cord https://charts.opencord.org
-
- git clone https://gerrit.opencord.org/helm-repo-tools
- ./helm-repo-tools/helmlint.sh clean
-
- # Specify the remote branch to compare against
- export COMPARISON_BRANCH="origin/$GERRIT_BRANCH"
- ./helm-repo-tools/chart_version_check.sh
-
- # Check for chart version conflicts by building the repo (don't upload)
- git clone ssh://jenkins@gerrit.opencord.org:29418/cord-charts-repo.git
- ./helm-repo-tools/helmrepo.sh
diff --git a/jjb/cord-macros.yaml b/jjb/cord-macros.yaml
index 59cd72c..ff6c309 100644
--- a/jjb/cord-macros.yaml
+++ b/jjb/cord-macros.yaml
@@ -43,19 +43,6 @@
choosing-strategy: '{choosing-strategy}'
basedir: '{basedir}'
-# download a specific patchset after checking out entire source tree with repo
-# docs: https://docs.openstack.org/infra/jenkins-job-builder/builders.html#builders.inject
-- builder:
- name: cord-infra-gerrit-repo-patch
- builders:
- - inject:
- properties-content: |
- DESTINATION_DIR={destination-dir}
- GERRIT_PROJECT={project}
- GERRIT_CHANGE_NUMBER={change-number}
- GERRIT_PATCHSET_NUMBER={patchset-number}
- - shell: !include-raw-escape: shell/repopatch.sh
-
# trigger on gerrit patchsets and actions
# docs: https://docs.openstack.org/infra/jenkins-job-builder/triggers.html#triggers.gerrit
- trigger:
@@ -173,25 +160,6 @@
- file-id: pipconf
target: '$HOME/.config/pip/pip.conf'
-# wrapper to provide SSH key and fill in ~/.ssh/known_hosts file for use with rsync
-# Name matches macro in ONOS JJB, for future unification
-- wrapper:
- name: onf-infra-rsync-wrappers
- wrappers:
- - mask-passwords
- - timeout:
- type: absolute
- timeout: '{build-timeout}'
- timeout-var: 'BUILD_TIMEOUT'
- fail: true
- - timestamps
- - ssh-agent-credentials:
- users:
- - '{jenkins-ssh-credential}'
- - config-file-provider:
- files:
- - file-id: known_hosts
- target: '$HOME/.ssh/known_hosts'
# Sets permissions for job to be visible to AetherAccess only
# (for Aether member-only repos).
@@ -226,3 +194,144 @@
<permission>hudson.model.Item.Read:ONFStaff</permission>
<permission>hudson.model.Item.ViewStatus:anonymous</permission>
</hudson.security.AuthorizationMatrixProperty>
+
+################## NEW and CONVERGED MACROS ###################
+# Name matches macro in ONOS/Aether JJB, for future unification
+
+# control how long builds and artifact are retained
+# differs from lf-infra-properties as it retains artifacts
+- property:
+ name: onf-infra-properties
+ properties:
+ - build-discarder:
+ days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+# wrapper to provide SSH key and fill in ~/.ssh/known_hosts file for use with rsync
+- wrapper:
+ name: onf-infra-rsync-wrappers
+ wrappers:
+ - mask-passwords
+ - timeout:
+ type: absolute
+ timeout: '{build-timeout}'
+ timeout-var: 'BUILD_TIMEOUT'
+ fail: true
+ - timestamps
+ - ssh-agent-credentials:
+ users: '{obj:ssh_credential_list}'
+ - config-file-provider:
+ files:
+ - file-id: known_hosts
+ target: '$HOME/.ssh/known_hosts'
+
+# trigger on gerrit patchsets and actions
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/triggers.html#triggers.gerrit
+# Uses a regex based project match
+- trigger:
+ name: onf-infra-gerrit-trigger-patchset
+ triggers:
+ - gerrit:
+ server-name: '{gerrit-server-name}'
+ dependency-jobs: '{dependency-jobs}'
+ silent-start: true
+ trigger-on:
+ - patchset-created-event:
+ exclude-drafts: true
+ exclude-trivial-rebase: false
+ exclude-no-code-change: false
+ - draft-published-event
+ - comment-added-contains-event:
+ comment-contains-value: '(?i)^.*recheck$'
+ projects:
+ - project-compare-type: REG_EXP
+ project-pattern: '{project-regexp}'
+ branches:
+ - branch-compare-type: REG_EXP
+ branch-pattern: '{branch-regexp}'
+ file-paths:
+ - compare-type: REG_EXP
+ pattern: '{file-include-regexp}'
+
+# trigger for gerrit patch submission
+- trigger:
+ name: onf-infra-gerrit-trigger-merge
+ triggers:
+ - gerrit:
+ server-name: '{gerrit-server-name}'
+ dependency-jobs: '{dependency-jobs}'
+ silent-start: true
+ trigger-on:
+ - change-merged-event
+ projects:
+ - project-compare-type: REG_EXP
+ project-pattern: '{project-regexp}'
+ branches:
+ - branch-compare-type: REG_EXP
+ branch-pattern: '{branch-regexp}'
+ file-paths:
+ - compare-type: REG_EXP
+ pattern: '{file-include-regexp}'
+
+# same as lf-infra-*-scm, but allows checkouts to a subdir of $WORKSPACE
+# with the `basedir` option
+#
+# `basedir` is used as `destination-dir` for the repo scm macros for
+# consistency
+
+- scm:
+ name: onf-infra-gerrit-scm
+ scm:
+ - git:
+ credentials-id: '{jenkins-ssh-credential}'
+ url: '{git-url}'
+ refspec: '{refspec}'
+ branches:
+ - 'refs/heads/{branch}'
+ wipe-workspace: true
+ submodule:
+ disable: '{submodule-disable}'
+ recursive: '{submodule-recursive}'
+ timeout: '{submodule-timeout}'
+ choosing-strategy: '{choosing-strategy}'
+ basedir: '{basedir}'
+
+- scm:
+ name: onf-infra-gerrit-repo-scm
+ scm:
+ - repo:
+ manifest-url: '{manifest-url}'
+ manifest-branch: '{branch}'
+ destination-dir: '{basedir}'
+ jobs: 4
+ reset-first: true
+ depth: 1
+
+# download a specific patchset after checking out entire source tree with repo
+# docs: https://docs.openstack.org/infra/jenkins-job-builder/builders.html#builders.inject
+- builder:
+ name: onf-infra-gerrit-repo-patch
+ builders:
+ - inject:
+ properties-content: |
+ BASEDIR={basedir}
+ GERRIT_PROJECT={project}
+ GERRIT_CHANGE_NUMBER={change-number}
+ GERRIT_PATCHSET_NUMBER={patchset-number}
+ - shell: !include-raw-escape: shell/repo-patch.sh
+
+# publisher to clean up the workspace after the build whatever the result
+- publisher:
+ name: onf-infra-wscleanup-publisher
+ publishers:
+ - workspace-cleanup:
+ clean-if:
+ - success: true
+ - unstable: true
+ - failure: true
+ - aborted: true
+ - not-built: true
+ dirmatch: false
+ fail-build: true
+ clean-parent: false
+ disable-deferred-wipeout: false
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index 1bf6631..6fe3b09 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -11,8 +11,11 @@
# lftools
lftools-version: '~=0.26.2'
- # LF templates require these to be set in later versions of global-jjb
- submodule-disable: 'false'
+ # git module config
+ # LF templates require these to be set in later versions of global-jjb for git module
+ choosing_strategy: 'default'
+ submodule-disable: false
+ submodule-recursive: false
submodule-timeout: 10
# name of the SSH key to use in most cases
@@ -63,6 +66,7 @@
# URL for Gerrit server, for use with `repo`
gerrit-server-url: 'https://gerrit.opencord.org'
+ gerrit-server-ssh-url: 'ssh://jenkins@gerrit.opencord.org:29418'
# name of the manifest git repos used with the `repo` cli tool
cord-repo-manifest: manifest.git
@@ -73,9 +77,6 @@
# default email address to send job failure messages
failure-email-address: 'cord-dev@opencord.org'
- # Projects containing helm-charts
- helm-charts-projects-regexp: '(comac-helm-charts|voltha-helm-charts|helm-charts|cord-platform|seba)$'
-
# regexp for gerrit triggers
# list of supported branches, for branch-regexp
all-branches-regexp: '.*'
@@ -93,7 +94,7 @@
semver-strict: 0
# matching repos that should be version tagged by the version-tag job
- version-tag-projects-regexp: '^(?!aether)(xos.*|comac-helm-charts|voltha-helm-charts|helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoe.*|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|voltha-docs|mac-learning|goloxi|device-management-interface|bbsim-sadis-server|olttopology|opendm-agent|opendevice-manager|.*-robot)$'
+ version-tag-projects-regexp: '^(?!aether)(xos.*|comac-helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoe.*|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|mac-learning|goloxi|device-management-interface|bbsim-sadis-server|olttopology|opendm-agent|opendevice-manager|.*-robot)$'
# List of all repos that contribute to the CORD guide
cord-guide-projects-regexp: '^(att-workflow-driver|cord-tester|cordctl|exampleservice|fabric|fabric-crossconnect|hippie-oss|kubernetes-service|olt-service|onos-service|openolt|openstack|rcord|simpleexampleservice|vrouter|vtn-service|xos|xos-gui|xos-tosca)$'
@@ -135,10 +136,6 @@
code-files-regexp: '^(?!docs|VERSION|\/COMMIT_MSG).*$'
api-test-files-regexp: '^(?!docs|VERSION|\/COMMIT_MSG|Jenkinsfile-*).*$'
- # Jenkins SSH host doc publisher
- docs-ssh-host: 'guide.opencord.org'
- docs-ssh-host-key: 'guide.opencord.org,52.9.82.207 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFHwOY3/8GucdKzBngH/FC08nHac/RJ/OheZp2+5EpOPXZG9zQW2YUbXH5A9pO76lI5CG3z3+huG62xEGo99UQU='
-
# siab helm-charts
siab-projects-regexp: '^(xos-core/.*|xos-profiles/seba-services/.*|xos-profiles/base-kubernetes/.*|xos-profiles/ponsim-pod/.*|workflows/att-workflow/.*|voltha/.*|onos/.*|mininet/.*|configs/seba-ponsim.yaml)$'
@@ -170,7 +167,7 @@
# github organization
# Specifies the github organization to operate on. Default is blank which
# may either be invalid, or specify that gerrit should be used instead.
- # Currently used with: synopsys detect, github-release
+ # Currently used with: github-release
github-organization: ''
# release targets
@@ -196,7 +193,7 @@
# maintainers
# Used to notify users in supported tests
- maintainers: 'zdw@opennetworking.org'
+ maintainers: ''
# karaf-home
# Use to grab the logs or onos-diagnostics
diff --git a/jjb/repos/helm-charts.yaml b/jjb/repos/helm-charts.yaml
new file mode 100644
index 0000000..9c3810c
--- /dev/null
+++ b/jjb/repos/helm-charts.yaml
@@ -0,0 +1,19 @@
+---
+# SPDX-FileCopyrightText: 2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# These are the CORD specific helm charts
+
+- project:
+ name: helm-charts
+ project: '{name}'
+ project-regexp: '^{name}$'
+ branch-regexp: '{modern-branches-regexp}'
+
+ jobs:
+ - 'verify-licensed'
+ - 'tag-check'
+ - 'helm-lint':
+ branch-regexp: '{modern-branches-regexp}'
+ - 'version-tag'
+ - 'publish-helm-repo'
diff --git a/jjb/verify/helm-repo-tools.yaml b/jjb/repos/helm-repo-tools.yaml
similarity index 100%
rename from jjb/verify/helm-repo-tools.yaml
rename to jjb/repos/helm-repo-tools.yaml
diff --git a/jjb/repos/versioning.yaml b/jjb/repos/versioning.yaml
new file mode 100644
index 0000000..e74de49
--- /dev/null
+++ b/jjb/repos/versioning.yaml
@@ -0,0 +1,16 @@
+---
+# DEPRECATED
+# Note - transitioning to ONOS/Aether style one file and individual version
+# jobs per repo, instead of the massive regex to match all repos
+#
+# This file exists only to handle the repos that haven't transitioned yet and
+# are still in the regex
+
+- project:
+ name: versioning-jobs
+
+ project: 'wildcard'
+ project-regexp: '{version-tag-projects-regexp}'
+
+ jobs:
+ - 'version-tag'
diff --git a/jjb/verify/voltha-docs.yaml b/jjb/repos/voltha-docs.yaml
similarity index 74%
rename from jjb/verify/voltha-docs.yaml
rename to jjb/repos/voltha-docs.yaml
index b2d3187..5e6d903 100644
--- a/jjb/verify/voltha-docs.yaml
+++ b/jjb/repos/voltha-docs.yaml
@@ -4,6 +4,7 @@
- project:
name: voltha-docs
project: '{name}'
+ project-regexp: '^{name}$'
jobs:
- 'verify-voltha-docs-jobs':
@@ -15,7 +16,7 @@
name: 'verify-voltha-docs-jobs'
jobs:
- 'verify-licensed'
- - 'tag-collision-reject'
+ - 'tag-check'
- 'make-unit-test':
unit-test-targets: 'test'
junit-allow-empty-results: true
@@ -23,9 +24,11 @@
- job-group:
name: 'post-submit-voltha-docs-jobs'
jobs:
+ - 'version-tag'
- 'sync-dir':
+ dependency-jobs: 'version-tag_voltha-docs'
build-command: 'make multiversion'
build-output-path: '_build/multiversion/'
- sync-target-server: 'guide.opencord.org'
- sync-target-path: '/var/www/voltha-docs/'
+ sync-target-server: 'static.opennetworking.org'
+ sync-target-path: '/srv/sites/docs.voltha.org/'
build-timeout: 60
diff --git a/jjb/verify/voltha-helm-charts.yaml b/jjb/repos/voltha-helm-charts.yaml
similarity index 81%
rename from jjb/verify/voltha-helm-charts.yaml
rename to jjb/repos/voltha-helm-charts.yaml
index 4ba63b8..a8f6d36 100644
--- a/jjb/verify/voltha-helm-charts.yaml
+++ b/jjb/repos/voltha-helm-charts.yaml
@@ -1,9 +1,11 @@
---
-# verification jobs for 'voltha-helm-charts' repo
+# SPDX-FileCopyrightText: 2018-2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
- project:
name: voltha-helm-charts
project: '{name}'
+ project-regexp: '^{name}$'
jobs:
- 'verify-voltha-helm-charts-jobs':
@@ -23,10 +25,10 @@
name: 'verify-voltha-helm-charts-jobs'
jobs:
- 'verify-licensed'
- - 'tag-collision-reject':
- dependency-jobs: 'verify_voltha-helm-charts_licensed'
- - 'verify-helm-lint':
- dependency-jobs: 'verify_voltha-helm-charts_tag-collision'
+ - 'tag-check'
+ - 'helm-lint'
+ - 'version-tag'
+ - 'publish-helm-repo'
- job-group:
name: 'verify-voltha-helm-charts-jobs-voltha-2.8'
diff --git a/jjb/shell/helm-lint.sh b/jjb/shell/helm-lint.sh
new file mode 100644
index 0000000..e2f9e23
--- /dev/null
+++ b/jjb/shell/helm-lint.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+# SPDX-FileCopyrightText: 2020-2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+set -eu -o pipefail
+
+export OLD_REPO_DIR="cord-charts-repo"
+
+# Setup helm and external repos
+helm repo add stable https://charts.helm.sh/stable
+helm repo add rook-release https://charts.rook.io/release
+helm repo add cord https://charts.opencord.org
+
+git clone ssh://jenkins@gerrit.opencord.org:29418/helm-repo-tools.git
+./helm-repo-tools/helmlint.sh clean
+echo "*.lock" >> .gitignore
+
+# Specify the remote branch to compare against
+export COMPARISON_BRANCH="origin/$GERRIT_BRANCH"
+./helm-repo-tools/chart_version_check.sh
+
+# Configure git
+git config --global user.email "do-not-reply@opennetworking.org"
+git config --global user.name "Jenkins"
+
+# Check for chart version conflicts by building the repo (don't upload)
+git clone "ssh://jenkins@gerrit.opencord.org:29418/$OLD_REPO_DIR.git"
+./helm-repo-tools/helmrepo.sh
diff --git a/jjb/shell/jflint.sh b/jjb/shell/jflint.sh
index 18c5b40..cef7b91 100755
--- a/jjb/shell/jflint.sh
+++ b/jjb/shell/jflint.sh
@@ -1,18 +1,7 @@
#!/usr/bin/env bash
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# SPDX-FileCopyrightText: 2017-present Open Networking Foundation
+# SPDX-License-Identifier: Apache-2.0
# jflint.sh - lint for Jenkins declarative pipeline jobs
#
diff --git a/jjb/shell/publish-helm-repo.sh b/jjb/shell/publish-helm-repo.sh
new file mode 100644
index 0000000..386ff39
--- /dev/null
+++ b/jjb/shell/publish-helm-repo.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+
+# SPDX-FileCopyrightText: 2020-2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+set -eu -o pipefail
+
+echo "git version: $(git --version)"
+
+# Variables used in this and child scripts
+export PUBLISH_URL="charts.opencord.org"
+export OLD_REPO_DIR="cord-charts-repo"
+export NEW_REPO_DIR="chart_repo"
+
+# Configure git
+git config --global user.email "do-not-reply@opennetworking.org"
+git config --global user.name "Jenkins"
+
+# Checkout 'cord-charts-repo' repo that contains updated charts
+git clone "ssh://jenkins@gerrit.opencord.org:29418/$OLD_REPO_DIR.git"
+
+# Clone the `helm-repo-tools` which contains scripts
+git clone ssh://jenkins@gerrit.opencord.org:29418/helm-repo-tools.git
+
+# Setup helm and external repos
+helm repo add stable https://charts.helm.sh/stable
+helm repo add rook-release https://charts.rook.io/release
+helm repo add cord https://charts.opencord.org
+helm repo add elastic https://helm.elastic.co
+helm repo add kiwigrid https://kiwigrid.github.io
+
+# Update the repo
+./helm-repo-tools/helmrepo.sh
+
+# Tag and push to git the charts repo
+pushd "$OLD_REPO_DIR"
+
+ # only update if charts are changed
+ set +e
+ if git diff --exit-code index.yaml > /dev/null; then
+ echo "No changes to charts in patchset $GERRIT_CHANGE_NUMBER on project: $GERRIT_PROJECT, exiting."
+ exit 0
+ fi
+ set -e
+
+ # version tag is the current date in RFC3339 format
+ NEW_VERSION=$(date -u +%Y%m%dT%H%M%SZ)
+
+ # Add changes and create commit
+ git add -A
+ git commit -m "Changed by CORD Jenkins publish-helm-repo job: $BUILD_NUMBER, for project: $GERRIT_PROJECT, patchset: $GERRIT_CHANGE_NUMBER"
+
+ # create tag on new commit
+ git tag "$NEW_VERSION"
+
+ echo "Tags including new tag:"
+ git tag -n
+
+ # push new commit and tag back into repo
+ git push origin
+ git push origin "$NEW_VERSION"
+popd
+
+rsync -rvzh --delete-after --exclude=.git "$OLD_REPO_DIR/" "static.opennetworking.org:/srv/sites/$PUBLISH_URL/"
diff --git a/jjb/shell/repo-patch.sh b/jjb/shell/repo-patch.sh
new file mode 100644
index 0000000..4176df0
--- /dev/null
+++ b/jjb/shell/repo-patch.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+# SPDX-FileCopyrightText: 2018-2022 Open Networking Foundation
+# SPDX-License-Identifier: Apache-2.0
+
+# repo-patch.sh
+# downloads a patch to within an already checked out repo tree
+
+set -eu -o pipefail
+
+# verify that we have repo installed
+command -v repo >/dev/null 2>&1 || { echo "repo not found, please install it" >&2; exit 1; }
+
+echo "BASEDIR: ${BASEDIR}"
+echo "GERRIT_PROJECT: ${GERRIT_PROJECT}"
+echo "GERRIT_CHANGE_NUMBER: ${GERRIT_CHANGE_NUMBER}"
+echo "GERRIT_PATCHSET_NUMBER: ${GERRIT_PATCHSET_NUMBER}"
+
+pushd "${BASEDIR}"
+echo "Checking out a patchset with repo, using repo version:"
+repo version
+
+PROJECT_PATH=$(xmllint --xpath "string(//project[@name=\"${GERRIT_PROJECT}\"]/@path)" .repo/manifests/default.xml)
+
+if [ -z "$PROJECT_PATH" ]
+then
+ echo "WARNING: Project not in repo! Not downloading the changeset."
+else
+ echo "Project Path: $PROJECT_PATH"
+ repo download "${PROJECT_PATH}" "$GERRIT_CHANGE_NUMBER/${GERRIT_PATCHSET_NUMBER}"
+fi
+
+popd
diff --git a/jjb/shell/repopatch.sh b/jjb/shell/repopatch.sh
deleted file mode 100755
index 1ce911e..0000000
--- a/jjb/shell/repopatch.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2018-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# repopatch.sh
-# downloads a patch to within an already checked out repo tree
-
-set -eu -o pipefail
-
-# verify that we have repo installed
-command -v repo >/dev/null 2>&1 || { echo "repo not found, please install it" >&2; exit 1; }
-
-echo "DESTINATION_DIR: ${DESTINATION_DIR}"
-echo "GERRIT_PROJECT: ${GERRIT_PROJECT}"
-echo "GERRIT_CHANGE_NUMBER: ${GERRIT_CHANGE_NUMBER}"
-echo "GERRIT_PATCHSET_NUMBER: ${GERRIT_PATCHSET_NUMBER}"
-
-pushd "${DESTINATION_DIR}"
-echo "Checking out a patchset with repo, using repo version:"
-repo version
-
-PROJECT_PATH=$(xmllint --xpath "string(//project[@name=\"${GERRIT_PROJECT}\"]/@path)" .repo/manifests/default.xml)
-
-if [ -z "$PROJECT_PATH" ]
-then
- echo "WARNING: Project not in repo! Not downloading the changeset."
-else
- echo "Project Path: $PROJECT_PATH"
- repo download "${PROJECT_PATH}" "$GERRIT_CHANGE_NUMBER/${GERRIT_PATCHSET_NUMBER}"
-fi
-
-popd
-
diff --git a/jjb/shell/tagcollisionreject.sh b/jjb/shell/tag-check.sh
similarity index 64%
rename from jjb/shell/tagcollisionreject.sh
rename to jjb/shell/tag-check.sh
index 01772c5..c5b4b13 100755
--- a/jjb/shell/tagcollisionreject.sh
+++ b/jjb/shell/tag-check.sh
@@ -1,21 +1,7 @@
#!/usr/bin/env bash
-# Copyright 2018-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# tagcollisionreject.sh
-# checks that there isn't an existing tag in the repo that has this tag
+# SPDX-FileCopyrightText: 2018-2022 Open Networking Foundation
+# SPDX-License-Identifier: Apache-2.0
set -eu -o pipefail
@@ -24,12 +10,17 @@
TAG_VERSION="" # version file that might have a leading v to work around go mod funkyness
SEMVER_STRICT=${SEMVER_STRICT:-0} # require semver versions
+DOCKERPARENT_STRICT=${DOCKERPARENT_STRICT:-1} # require semver versions on parent images in dockerfiles
releaseversion=0
fail_validation=0
# when not running under Jenkins, use current dir as workspace
WORKSPACE=${WORKSPACE:-.}
+BASEDIR=${BASEDIR:-}
+
+# cd to the code checkout location
+cd "$WORKSPACE/$BASEDIR"
# find the version string in the repo, read into NEW_VERSION
# Add additional places NEW_VERSION could be found to this function
@@ -168,68 +159,74 @@
# check if Dockerfiles have a released version as their parent
function dockerfile_parentcheck {
- while IFS= read -r -d '' dockerfile
- do
- echo "Checking dockerfile: '$dockerfile'"
-
- # split on newlines
- IFS=$'\n'
- df_parents=($(grep "^FROM" "$dockerfile"))
-
- # check all parents in the Dockerfile
- for df_parent in "${df_parents[@]}"
+ if [ "$DOCKERPARENT_STRICT" -eq "0" ];
+ then
+ echo "DOCKERPARENT_STRICT is disabled - skipping parent checks"
+ else
+ while IFS= read -r -d '' dockerfile
do
+ echo "Checking dockerfile: '$dockerfile'"
- df_pattern="[FfRrOoMm] +(--platform=[^ ]+ +)?([^@: ]+)(:([^: ]+)|@sha[^ ]+)?"
- if [[ "$df_parent" =~ $df_pattern ]]
- then
+ # split on newlines
+ IFS=$'\n'
+ df_parents=($(grep "^FROM" "$dockerfile"))
- p_image="${BASH_REMATCH[2]}"
- p_sha=${BASH_REMATCH[3]}
- p_version="${BASH_REMATCH[4]}"
+ # check all parents in the Dockerfile
+ for df_parent in "${df_parents[@]}"
+ do
- echo "IMAGE: '${p_image}'"
- echo "VERSION: '$p_version'"
- echo "SHA: '$p_sha'"
+ df_pattern="[FfRrOoMm] +(--platform=[^ ]+ +)?([^@: ]+)(:([^: ]+)|@sha[^ ]+)?"
+ if [[ "$df_parent" =~ $df_pattern ]]
+ then
- if [[ "${p_image}" == "scratch" ]]
- then
- echo " OK: Using the versionless 'scratch' parent: '$df_parent'"
- elif [[ "${p_image}:${p_version}" == "gcr.io/distroless/static:nonroot" ]]
- then
- echo " OK: Using static distroless image with nonroot: '${p_image}:${p_version}'"
- elif [[ "${p_version}" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
- then
- echo " OK: Parent '$p_image:$p_version' is a released SemVer version"
- elif [[ "${p_sha}" =~ ^@sha256:[0-9a-f]{64}.*$ ]]
- then
- # allow sha256 hashes to be used as version specifiers
- echo " OK: Parent '$p_image$p_sha' is using a specific sha256 hash as a version"
- elif [[ "${p_version}" =~ ^.*([0-9]+)\.([0-9]+).*$ ]]
- then
- # handle non-SemVer versions that have a Major.Minor version specifier in the name
- # 'ubuntu:16.04'
- # 'postgres:10.3-alpine'
- # 'openjdk:8-jre-alpine3.8'
- echo " OK: Parent '$p_image:$p_version' is using a non-SemVer, but sufficient, version"
- elif [[ -z "${p_version}" ]]
- then
- echo " ERROR: Parent '$p_image' is NOT using a specific version"
- fail_validation=1
+ p_image="${BASH_REMATCH[2]}"
+ p_sha=${BASH_REMATCH[3]}
+ p_version="${BASH_REMATCH[4]}"
+
+ echo "IMAGE: '${p_image}'"
+ echo "VERSION: '$p_version'"
+ echo "SHA: '$p_sha'"
+
+ if [[ "${p_image}" == "scratch" ]]
+ then
+ echo " OK: Using the versionless 'scratch' parent: '$df_parent'"
+ elif [[ "${p_image}:${p_version}" == "gcr.io/distroless/static:nonroot" ]]
+ then
+ echo " OK: Using static distroless image with nonroot: '${p_image}:${p_version}'"
+ elif [[ "${p_version}" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
+ then
+ echo " OK: Parent '$p_image:$p_version' is a released SemVer version"
+ elif [[ "${p_sha}" =~ ^@sha256:[0-9a-f]{64}.*$ ]]
+ then
+ # allow sha256 hashes to be used as version specifiers
+ echo " OK: Parent '$p_image$p_sha' is using a specific sha256 hash as a version"
+ elif [[ "${p_version}" =~ ^.*([0-9]+)\.([0-9]+).*$ ]]
+ then
+ # handle non-SemVer versions that have a Major.Minor version specifier in the name
+ # 'ubuntu:16.04'
+ # 'postgres:10.3-alpine'
+ # 'openjdk:8-jre-alpine3.8'
+ echo " OK: Parent '$p_image:$p_version' is using a non-SemVer, but sufficient, version"
+ elif [[ -z "${p_version}" ]]
+ then
+ echo " ERROR: Parent '$p_image' is NOT using a specific version"
+ fail_validation=1
+ else
+ echo " ERROR: Parent '$p_image:$p_version' is NOT using a specific version"
+ fail_validation=1
+ fi
+
else
- echo " ERROR: Parent '$p_image:$p_version' is NOT using a specific version"
- fail_validation=1
+ echo " ERROR: Couldn't find a parent image in $df_parent"
fi
- else
- echo " ERROR: Couldn't find a parent image in $df_parent"
- fi
+ done
- done
-
- done < <( find "${WORKSPACE}" -name 'Dockerfile*' ! -path "*/vendor/*" ! -name "*dockerignore" -print0 )
+ done < <( find "${WORKSPACE}" -name 'Dockerfile*' ! -path "*/vendor/*" ! -name "*dockerignore" -print0 )
+ fi
}
+# Start of actual code
echo "Checking git repo with remotes:"
git remote -v
diff --git a/jjb/shell/version-tag.sh b/jjb/shell/version-tag.sh
new file mode 100755
index 0000000..dcfa756
--- /dev/null
+++ b/jjb/shell/version-tag.sh
@@ -0,0 +1,199 @@
+#!/usr/bin/env bash
+
+# Copyright 2018-2022 Networking Foundation
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# version-tag.sh
+# Tags a git commit with the SemVer version discovered within the commit,
+# if the tag doesn't already exist. Ignore non-SemVer commits.
+
+set -eu -o pipefail
+
+VERSIONFILE="" # file path to file containing version number
+NEW_VERSION="" # version number found in $VERSIONFILE
+TAG_VERSION="" # version file that might have a leading v to work around go mod funkyness
+
+SEMVER_STRICT=${SEMVER_STRICT:-0} # require semver versions
+DOCKERPARENT_STRICT=${DOCKERPARENT_STRICT:-1} # require semver versions on parent images in dockerfiles
+
+releaseversion=0
+fail_validation=0
+
+# when not running under Jenkins, use current dir as workspace
+WORKSPACE=${WORKSPACE:-.}
+
+# find the version string in the repo, read into NEW_VERSION
+# Add additional places NEW_VERSION could be found to this function
+function read_version {
+ if [ -f "VERSION" ]
+ then
+ NEW_VERSION=$(head -n1 "VERSION")
+ VERSIONFILE="VERSION"
+
+ # If this is a golang project, use funky v-prefixed versions
+ if [ -f "Gopkg.toml" ] || [ -f "go.mod" ]
+ then
+ echo "go-based project found, using v-prefixed version for git tags: v${NEW_VERSION}"
+ TAG_VERSION=v${NEW_VERSION}
+ else
+ TAG_VERSION=${NEW_VERSION}
+ fi
+
+ elif [ -f "package.json" ]
+ then
+ NEW_VERSION=$(python -c 'import json,sys;obj=json.load(sys.stdin); print obj["version"]' < package.json)
+ TAG_VERSION=$NEW_VERSION
+ VERSIONFILE="package.json"
+ elif [ -f "pom.xml" ]
+ then
+ NEW_VERSION=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml)
+ TAG_VERSION=$NEW_VERSION
+ VERSIONFILE="pom.xml"
+ else
+ echo "ERROR: No versioning file found!"
+ exit 1
+ fi
+}
+
+# check if the version is a released version
+function check_if_releaseversion {
+ if [[ "$NEW_VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
+ then
+ echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is a SemVer released version!"
+ releaseversion=1
+ else
+ if [ "$SEMVER_STRICT" -eq "1" ]
+ then
+ echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is not a SemVer released version, SEMVER_STRICT enabled, failing!"
+ fail_validation=1
+ else
+ echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is not a SemVer released version, skipping."
+ fi
+ fi
+}
+
+# check if the version is already a tag in git
+function is_git_tag_duplicated {
+ for existing_tag in $(git tag)
+ do
+ if [ "$TAG_VERSION" = "$existing_tag" ]
+ then
+ echo "ERROR: Duplicate tag: $existing_tag"
+ exit 2
+ fi
+ done
+}
+
+# check if Dockerfiles have a released version as their parent
+function dockerfile_parentcheck {
+ if [ "$DOCKERPARENT_STRICT" -eq "0" ];
+ then
+ echo "DOCKERPARENT_STRICT is disabled - skipping parent checks"
+ else
+ while IFS= read -r -d '' dockerfile
+ do
+ echo "Checking dockerfile: '$dockerfile'"
+
+ # split on newlines
+ IFS=$'\n'
+ df_parents=($(grep "^FROM" "$dockerfile"))
+
+ # check all parents in the Dockerfile
+ for df_parent in "${df_parents[@]}"
+ do
+
+ df_pattern="[FfRrOoMm] +(--platform=[^ ]+ +)?([^@: ]+)(:([^: ]+)|@sha[^ ]+)?"
+ if [[ "$df_parent" =~ $df_pattern ]]
+ then
+
+ p_image="${BASH_REMATCH[2]}"
+ p_sha=${BASH_REMATCH[3]}
+ p_version="${BASH_REMATCH[4]}"
+
+ echo "IMAGE: '${p_image}'"
+ echo "VERSION: '$p_version'"
+ echo "SHA: '$p_sha'"
+
+ if [[ "${p_image}" == "scratch" ]]
+ then
+ echo " OK: Using the versionless 'scratch' parent: '$df_parent'"
+ elif [[ "${p_image}:${p_version}" == "gcr.io/distroless/static:nonroot" ]]
+ then
+ echo " OK: Using static distroless image with nonroot: '${p_image}:${p_version}'"
+ elif [[ "${p_version}" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
+ then
+ echo " OK: Parent '$p_image:$p_version' is a released SemVer version"
+ elif [[ "${p_sha}" =~ ^@sha256:[0-9a-f]{64}.*$ ]]
+ then
+ # allow sha256 hashes to be used as version specifiers
+ echo " OK: Parent '$p_image$p_sha' is using a specific sha256 hash as a version"
+ elif [[ "${p_version}" =~ ^.*([0-9]+)\.([0-9]+).*$ ]]
+ then
+ # handle non-SemVer versions that have a Major.Minor version specifier in the name
+ # 'ubuntu:16.04'
+ # 'postgres:10.3-alpine'
+ # 'openjdk:8-jre-alpine3.8'
+ echo " OK: Parent '$p_image:$p_version' is using a non-SemVer, but sufficient, version"
+ elif [[ -z "${p_version}" ]]
+ then
+ echo " ERROR: Parent '$p_image' is NOT using a specific version"
+ fail_validation=1
+ else
+ echo " ERROR: Parent '$p_image:$p_version' is NOT using a specific version"
+ fail_validation=1
+ fi
+
+ else
+ echo " ERROR: Couldn't find a parent image in $df_parent"
+ fi
+
+ done
+
+ done < <( find "${WORKSPACE}" -name 'Dockerfile*' ! -path "*/vendor/*" ! -name "*dockerignore" -print0 )
+ fi
+}
+
+# create a git tag
+function create_git_tag {
+ echo "Creating git tag: $TAG_VERSION"
+ git checkout "$GERRIT_PATCHSET_REVISION"
+
+ git config --global user.email "do-not-reply@opennetworking.org"
+ git config --global user.name "Jenkins"
+
+ git tag -a "$TAG_VERSION" -m "Tagged by CORD Jenkins version-tag job: $BUILD_NUMBER, for Gerrit patchset: $GERRIT_CHANGE_NUMBER"
+
+ echo "Tags including new tag:"
+ git tag -n
+
+ git push origin "$TAG_VERSION"
+}
+
+echo "Checking git repo with remotes:"
+git remote -v
+
+echo "Branches:"
+git branch -v
+
+echo "Existing git tags:"
+git tag -n
+
+read_version
+check_if_releaseversion
+
+# perform checks if a released version
+if [ "$releaseversion" -eq "1" ]
+then
+ is_git_tag_duplicated
+ dockerfile_parentcheck
+
+ if [ "$fail_validation" -eq "0" ]
+ then
+ create_git_tag
+ else
+ echo "ERROR: commit merged but failed validation, not tagging!"
+ fi
+fi
+
+exit $fail_validation
diff --git a/jjb/shell/versiontag.sh b/jjb/shell/versiontag.sh
deleted file mode 100755
index 8c14ddd..0000000
--- a/jjb/shell/versiontag.sh
+++ /dev/null
@@ -1,204 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2018-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# versiontag.sh
-# Tags a git commit with the SemVer version discovered within the commit,
-# if the tag doesn't already exist. Ignore non-SemVer commits.
-
-set -eu -o pipefail
-
-VERSIONFILE="" # file path to file containing version number
-NEW_VERSION="" # version number found in $VERSIONFILE
-TAG_VERSION="" # version file that might have a leading v to work around go mod funkyness
-
-SEMVER_STRICT=${SEMVER_STRICT:-0} # require semver versions
-
-releaseversion=0
-fail_validation=0
-
-# when not running under Jenkins, use current dir as workspace
-WORKSPACE=${WORKSPACE:-.}
-
-# find the version string in the repo, read into NEW_VERSION
-# Add additional places NEW_VERSION could be found to this function
-function read_version {
- if [ -f "VERSION" ]
- then
- NEW_VERSION=$(head -n1 "VERSION")
- VERSIONFILE="VERSION"
-
- # If this is a golang project, use funky v-prefixed versions
- if [ -f "Gopkg.toml" ] || [ -f "go.mod" ]
- then
- echo "go-based project found, using v-prefixed version for git tags: v${NEW_VERSION}"
- TAG_VERSION=v${NEW_VERSION}
- else
- TAG_VERSION=${NEW_VERSION}
- fi
-
- elif [ -f "package.json" ]
- then
- NEW_VERSION=$(python -c 'import json,sys;obj=json.load(sys.stdin); print obj["version"]' < package.json)
- TAG_VERSION=$NEW_VERSION
- VERSIONFILE="package.json"
- elif [ -f "pom.xml" ]
- then
- NEW_VERSION=$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml)
- TAG_VERSION=$NEW_VERSION
- VERSIONFILE="pom.xml"
- else
- echo "ERROR: No versioning file found!"
- exit 1
- fi
-}
-
-# check if the version is a released version
-function check_if_releaseversion {
- if [[ "$NEW_VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
- then
- echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is a SemVer released version!"
- releaseversion=1
- else
- if [ "$SEMVER_STRICT" -eq "1" ]
- then
- echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is not a SemVer released version, SEMVER_STRICT enabled, failing!"
- fail_validation=1
- else
- echo "Version string '$NEW_VERSION' in '$VERSIONFILE' is not a SemVer released version, skipping."
- fi
- fi
-}
-
-# check if the version is already a tag in git
-function is_git_tag_duplicated {
- for existing_tag in $(git tag)
- do
- if [ "$TAG_VERSION" = "$existing_tag" ]
- then
- echo "ERROR: Duplicate tag: $existing_tag"
- exit 2
- fi
- done
-}
-
-# check if Dockerfiles have a released version as their parent
-function dockerfile_parentcheck {
- while IFS= read -r -d '' dockerfile
- do
- echo "Checking dockerfile: '$dockerfile'"
-
- # split on newlines
- IFS=$'\n'
- df_parents=($(grep "^FROM" "$dockerfile"))
-
- # check all parents in the Dockerfile
- for df_parent in "${df_parents[@]}"
- do
-
- df_pattern="[FfRrOoMm] +(--platform=[^ ]+ +)?([^@: ]+)(:([^: ]+)|@sha[^ ]+)?"
- if [[ "$df_parent" =~ $df_pattern ]]
- then
-
- p_image="${BASH_REMATCH[2]}"
- p_sha=${BASH_REMATCH[3]}
- p_version="${BASH_REMATCH[4]}"
-
- echo "IMAGE: '${p_image}'"
- echo "VERSION: '$p_version'"
- echo "SHA: '$p_sha'"
-
- if [[ "${p_image}" == "scratch" ]]
- then
- echo " OK: Using the versionless 'scratch' parent: '$df_parent'"
- elif [[ "${p_image}:${p_version}" == "gcr.io/distroless/static:nonroot" ]]
- then
- echo " OK: Using static distroless image with nonroot: '${p_image}:${p_version}'"
- elif [[ "${p_version}" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]
- then
- echo " OK: Parent '$p_image:$p_version' is a released SemVer version"
- elif [[ "${p_sha}" =~ ^@sha256:[0-9a-f]{64}.*$ ]]
- then
- # allow sha256 hashes to be used as version specifiers
- echo " OK: Parent '$p_image$p_sha' is using a specific sha256 hash as a version"
- elif [[ "${p_version}" =~ ^.*([0-9]+)\.([0-9]+).*$ ]]
- then
- # handle non-SemVer versions that have a Major.Minor version specifier in the name
- # 'ubuntu:16.04'
- # 'postgres:10.3-alpine'
- # 'openjdk:8-jre-alpine3.8'
- echo " OK: Parent '$p_image:$p_version' is using a non-SemVer, but sufficient, version"
- elif [[ -z "${p_version}" ]]
- then
- echo " ERROR: Parent '$p_image' is NOT using a specific version"
- fail_validation=1
- else
- echo " ERROR: Parent '$p_image:$p_version' is NOT using a specific version"
- fail_validation=1
- fi
-
- else
- echo " ERROR: Couldn't find a parent image in $df_parent"
- fi
-
- done
-
- done < <( find "${WORKSPACE}" -name 'Dockerfile*' ! -path "*/vendor/*" ! -name "*dockerignore" -print0 )
-}
-
-
-# create a git tag
-function create_git_tag {
- echo "Creating git tag: $TAG_VERSION"
- git checkout "$GERRIT_PATCHSET_REVISION"
-
- git config --global user.email "do-not-reply@opennetworking.org"
- git config --global user.name "Jenkins"
-
- git tag -a "$TAG_VERSION" -m "Tagged by CORD Jenkins version-tag job: $BUILD_NUMBER, for Gerrit patchset: $GERRIT_CHANGE_NUMBER"
-
- echo "Tags including new tag:"
- git tag -n
-
- git push origin "$TAG_VERSION"
-}
-
-echo "Checking git repo with remotes:"
-git remote -v
-
-echo "Branches:"
-git branch -v
-
-echo "Existing git tags:"
-git tag -n
-
-read_version
-check_if_releaseversion
-
-# perform checks if a released version
-if [ "$releaseversion" -eq "1" ]
-then
- is_git_tag_duplicated
- dockerfile_parentcheck
-
- if [ "$fail_validation" -eq "0" ]
- then
- create_git_tag
- else
- echo "ERROR: commit merged but failed validation, not tagging!"
- fi
-fi
-
-exit $fail_validation
diff --git a/jjb/templates/helm-lint.yaml b/jjb/templates/helm-lint.yaml
new file mode 100644
index 0000000..215c790
--- /dev/null
+++ b/jjb/templates/helm-lint.yaml
@@ -0,0 +1,49 @@
+---
+# SPDX-FileCopyrightText: 2020-2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# check helm charts with `helm lint --strict` and that charts version is
+# updated when the contents of a chart is modified.
+
+- job-template:
+ id: helm-lint
+ name: 'helm-lint_{project}'
+ description: |
+ Created by helm-lint job-template from ci-management/jjb/templates/helm-lint.yaml
+
+ triggers:
+ - onf-infra-gerrit-trigger-patchset:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '{project}'
+ branch-regexp: '{all-branches-regexp}'
+ file-include-regexp: '{all-files-regexp}'
+ dependency-jobs: ''
+
+ properties:
+ - onf-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ scm:
+ - onf-infra-gerrit-scm:
+ git-url: '{gerrit-server-ssh-url}/$GERRIT_PROJECT'
+ refspec: '$GERRIT_REFSPEC'
+ branch: '$GERRIT_BRANCH'
+ submodule-disable: '{submodule-disable}'
+ submodule-recursive: 'false'
+ submodule-timeout: '{submodule-timeout}'
+ choosing-strategy: gerrit
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ basedir: ''
+
+ node: 'ubuntu18.04-basebuild-2c-4g'
+ project-type: freestyle
+ concurrent: true
+
+ builders:
+ - shell: !include-raw-escape: jjb/shell/helm-lint.sh
diff --git a/jjb/templates/publish-helm-repo.yaml b/jjb/templates/publish-helm-repo.yaml
new file mode 100644
index 0000000..226a0d3
--- /dev/null
+++ b/jjb/templates/publish-helm-repo.yaml
@@ -0,0 +1,49 @@
+---
+# SPDX-FileCopyrightText: 2020 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+- job-template:
+ id: publish-helm-repo
+ name: 'publish-helm-repo_{project}'
+ description: |
+ Created by publish-helm-repo job-template from
+ ci-management/jjb/templates/publish-helm-repo.yaml
+ disabled: '{disable-job}'
+
+ triggers:
+ - onf-infra-gerrit-trigger-merge:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '{project}'
+ branch-regexp: '{all-branches-regexp}'
+ file-include-regexp: '{all-files-regexp}'
+ dependency-jobs: ''
+
+ properties:
+ - onf-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+ wrappers:
+ - onf-infra-rsync-wrappers:
+ build-timeout: '{build-timeout}'
+ ssh_credential_list:
+ - 'new-cord-jenkins-ssh'
+
+ scm:
+ - onf-infra-gerrit-scm:
+ git-url: '{gerrit-server-ssh-url}/$GERRIT_PROJECT'
+ refspec: ''
+ branch: '$GERRIT_BRANCH'
+ submodule-disable: '{submodule-disable}'
+ submodule-recursive: 'false'
+ submodule-timeout: '{submodule-timeout}'
+ choosing-strategy: gerrit
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ basedir: ''
+
+ node: 'ubuntu18.04-basebuild-2c-4g'
+ project-type: freestyle
+ concurrent: false
+
+ builders:
+ - shell: !include-raw-escape: jjb/shell/publish-helm-repo.sh
diff --git a/jjb/templates/sync-dir.yaml b/jjb/templates/sync-dir.yaml
index 5f273fc..699d0c1 100644
--- a/jjb/templates/sync-dir.yaml
+++ b/jjb/templates/sync-dir.yaml
@@ -1,4 +1,7 @@
---
+# SPDX-FileCopyrightText: 2020 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
# sync built directory to a remote server
- job-template:
@@ -17,7 +20,8 @@
- string:
name: BUILD_OUTPUT_PATH
default: '{build-output-path}'
- description: 'Path of files where build output is created by build command, relative to code checkout location'
+ description: >-
+ Path of files where build output is created by build command, relative to code checkout location
- string:
name: SYNC_TARGET_SERVER
@@ -30,7 +34,7 @@
description: 'Directory path on target server where the files will be synced'
triggers:
- - cord-infra-gerrit-trigger-merge:
+ - onf-infra-gerrit-trigger-merge:
gerrit-server-name: '{gerrit-server-name}'
project-regexp: '^{project}$'
branch-regexp: '{branch-regexp}'
@@ -38,30 +42,32 @@
dependency-jobs: '{dependency-jobs}'
properties:
- - cord-infra-properties:
+ - onf-infra-properties:
build-days-to-keep: '{build-days-to-keep}'
artifact-num-to-keep: '{artifact-num-to-keep}'
wrappers:
- onf-infra-rsync-wrappers:
build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
+ ssh_credential_list:
+ - 'new-cord-jenkins-ssh'
scm:
- - lf-infra-gerrit-scm:
- git-url: '$GIT_URL/$GERRIT_PROJECT'
+ - onf-infra-gerrit-scm:
+ git-url: '{gerrit-server-ssh-url}/$GERRIT_PROJECT'
refspec: '$GERRIT_REFSPEC'
branch: '$GERRIT_BRANCH'
submodule-disable: '{submodule-disable}'
submodule-recursive: 'false'
submodule-timeout: '{submodule-timeout}'
choosing-strategy: gerrit
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ basedir: ''
node: '{build-node}'
project-type: freestyle
concurrent: true
builders:
- - shell: !include-raw-escape: ../shell/sync-dir.sh
+ - shell: !include-raw-escape: jjb/shell/sync-dir.sh
diff --git a/jjb/templates/versioning.yaml b/jjb/templates/versioning.yaml
new file mode 100644
index 0000000..82cfa20
--- /dev/null
+++ b/jjb/templates/versioning.yaml
@@ -0,0 +1,177 @@
+---
+# SPDX-FileCopyrightText: 2018-2022 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# versioning jobs for tagging/releasing software
+
+# Versioning conventions:
+#
+# 1. There is a 1:1 relationship between SemVer _release_ versions described
+# in the commit and the git tag applied to that commit by Jenkins.
+#
+# 2. Non-release versions (ex: 1.0.1-dev3, etc.) can exist in multiple
+# commits, and don't trigger creation of git tags.
+#
+# 3. Git history is public, and therefore shouldn't be rewritten to abandon
+# already merged commits
+#
+# 4. Reverting a commit leaves it in history, so if a broken version is
+# released, the correct action is to make a new fixed version, not try to
+# fix the released version
+#
+# For reference: https://jira.opencord.org/browse/CORD-3117
+
+- job-template:
+ id: tag-check
+ name: "tag-check_{project}"
+ description: |
+ Created by {id} job-template from ci-management/jjb/templates/versioning.yaml
+ Checks for changes to version files, and that they don't duplicate tags
+ already in the git repo.
+ disabled: '{disable-job}'
+
+ triggers:
+ - onf-infra-gerrit-trigger-patchset:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '{project-regexp}'
+ branch-regexp: '{branch-regexp}'
+ file-include-regexp: '{all-files-regexp}'
+ dependency-jobs: '{dependency-jobs}'
+
+ properties:
+ - onf-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{gerrit-ssh-credential}'
+
+ scm:
+ - onf-infra-gerrit-scm:
+ git-url: '{gerrit-server-ssh-url}/$GERRIT_PROJECT'
+ refspec: '$GERRIT_REFSPEC'
+ branch: '$GERRIT_BRANCH'
+ submodule-disable: '{submodule-disable}'
+ submodule-recursive: '{submodule-recursive}'
+ submodule-timeout: '{submodule-timeout}'
+ choosing-strategy: gerrit
+ jenkins-ssh-credential: '{gerrit-ssh-credential}'
+ basedir: '$GERRIT_PROJECT'
+
+ node: '{build-node}'
+ project-type: freestyle
+ concurrent: true
+
+ builders:
+ - inject:
+ properties-content: |
+ SEMVER_STRICT={semver-strict}
+ BASEDIR=$GERRIT_PROJECT
+ - shell: !include-raw-escape: jjb/shell/tag-check.sh
+
+- job-template:
+ id: version-tag
+ name: "version-tag_{project}"
+ disabled: '{disable-job}'
+ description: |
+ Created by {id} job-template from ci-management/jjb/templates/versioning.yaml
+ When a patch is merged, check if it contains a SemVer released version
+ file and if so tags thxe commit in git with that same version.
+
+ triggers:
+ - onf-infra-gerrit-trigger-merge:
+ gerrit-server-name: '{gerrit-server-name}'
+ project-regexp: '{project-regexp}'
+ branch-regexp: '{all-branches-regexp}'
+ file-include-regexp: '{all-files-regexp}'
+ dependency-jobs: '{dependency-jobs}'
+
+ properties:
+ - onf-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ scm:
+ - onf-infra-gerrit-scm:
+ git-url: '{gerrit-server-ssh-url}/$GERRIT_PROJECT'
+ refspec: '$GERRIT_REFSPEC'
+ branch: '$GERRIT_BRANCH'
+ submodule-disable: '{submodule-disable}'
+ submodule-recursive: 'false'
+ submodule-timeout: '{submodule-timeout}'
+ choosing-strategy: gerrit
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+ basedir: ''
+
+ node: '{build-node}'
+ project-type: freestyle
+ concurrent: true
+
+ builders:
+ - inject:
+ properties-content: |
+ SEMVER_STRICT={semver-strict}
+ BASEDIR=$GERRIT_PROJECT
+ - shell: !include-raw-escape: jjb/shell/version-tag.sh
+
+- job-template:
+ id: version-tag-github
+ name: "version-tag_{project}"
+ disabled: '{disable-job}'
+ description: |
+ Created by {id} job-template from ci-management/jjb/templates/versioning.yaml
+ When a patch is merged, check if it contains a SemVer released version
+ file and if so tags thxe commit in git with that same version.
+
+ properties:
+ - onf-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+ artifact-num-to-keep: '{artifact-num-to-keep}'
+ - github:
+ url: 'https://github.com/{github-organization}/{project}'
+
+ wrappers:
+ - lf-infra-wrappers:
+ build-timeout: '{build-timeout}'
+ jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+ parameters:
+ - onf-infra-github-pr-merge-parameters:
+ repo-name: '{project}'
+ repo-url: '{github-ssh-url}{github-organization}/{project}.git'
+ branch: '{branch}'
+ commitHash: '{branch}'
+
+ triggers:
+ - onf-infra-github-pr-trigger:
+ github-token: '{github-token}'
+ status-context: 'Aether Jenkins - Makefile test'
+ trigger-phrase: '.*test\W+(make|makefile|version|versioning).*|{trigger-phrase}'
+ white-list-target-branches: '{white-list-target-branches}'
+ github_pr_org_list: '{obj:github_pr_org_list}'
+
+ scm:
+ - onf-infra-github-scm:
+ url: '{github-ssh-url}{github-organization}/{project}'
+ refspec: "{github-refspec-branch}"
+ branch: "$commitHash"
+ submodule-disable: "{submodule-disable}"
+ submodule-recursive: "{submodule-recursive}"
+ submodule-timeout: "{submodule-timeout}"
+ choosing-strategy: default
+ jenkins-ssh-credential: "{github-ssh-credential}"
+ basedir: ''
+
+ node: '{build-node}'
+ project-type: freestyle
+ concurrent: true
+
+ builders:
+ - shell: !include-raw-escape: jjb/shell/version-tag.sh
diff --git a/jjb/verify/helm-charts.yaml b/jjb/verify/helm-charts.yaml
deleted file mode 100644
index dc6d904..0000000
--- a/jjb/verify/helm-charts.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-# verification jobs for 'helm-charts' repo
-
-- project:
- name: helm-charts
- project: '{name}'
-
- jobs:
- - 'verify-helm-charts-jobs':
- branch-regexp: '{modern-branches-regexp}'
-
-- job-group:
- name: 'verify-helm-charts-jobs'
- jobs:
- - 'verify-licensed'
- - 'tag-collision-reject':
- dependency-jobs: 'verify_helm-charts_licensed'
- - 'verify-helm-lint':
- dependency-jobs: 'verify_helm-charts_tag-collision'
-
diff --git a/jjb/versioning.yaml b/jjb/versioning.yaml
deleted file mode 100644
index b4103c2..0000000
--- a/jjb/versioning.yaml
+++ /dev/null
@@ -1,123 +0,0 @@
----
-# CORD versioning jobs for tagging/releasing software
-
-# CORD versioning conventions:
-#
-# 1. There is a 1:1 relationship between SemVer _release_ versions described
-# in the commit and the git tag applied to that commit by Jenkins.
-#
-# 2. Non-release versions (ex: 1.0.1-dev3, etc.) can exist in multiple
-# commits, and don't trigger creation of git tags.
-#
-# 3. Git history is public, and therefore shouldn't be rewritten to abandon
-# already merged commits
-#
-# 4. Reverting a commit leaves it in history, so if a broken version is
-# released, the correct action is to make a new fixed version, not try to
-# fix the released version
-#
-# See also: https://jira.opencord.org/browse/CORD-3117
-
-- project:
- name: versioning-jobs
-
- branch-regexp: '{all-branches-regexp}'
- project-regexp: '{version-tag-projects-regexp}'
-
- jobs:
- - 'version-tag'
-
-- job-template:
- id: tag-collision-reject
- name: "verify_{project}_tag-collision"
- description: |
- Created by {id} job-template from ci-management/jjb/versioning.yaml
- Checks for changes to version files, and that they don't duplicate tags
- already in the git repo.
-
- triggers:
- - cord-infra-gerrit-trigger-patchset:
- gerrit-server-name: '{gerrit-server-name}'
- project-regexp: '^{project}$'
- branch-regexp: '{branch-regexp}'
- file-include-regexp: '{all-files-regexp}'
- dependency-jobs: '{dependency-jobs}'
-
- properties:
- - cord-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
- artifact-num-to-keep: '{artifact-num-to-keep}'
-
- wrappers:
- - lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
-
- scm:
- - lf-infra-gerrit-scm:
- git-url: '$GIT_URL/$GERRIT_PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-disable: '{submodule-disable}'
- submodule-recursive: 'false'
- submodule-timeout: '{submodule-timeout}'
- choosing-strategy: gerrit
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
-
- node: '{build-node}'
- project-type: freestyle
- concurrent: true
-
- builders:
- - inject:
- properties-content:
- SEMVER_STRICT={semver-strict}
- - shell: !include-raw-escape: shell/tagcollisionreject.sh
-
-
-- job-template:
- id: version-tag
- name: "version-tag"
- description: |
- Created by {id} job-template from ci-management/jjb/versioning.yaml
- When a patch is merged, check if it contains a SemVer released version
- file and if so tags the commit in git with that same version.
-
- triggers:
- - cord-infra-gerrit-trigger-merge:
- gerrit-server-name: '{gerrit-server-name}'
- project-regexp: '{project-regexp}'
- branch-regexp: '{branch-regexp}'
- file-include-regexp: '{all-files-regexp}'
- dependency-jobs: '{dependency-jobs}'
-
- properties:
- - cord-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
- artifact-num-to-keep: '{artifact-num-to-keep}'
-
- wrappers:
- - lf-infra-wrappers:
- build-timeout: '{build-timeout}'
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
-
- scm:
- - lf-infra-gerrit-scm:
- git-url: '$GIT_URL/$GERRIT_PROJECT'
- refspec: '$GERRIT_REFSPEC'
- branch: '$GERRIT_BRANCH'
- submodule-disable: '{submodule-disable}'
- submodule-recursive: 'false'
- submodule-timeout: '{submodule-timeout}'
- choosing-strategy: gerrit
- jenkins-ssh-credential: '{gerrit-ssh-credential}'
-
- node: '{build-node}'
- project-type: freestyle
- concurrent: true
-
- builders:
- - inject:
- properties-content:
- SEMVER_STRICT={semver-strict}
- - shell: !include-raw-escape: shell/versiontag.sh
diff --git a/jjb/xos-auth.yaml b/jjb/xos-auth.yaml
index 63a81a1..bd4c92c 100644
--- a/jjb/xos-auth.yaml
+++ b/jjb/xos-auth.yaml
@@ -37,8 +37,8 @@
concurrent: true
builders:
- - cord-infra-gerrit-repo-patch:
- destination-dir: 'cord'
+ - onf-infra-gerrit-repo-patch:
+ basedir: 'cord'
project: '$GERRIT_PROJECT'
change-number: '$GERRIT_CHANGE_NUMBER'
patchset-number: '$GERRIT_PATCHSET_NUMBER'
diff --git a/jjb/xos-unit.yaml b/jjb/xos-unit.yaml
index 12190b5..43ad733 100644
--- a/jjb/xos-unit.yaml
+++ b/jjb/xos-unit.yaml
@@ -37,8 +37,8 @@
concurrent: true
builders:
- - cord-infra-gerrit-repo-patch:
- destination-dir: 'cord'
+ - onf-infra-gerrit-repo-patch:
+ basedir: 'cord'
project: '$GERRIT_PROJECT'
change-number: '$GERRIT_CHANGE_NUMBER'
patchset-number: '$GERRIT_PATCHSET_NUMBER'