summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO.yaml3
-rw-r--r--jjb/fuel/fuel-docker-jobs.yaml10
-rw-r--r--jjb/functest/functest-virtual.yaml200
-rw-r--r--jjb/global/releng-macros.yaml26
-rwxr-xr-xjjb/releng/branch-or-tag.sh40
-rw-r--r--jjb/releng/releng-release-create-branch.sh61
-rw-r--r--jjb/releng/releng-release-jobs.yaml5
-rw-r--r--jjb/releng/releng-release-tagging.sh4
-rw-r--r--releases/gambia/sandbox.yaml8
9 files changed, 288 insertions, 69 deletions
diff --git a/INFO.yaml b/INFO.yaml
index d265be37c..6800a9f43 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -132,3 +132,6 @@ tsc:
- type: 'promotion'
name: 'Luke Hinds'
link: ''
+ - type: 'promotion'
+ name: 'Alexandru Avadanii'
+ link: 'https://gerrit.opnfv.org/gerrit/#/c/64499/'
diff --git a/jjb/fuel/fuel-docker-jobs.yaml b/jjb/fuel/fuel-docker-jobs.yaml
index c06848e56..473542d85 100644
--- a/jjb/fuel/fuel-docker-jobs.yaml
+++ b/jjb/fuel/fuel-docker-jobs.yaml
@@ -29,6 +29,7 @@
node-parameters: false
predefined-parameters: |
PUSH_IMAGE=$PUSH_IMAGE
+ CACHE_INVALIDATE=$CACHE_INVALIDATE
COMMIT_ID=$COMMIT_ID
GERRIT_REFNAME=$GERRIT_REFNAME
kill-phase-on: FAILURE
@@ -69,6 +70,11 @@
- throttle:
max-per-node: 1
option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'fuel-docker-.*'
+ blocking-level: 'NODE'
scm:
- git-scm
@@ -187,6 +193,10 @@
default: "true"
description: "To enable/disable pushing the image to Dockerhub."
- string:
+ name: CACHE_INVALIDATE
+ default: "0"
+ description: "Set to any non-zero value to force a Docker cache cleanup"
+ - string:
name: COMMIT_ID
default: ""
description: "commit id to make a snapshot docker image"
diff --git a/jjb/functest/functest-virtual.yaml b/jjb/functest/functest-virtual.yaml
index c383d7c13..cd65f9643 100644
--- a/jjb/functest/functest-virtual.yaml
+++ b/jjb/functest/functest-virtual.yaml
@@ -3,9 +3,12 @@
name: 'functest-defaultparameters'
repo: opnfv
tag:
- - gambia
- - hunter
- - latest
+ - gambia:
+ branch: stable/gambia
+ - hunter:
+ branch: stable/hunter
+ - latest:
+ branch: master
- job-template:
name: '{repo}-functest-{container}-{tag}-pull'
@@ -37,14 +40,6 @@
- name: '{repo}-functest-vnf-{tag}-pull'
- name: '{repo}-functest-features-{tag}-pull'
-- functest-buildparameters: &functest-buildparameters
- name: 'functest-buildparameters'
- parameters:
- - functest-virtual-defaults
- - string:
- name: branch
- default: master
-
- job-template:
name: '{repo}-functest-{container}-{test}-{tag}-run'
parameters:
@@ -161,6 +156,7 @@
test:
- tempest_full
- tempest_scenario
+ - rally_full
jobs:
- '{repo}-functest-{container}-{test}-{tag}-run'
@@ -169,6 +165,7 @@
projects:
- name: '{repo}-functest-components-tempest_full-{tag}-run'
- name: '{repo}-functest-components-tempest_scenario-{tag}-run'
+ # - name: '{repo}-functest-components-rally_full-{tag}-run'
- project:
name: repo-functest-vnf-{test}-{tag}-run
@@ -220,6 +217,15 @@
name: '{repo}-functest-{tag}-daily'
<<: *functest-defaultparameters
project-type: multijob
+ triggers:
+ - timed: '@daily'
+ properties:
+ - build-blocker:
+ use-build-blocker: true
+ block-level: 'NODE'
+ queue-scanning: 'BUILDABLE'
+ blocking-jobs:
+ - '{repo}-functest-.*-.*'
parameters:
- functest-virtual-defaults
builders:
@@ -238,9 +244,9 @@
- multijob:
name: components
<<: *functest-componentsjobs
- - multijob:
- name: vnf
- <<: *functest-vnfjobs
+ # - multijob:
+ # name: vnf
+ # <<: *functest-vnfjobs
- multijob:
name: features
<<: *functest-featuresjobs
@@ -251,32 +257,70 @@
jobs:
- '{repo}-functest-{tag}-daily'
+- functest-gateparameters: &functest-gateparameters
+ name: 'functest-gateparameters'
+ parameters:
+ - functest-virtual-defaults
+
+- functest-checkparameters: &functest-checkparameters
+ name: 'functest-checkparameters'
+ parameters:
+ - functest-virtual-defaults
+ - string:
+ name: BRANCH
+ default: '{branch}'
+
+- builder:
+ name: build-containers
+ builders:
+ - shell: |
+ case "{container}" in
+ "components")
+ args="" ;;
+ *)
+ args="--build-arg BRANCH={ref}" ;;
+ esac
+ cd docker/{container}
+ sudo docker build \
+ ${{args}} --pull=false --no-cache --force-rm=true \
+ -t {repo}/functest-{container}:{tag} .
+
- scm:
- name: functest-gerrit
+ name: functest-scm
scm:
- git:
url: https://gerrit.opnfv.org/gerrit/functest
refspec: '+refs/changes/*:refs/changes/*'
branches:
- - ${branch}
+ - '{ref}'
+
+- functest-buildparameters: &functest-buildparameters
+ name: 'functest-buildparameters'
+ container: '{container}'
+ repo: '{repo}'
+ tag: '{tag}'
- job-template:
- name: '{repo}-functest-{container}-{tag}-build'
- <<: *functest-buildparameters
+ name: '{repo}-functest-{container}-{tag}-gate'
+ <<: *functest-gateparameters
scm:
- - functest-gerrit
+ - functest-scm:
+ ref: $GERRIT_REFSPEC
builders:
- - shell: |
- case "{container}" in
- "components")
- args="" ;;
- *)
- args="--build-arg BRANCH=${{branch}}" ;;
- esac
- cd docker/$(echo {container} |cut -d\- -f 2)
- sudo docker build \
- ${{args}} --pull=false --no-cache --force-rm=true \
- -t {repo}/functest-{container}:{tag} .
+ - build-containers:
+ ref: $GERRIT_REFSPEC
+ <<: *functest-buildparameters
+
+- job-template:
+ name: '{repo}-functest-{container}-{tag}-check'
+ <<: *functest-checkparameters
+ scm:
+ - functest-scm:
+ ref: $BRANCH
+ builders:
+ - build-containers:
+ ref: $BRANCH
+ <<: *functest-buildparameters
- project:
name: repo-functest-container-tag-build
@@ -291,7 +335,8 @@
- vnf
- features
jobs:
- - '{repo}-functest-{container}-{tag}-build'
+ - '{repo}-functest-{container}-{tag}-gate'
+ - '{repo}-functest-{container}-{tag}-check'
- functest-projectparameters: &functest-projectparameters
name: 'functest-projectparameters'
@@ -300,32 +345,44 @@
- job-template:
name: '{repo}-functest-{tag}-gate'
project-type: multijob
- <<: *functest-buildparameters
+ <<: *functest-gateparameters
+ triggers:
+ - gerrit-trigger-patchset-created:
+ project: 'functest'
+ branch: '{branch}'
+ files: '**'
+ properties:
+ - build-blocker:
+ use-build-blocker: true
+ block-level: 'NODE'
+ queue-scanning: 'BUILDABLE'
+ blocking-jobs:
+ - '{repo}-functest-.*-.*'
builders:
- multijob:
name: build functest-core
projects:
- - name: '{repo}-functest-core-{tag}-build'
+ - name: '{repo}-functest-core-{tag}-gate'
<<: *functest-projectparameters
- multijob:
name: build functest-tempest
projects:
- - name: '{repo}-functest-tempest-{tag}-build'
+ - name: '{repo}-functest-tempest-{tag}-gate'
<<: *functest-projectparameters
- multijob:
name: build all remaining contrainers
projects:
- - name: '{repo}-functest-healthcheck-{tag}-build'
+ - name: '{repo}-functest-healthcheck-{tag}-gate'
<<: *functest-projectparameters
- - name: '{repo}-functest-smoke-{tag}-build'
+ - name: '{repo}-functest-smoke-{tag}-gate'
<<: *functest-projectparameters
- - name: '{repo}-functest-benchmarking-{tag}-build'
+ - name: '{repo}-functest-benchmarking-{tag}-gate'
<<: *functest-projectparameters
- - name: '{repo}-functest-components-{tag}-build'
+ - name: '{repo}-functest-components-{tag}-gate'
<<: *functest-projectparameters
- - name: '{repo}-functest-vnf-{tag}-build'
+ - name: '{repo}-functest-vnf-{tag}-gate'
<<: *functest-projectparameters
- - name: '{repo}-functest-features-{tag}-build'
+ - name: '{repo}-functest-features-{tag}-gate'
<<: *functest-projectparameters
- multijob:
name: healthcheck
@@ -339,15 +396,72 @@
- multijob:
name: components
<<: *functest-componentsjobs
+ # - multijob:
+ # name: vnf
+ # <<: *functest-vnfjobs
+ - multijob:
+ name: features
+ <<: *functest-featuresjobs
+
+- job-template:
+ name: '{repo}-functest-{tag}-check'
+ project-type: multijob
+ <<: *functest-checkparameters
+ properties:
+ - build-blocker:
+ use-build-blocker: true
+ block-level: 'NODE'
+ queue-scanning: 'BUILDABLE'
+ blocking-jobs:
+ - '{repo}-functest-.*-.*'
+ builders:
+ - multijob:
+ name: build functest-core
+ projects:
+ - name: '{repo}-functest-core-{tag}-check'
+ <<: *functest-projectparameters
+ - multijob:
+ name: build functest-tempest
+ projects:
+ - name: '{repo}-functest-tempest-{tag}-check'
+ <<: *functest-projectparameters
+ - multijob:
+ name: build all remaining contrainers
+ projects:
+ - name: '{repo}-functest-healthcheck-{tag}-check'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-smoke-{tag}-check'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-benchmarking-{tag}-check'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-components-{tag}-check'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-vnf-{tag}-check'
+ <<: *functest-projectparameters
+ - name: '{repo}-functest-features-{tag}-check'
+ <<: *functest-projectparameters
- multijob:
- name: vnf
- <<: *functest-vnfjobs
+ name: healthcheck
+ <<: *functest-healthcheckjobs
+ - multijob:
+ name: smoke
+ <<: *functest-smokejobs
+ - multijob:
+ name: benchmarking
+ <<: *functest-benchmarkingjobs
+ - multijob:
+ name: components
+ <<: *functest-componentsjobs
+ # - multijob:
+ # name: vnf
+ # <<: *functest-vnfjobs
- multijob:
name: features
<<: *functest-featuresjobs
- project:
- name: repo-functest-tag-gate
+ name: repo-functest-tag-build
<<: *functest-defaultparameters
jobs:
- '{repo}-functest-{tag}-gate'
+ - '{repo}-functest-{tag}-check'
diff --git a/jjb/global/releng-macros.yaml b/jjb/global/releng-macros.yaml
index fe24ed56d..6c37bbbd9 100644
--- a/jjb/global/releng-macros.yaml
+++ b/jjb/global/releng-macros.yaml
@@ -200,6 +200,32 @@
notbuilt: false
- trigger:
+ name: gerrit-trigger-patchset-approved
+ triggers:
+ - gerrit:
+ server-name: 'gerrit.opnfv.org'
+ trigger-on:
+ - comment-added-event:
+ approval-category: 'CRVW'
+ approval-value: 2
+ - comment-added-contains-event:
+ comment-contains-value: 'gate'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: '{project}'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: 'ANT'
+ pattern: '{files}'
+ skip-vote:
+ successful: false
+ failed: false
+ unstable: false
+ notbuilt: false
+
+- trigger:
name: gerrit-trigger-change-merged
triggers:
- gerrit:
diff --git a/jjb/releng/branch-or-tag.sh b/jjb/releng/branch-or-tag.sh
new file mode 100755
index 000000000..0fdb24fca
--- /dev/null
+++ b/jjb/releng/branch-or-tag.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+set -e -o pipefail
+
+GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit}
+STREAM=${STREAM:-'nostream'}
+RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+
+echo "--> Verifying $RELEASE_FILES."
+for release_file in $RELEASE_FILES; do
+ # Verify the release file schema
+ python releases/scripts/verify_schema.py \
+ -s releases/schema.yaml \
+ -y $release_file
+done
+
+for release_file in $RELEASE_FILES; do
+ while read -r repo branch ref; do
+ echo "$repo" "$branch" "$ref"
+ unset branch_actual
+ branch_actual="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/heads/$branch" | awk '{print $1}')"
+
+ if [ -n "$branch_actual" ]; then
+ echo "$repo refs/heads/$branch already exists at $branch_actual"
+ echo "RUN releng-release-create-venv.sh"
+ source jjb/releng/releng-release-tagging.sh
+ else
+ echo "This is a branching job"
+ source jjb/releng/releng-release-create-branch.sh
+ fi
+
+ done < <(python releases/scripts/repos.py -b -f "$release_file")
+done
diff --git a/jjb/releng/releng-release-create-branch.sh b/jjb/releng/releng-release-create-branch.sh
index 663ff19e7..7e91d5ace 100644
--- a/jjb/releng/releng-release-create-branch.sh
+++ b/jjb/releng/releng-release-create-branch.sh
@@ -9,6 +9,10 @@
##############################################################################
set -xe
+GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit}
+STREAM=${STREAM:-'nostream'}
+RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+
# Configure the git user/email as we'll be pushing up changes
git config --global user.name "jenkins-ci"
git config --global user.email "jenkins-opnfv-ci@opnfv.org"
@@ -17,34 +21,53 @@ git config --global user.email "jenkins-opnfv-ci@opnfv.org"
curl -kLo .git/hooks/commit-msg https://gerrit.opnfv.org/gerrit/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
-# Activate virtualenv, supressing shellcheck warning
-# shellcheck source=/dev/null
-. $WORKSPACE/venv/bin/activate
-pip install -r releases/scripts/requirements.txt
+clone_repo(){
+echo "--> Cloning $repo"
+if [ ! -d $repo ]; then
+ git clone $GIT_URL/$repo.git $repo
+fi
+}
-STREAM=${STREAM:-'nostream'}
-RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
+check_if_ref_exists(){
+clone_repo
+cd "$repo"
+if git rev-list refs/heads/master | grep "$ref"; then
+ echo "$ref exists"
+ REF_EXISTS=true
+ cd -
+else
+ echo "$ref Does not exist please submit a valid ref for branching"
+ exit 1
+fi
+}
-for release_file in $RELEASE_FILES; do
+run_merge(){
+unset NEW_FILES
+if [[ $REF_EXISTS = true && "$JOB_NAME" =~ "merge" ]]; then
+ ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+ python releases/scripts/create_jobs.py -f $release_file
+ NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
+fi
+if [ -n "$NEW_FILES" ]; then
+ git add $NEW_FILES
+ git commit -sm "Create Stable Branch Jobs for $(basename $release_file .yaml)"
+ git push origin HEAD:refs/for/master
+fi
+}
+main(){
+for release_file in $RELEASE_FILES; do
while read -r repo branch ref; do
-
echo "$repo" "$branch" "$ref"
branches="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/heads/$branch")"
-
if ! [ -z "$branches" ]; then
echo "refs/heads/$branch already exists at $ref ($branches)"
else
- ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+ run_merge
fi
-
done < <(python releases/scripts/repos.py -b -f "$release_file")
-
- python releases/scripts/create_jobs.py -f $release_file
- NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
- if [ -n "$NEW_FILES" ]; then
- git add $NEW_FILES
- git commit -sm "Create Stable Branch Jobs for $(basename $release_file .yaml)"
- git push origin HEAD:refs/for/master
- fi
done
+}
+
+check_if_ref_exists
+main
diff --git a/jjb/releng/releng-release-jobs.yaml b/jjb/releng/releng-release-jobs.yaml
index 3136d7855..d79771fea 100644
--- a/jjb/releng/releng-release-jobs.yaml
+++ b/jjb/releng/releng-release-jobs.yaml
@@ -66,7 +66,7 @@
builders:
- shell: !include-raw-escape:
- releng-release-create-venv.sh
- - releng-release-tagging.sh
+ - branch-or-tag.sh
publishers:
- email-jenkins-admins-on-failure
@@ -106,8 +106,7 @@
builders:
- shell: !include-raw-escape:
- releng-release-create-venv.sh
- - releng-release-tagging.sh
- - releng-release-create-branch.sh
+ - branch-or-tag.sh
publishers:
- email-jenkins-admins-on-failure
diff --git a/jjb/releng/releng-release-tagging.sh b/jjb/releng/releng-release-tagging.sh
index f8cf9c8ea..88927e54d 100644
--- a/jjb/releng/releng-release-tagging.sh
+++ b/jjb/releng/releng-release-tagging.sh
@@ -15,10 +15,6 @@ RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
echo "--> Verifying $RELEASE_FILES."
for release_file in $RELEASE_FILES; do
- # Verify the release file schema
- python releases/scripts/verify_schema.py \
- -s releases/schema.yaml \
- -y $release_file
# Verify tag for each repo exist and are attached to commits on stable-branch
while read -r repo tag ref
diff --git a/releases/gambia/sandbox.yaml b/releases/gambia/sandbox.yaml
index 16f2df24e..d08bc3994 100644
--- a/releases/gambia/sandbox.yaml
+++ b/releases/gambia/sandbox.yaml
@@ -7,3 +7,11 @@ branches:
- name: stable/gambia
location:
sandbox: c2012f5b642f17e6024db631b833414114a329d5
+
+releases:
+ - version: opnfv-7.0.0
+ location:
+ sandbox: c2012f5b642f17e6024db631b833414114a329d5
+ - version: opnfv-7.0.1
+ location:
+ sandbox: c2012f5b642f17e6024db631b833414114a329d5