diff options
Diffstat (limited to 'jjb/releng')
-rw-r--r-- | jjb/releng/artifact-cleanup.yaml | 41 | ||||
-rwxr-xr-x | jjb/releng/branch-or-tag.sh | 6 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker-arm.yaml | 211 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker-custom.yaml | 111 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker.sh | 164 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker.yaml | 467 | ||||
-rw-r--r-- | jjb/releng/opnfv-lint.yaml | 186 | ||||
-rw-r--r-- | jjb/releng/opnfv-repo-archiver.sh | 68 | ||||
-rw-r--r-- | jjb/releng/opnfv-utils.yaml | 216 | ||||
-rw-r--r-- | jjb/releng/releng-info-vote.yaml | 6 | ||||
-rw-r--r-- | jjb/releng/releng-jobs.yaml | 496 | ||||
-rw-r--r-- | jjb/releng/releng-release-create-branch.sh | 8 | ||||
-rw-r--r-- | jjb/releng/releng-release-create-venv.sh | 19 | ||||
-rw-r--r-- | jjb/releng/releng-release-jobs.yaml | 122 | ||||
-rw-r--r-- | jjb/releng/releng-release-tagging.sh | 5 | ||||
-rw-r--r-- | jjb/releng/releng-rtd-jobs.yaml | 16 | ||||
-rw-r--r-- | jjb/releng/releng-views.yaml | 17 |
17 files changed, 517 insertions, 1642 deletions
diff --git a/jjb/releng/artifact-cleanup.yaml b/jjb/releng/artifact-cleanup.yaml deleted file mode 100644 index 2a250618c..000000000 --- a/jjb/releng/artifact-cleanup.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -- project: - name: releng-artifact-cleanup - - project: 'releng' - - jobs: - - 'releng-artifact-cleanup-daily-{stream}' - - stream: - - master: - branch: '{stream}' - gs-pathname: '' - - -- job-template: - name: 'releng-artifact-cleanup-daily-{stream}' - - # Job template for daily builders - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - # branch: branch (eg. stable) - node: master - - disabled: false - - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - scm: - - git-scm - - triggers: - - timed: 'H H * * *' - - builders: - - shell: | - $WORKSPACE/utils/retention_script.sh diff --git a/jjb/releng/branch-or-tag.sh b/jjb/releng/branch-or-tag.sh index 0fdb24fca..f9767eca1 100755 --- a/jjb/releng/branch-or-tag.sh +++ b/jjb/releng/branch-or-tag.sh @@ -8,6 +8,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## set -e -o pipefail +set -x GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit} STREAM=${STREAM:-'nostream'} @@ -16,7 +17,7 @@ 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 \ + python3 releases/scripts/verify_schema.py \ -s releases/schema.yaml \ -y $release_file done @@ -29,12 +30,11 @@ for release_file in $RELEASE_FILES; do 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 < <(python3 releases/scripts/repos.py -b -f "$release_file") done diff --git a/jjb/releng/opnfv-docker-arm.yaml b/jjb/releng/opnfv-docker-arm.yaml deleted file mode 100644 index a259da587..000000000 --- a/jjb/releng/opnfv-docker-arm.yaml +++ /dev/null @@ -1,211 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## - -- project: - - name: opnfv-docker-arm - - master: &master - stream: master - branch: '{stream}' - disabled: false - euphrates: &euphrates - stream: euphrates - branch: 'stable/{stream}' - disabled: false - fraser: &fraser - stream: fraser - branch: 'stable/{stream}' - disabled: false - gambia: &gambia - stream: gambia - branch: 'stable/{stream}' - disabled: false - hunter: &hunter - stream: hunter - branch: 'stable/{stream}' - disabled: false - dovetail-arm-receivers: &dovetail-arm-receivers - receivers: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - storperf-arm-receivers: &storperf-arm-receivers - receivers: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - mark.beierl@emc.com - yardstick-arm-receivers: &yardstick-arm-receivers - receivers: > - cristina.pauna@enea.com - alexandru.avadanii@enea.com - delia.popescu@enea.com - other-receivers: &other-receivers - receivers: '' - - dockerfile: "Dockerfile" - dockerdir: "docker" - docker_repo_name: "opnfv/{project}_aarch64" - arch_tag: "" - extra_build_args: "" - - # yamllint disable rule:key-duplicates - dockerrepo: - # projects with jobs for master - - 'dovetail': - project: 'dovetail' - <<: *master - <<: *dovetail-arm-receivers - - 'storperf-master': - project: 'storperf' - dockerdir: 'docker/storperf-master' - docker_repo_name: 'opnfv/storperf-master' - arch_tag: 'aarch64' - <<: *master - <<: *storperf-arm-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - docker_repo_name: 'opnfv/storperf-graphite' - arch_tag: 'aarch64' - <<: *master - <<: *storperf-arm-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - docker_repo_name: 'opnfv/storperf-httpfrontend' - arch_tag: 'aarch64' - <<: *master - <<: *storperf-arm-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - docker_repo_name: 'opnfv/storperf-reporting' - arch_tag: 'aarch64' - <<: *master - <<: *storperf-arm-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - docker_repo_name: 'opnfv/storperf-swaggerui' - arch_tag: 'aarch64' - <<: *master - <<: *storperf-arm-receivers - - 'yardstick': - project: 'yardstick' - <<: *master - <<: *yardstick-arm-receivers - # projects with jobs for stable/euphrates - - 'dovetail': - project: 'dovetail' - <<: *euphrates - <<: *dovetail-arm-receivers - - 'storperf-master': - project: 'storperf' - dockerdir: 'docker/storperf-master' - docker_repo_name: 'opnfv/storperf-master' - arch_tag: 'aarch64' - <<: *hunter - <<: *storperf-arm-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - docker_repo_name: 'opnfv/storperf-graphite' - arch_tag: 'aarch64' - <<: *hunter - <<: *storperf-arm-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - docker_repo_name: 'opnfv/storperf-httpfrontend' - arch_tag: 'aarch64' - <<: *hunter - <<: *storperf-arm-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - docker_repo_name: 'opnfv/storperf-reporting' - arch_tag: 'aarch64' - <<: *hunter - <<: *storperf-arm-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - docker_repo_name: 'opnfv/storperf-swaggerui' - arch_tag: 'aarch64' - <<: *hunter - <<: *storperf-arm-receivers - - 'yardstick': - project: 'yardstick' - <<: *hunter - <<: *yardstick-arm-receivers - - # yamllint enable rule:key-duplicates - jobs: - - '{dockerrepo}-docker-build-arm-push-{stream}' - -######################## -# job templates -######################## -- job-template: - name: '{dockerrepo}-docker-build-arm-push-{stream}' - - disabled: '{obj:disabled}' - - parameters: ¶meters - - project-parameter: - project: '{project}' - branch: '{branch}' - - 'opnfv-build-ubuntu-arm-defaults' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - string: - name: DOCKER_REPO_NAME - default: "{docker_repo_name}" - description: "Dockerhub repo to be pushed to." - - string: - name: GERRIT_REFNAME - default: "" - description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1" - - string: - name: DOCKER_DIR - default: "{dockerdir}" - description: "Directory containing files needed by the Dockerfile" - - string: - name: DOCKERFILE - default: "{dockerfile}" - description: "Dockerfile to use for creating the image." - - string: - name: ARCH_TAG - default: "{arch_tag}" - description: "If set, this value will be added to the docker image tag" - - string: - name: EXTRA_BUILD_ARGS - default: "{extra_build_args}" - description: "Whitespace separated key=value pairs. If set, these args will be used to build docker image" - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - builders: &builders - - shell: - !include-raw-escape: ./opnfv-docker.sh - - triggers: - - pollscm: - cron: "*/30 * * * *" - - gerrit-trigger-tag-created: - project: '{project}' - - publishers: - - email: - recipients: '{receivers}' - - email-jenkins-admins-on-failure diff --git a/jjb/releng/opnfv-docker-custom.yaml b/jjb/releng/opnfv-docker-custom.yaml deleted file mode 100644 index e564ab5ef..000000000 --- a/jjb/releng/opnfv-docker-custom.yaml +++ /dev/null @@ -1,111 +0,0 @@ ---- -######################## -# Job configuration for opnfv-docker-custom -######################## -- project: - - name: opnfv-docker-custom - - project: '{name}' - - jobs: - - 'opnfv-docker-custom-verify-{stream}' - - 'opnfv-docker-custom-merge-{stream}' - - stream: - - master: - branch: '{stream}' - gs-pathname: '' - disabled: false - - danube: - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - disabled: false - -######################## -# job templates -######################## - -- job-template: - name: 'opnfv-docker-custom-verify-{stream}' - - disabled: '{obj:disabled}' - - parameters: - - project-parameter: - project: $GERRIT_PROJECT - branch: '{branch}' - - scm: - - git-scm-gerrit - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - draft-published-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'REG_EXP' - project-pattern: 'disabled' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: 'docker/**' - - builders: - - verify-docker - -- job-template: - name: 'opnfv-docker-custom-merge-{stream}' - - disabled: '{obj:disabled}' - - parameters: - - project-parameter: - project: $GERRIT_PROJECT - branch: '{branch}' - - scm: - - git-scm - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - change-merged-event - - comment-added-contains-event: - comment-contains-value: 'remerge' - projects: - - project-compare-type: 'REG_EXP' - project-pattern: 'disabled' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: 'docker/**' - - builders: - - merge-docker - -- builder: - name: verify-docker - builders: - - shell: | - /bin/bash $WORKSPACE/verify-docker.sh - -- builder: - name: merge-docker - builders: - - shell: | - /bin/bash $WORKSPACE/merge-docker.sh diff --git a/jjb/releng/opnfv-docker.sh b/jjb/releng/opnfv-docker.sh deleted file mode 100644 index de39f0628..000000000 --- a/jjb/releng/opnfv-docker.sh +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 Ericsson AB 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 -o errexit -set -o nounset -set -o pipefail - - -echo "Using Docker $(docker --version) on $NODE_NAME" -echo "Starting Docker build for $DOCKER_REPO_NAME ..." -echo "--------------------------------------------------------" -echo - -function remove_containers_images() -{ - # Remove previous running containers if exist - # - # $ docker ps -a - # CONTAINER ID IMAGE COMMAND ... - # 6a796ed40b8e opnfv/example-tasks:latest "/bin/bash" ... - # 99fcb59f4787 opnfv/example-tasks-base:latest "/bin/bash" ... - # cc5eee16b995 opnfv/example-tasks-k8s "/bin/bash" ... - # - # Cut image name by leading space and ending space or colon(tag) - if [[ -n "$(docker ps -a | grep " $DOCKER_REPO_NAME[ :]")" ]]; then - echo "Removing existing $DOCKER_REPO_NAME containers..." - docker ps -a | grep " $DOCKER_REPO_NAME[ :]" | awk '{print $1}' | xargs docker rm -f - t=60 - # Wait max 60 sec for containers to be removed - while [[ $t -gt 0 ]] && [[ -n "$(docker ps| grep " $DOCKER_REPO_NAME[ :]")" ]]; do - sleep 1 - let t=t-1 - done - fi - - - # Remove existing images if exist - # - # $ docker images - # REPOSITORY TAG IMAGE ID ... - # opnfv/example-tasks latest 6501569fd328 ... - # opnfv/example-tasks-base latest 8764fe29c434 ... - # opnfv/example-tasks-k8s latest 61094cac9e65 ... - # - # Cut image name by start of line and ending space - if [[ -n "$(docker images | grep "^$DOCKER_REPO_NAME ")" ]]; then - echo "Docker images to remove:" - docker images | head -1 && docker images | grep "^$DOCKER_REPO_NAME " - image_ids=($(docker images | grep "^$DOCKER_REPO_NAME " | awk '{print $3}')) - for id in "${image_ids[@]}"; do - if [[ -n "$(docker images|grep "^$DOCKER_REPO_NAME "|grep $id)" ]]; then - echo "Removing docker image $DOCKER_REPO_NAME:$id..." - docker rmi -f $id - fi - done - fi -} - - -count=30 # docker build jobs might take up to ~30 min -while [[ -n `ps -ef| grep 'docker build' | grep $DOCKER_REPO_NAME | grep -v grep` ]]; do - echo "Build or cleanup of $DOCKER_REPO_NAME in progress. Waiting..." - sleep 60 - count=$(( $count - 1 )) - if [ $count -eq 0 ]; then - echo "Timeout. Aborting..." - exit 1 - fi -done - -# Remove the existing containers and images before building -remove_containers_images - -DOCKER_PATH=$WORKSPACE/$DOCKER_DIR - -cd $DOCKER_PATH || exit 1 -HOST_ARCH="$(uname -m)" -#If there is a patch for other arch then x86, apply the patch and -#replace Dockerfile file -dockerfile_patch="Dockerfile.${HOST_ARCH}.patch" -if [[ -f "${dockerfile_patch}" ]]; then - patch -f Dockerfile -p1 < "${dockerfile_patch}" -fi - -# Get tag version -echo "Current branch: $BRANCH" - -BUILD_BRANCH=$BRANCH - -GERRIT_REFNAME=${GERRIT_REFNAME:-''} -RELEASE_VERSION=${GERRIT_REFNAME/refs\/tags\/} - -# If we're being triggered by a comment-added job, then extract the tag -# from the comment and use that as the release version. -# Expected comment format: retag opnfv-x.y.z -if [[ "${GERRIT_EVENT_TYPE:-}" == "comment-added" ]]; then - RELEASE_VERSION=$(echo "$GERRIT_EVENT_COMMENT_TEXT" | grep 'retag' | awk '{print $2}') -fi - -if [[ "$BRANCH" == "master" ]]; then - DOCKER_TAG="latest" -elif [[ -n "${RELEASE_VERSION-}" ]]; then - DOCKER_TAG=${RELEASE_VERSION} - if git checkout ${RELEASE_VERSION}; then - echo "Successfully checked out the git tag ${RELEASE_VERSION}" - else - echo "The tag ${RELEASE_VERSION} doesn't exist in the repository. Existing tags are:" - git tag - exit 1 - fi -else - DOCKER_TAG="stable" -fi - -if [[ -n "${COMMIT_ID-}" && -n "${RELEASE_VERSION-}" ]]; then - DOCKER_TAG=$RELEASE_VERSION - BUILD_BRANCH=$COMMIT_ID -fi - -ARCH_BUILD_ARG="" -ARCH_TAG=${ARCH_TAG:-} -if [[ -n "${ARCH_TAG}" ]]; then - DOCKER_TAG=${ARCH_TAG}-${DOCKER_TAG} - ARCH_BUILD_ARG="--build-arg ARCH=${ARCH_TAG}" -fi - -EXTRA_BUILD_ARGS=${EXTRA_BUILD_ARGS:-} -if [ -n "${EXTRA_BUILD_ARGS}" ]; then - EXTRA_BUILD_ARGS=" "$(echo ${EXTRA_BUILD_ARGS}) - EXTRA_BUILD_ARGS=${EXTRA_BUILD_ARGS// / --build-arg } -fi - -# Start the build -echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG" -echo "--------------------------------------------------------" -echo -cmd="docker build --pull=true --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BUILD_BRANCH - $ARCH_BUILD_ARG $EXTRA_BUILD_ARGS - -f $DOCKERFILE $DOCKER_PATH" - -echo ${cmd} -${cmd} - - -# list the images -echo "Available images are:" -docker images - -# Push image to Dockerhub -if [[ "$PUSH_IMAGE" == "true" ]]; then - echo "Pushing $DOCKER_REPO_NAME:$DOCKER_TAG to the docker registry..." - echo "--------------------------------------------------------" - echo - docker push $DOCKER_REPO_NAME:$DOCKER_TAG -fi - -# Remove the existing containers and images after building -remove_containers_images diff --git a/jjb/releng/opnfv-docker.yaml b/jjb/releng/opnfv-docker.yaml deleted file mode 100644 index 85ddbf09e..000000000 --- a/jjb/releng/opnfv-docker.yaml +++ /dev/null @@ -1,467 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## - -- project: - - name: opnfv-docker - - master: &master - stream: master - branch: '{stream}' - disabled: false - hunter: &hunter - stream: hunter - branch: 'stable/{stream}' - disabled: false - pharos-tools-receivers: &pharos_tools_receivers - receivers: > - pberberian@iol.unh.edu - sbergeron@iol.unh.edu - storperf-receivers: &storperf-receivers - receivers: > - mark.beierl@emc.com - yardstick-receivers: &yardstick-receivers - receivers: > - rexlee8776@gmail.com - other-receivers: &other-receivers - receivers: '' - - dockerfile: "Dockerfile" - dockerdir: "docker" - arch_tag: "" - extra_build_args: "" - - # This is the dockerhub repo the image will be pushed to as - # 'opnfv/{dockerrepo}. See: DOCKER_REPO_NAME parameter. - # 'project' is the OPNFV repo we expect to contain the Dockerfile - # yamllint disable rule:key-duplicates - dockerrepo: - # projects with jobs for master - - 'releng-anteater': - project: 'releng-anteater' - <<: *master - <<: *other-receivers - - 'barometer-collectd': - project: 'barometer' - dockerdir: 'docker/barometer-collectd' - <<: *master - <<: *other-receivers - - 'barometer-collectd-master': - project: 'barometer' - dockerdir: '.' - dockerfile: 'docker/barometer-collectd-master/Dockerfile' - <<: *master - <<: *other-receivers - - 'barometer-dma': - project: 'barometer' - dockerdir: 'docker/barometer-dma' - <<: *master - <<: *other-receivers - - 'barometer-grafana': - project: 'barometer' - dockerdir: 'docker/barometer-grafana' - <<: *master - <<: *other-receivers - - 'barometer-influxdb': - project: 'barometer' - dockerdir: 'docker/barometer-influxdb' - <<: *master - <<: *other-receivers - - 'barometer-kafka': - project: 'barometer' - dockerdir: 'docker/barometer-kafka' - <<: *master - <<: *other-receivers - - 'barometer-ves': - project: 'barometer' - dockerdir: 'docker/barometer-ves' - <<: *master - <<: *other-receivers - - 'barometer-snmp': - project: 'barometer' - dockerdir: 'docker/barometer-snmp' - <<: *master - <<: *other-receivers - - 'bottlenecks': - project: 'bottlenecks' - <<: *master - <<: *other-receivers - - 'clover': - project: 'clover' - dockerdir: '.' - dockerfile: 'docker/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-ns-nginx-lb': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/lb/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-ns-nginx-proxy': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/proxy/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-ns-nginx-server': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/server/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-ns-snort-ids': - project: 'clover' - dockerdir: 'samples/services/snort_ids/docker' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-controller': - project: 'clover' - dockerdir: 'clover/controller' - dockerfile: 'docker/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-collector': - project: 'clover' - dockerdir: 'clover/collector' - dockerfile: 'docker/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-jmeter-master': - project: 'clover' - dockerdir: 'clover/tools/jmeter' - dockerfile: 'jmeter-master/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-jmeter-slave': - project: 'clover' - dockerdir: 'clover/tools/jmeter' - dockerfile: 'jmeter-slave/Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-sample-app': - project: 'clover' - dockerdir: 'samples/scenarios/sample_app' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-ns-modsecurity-crs': - project: 'clover' - dockerdir: 'samples/services/modsecurity/docker' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-spark': - project: 'clover' - dockerdir: 'clover/spark/docker/clover-spark' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-spark-submit': - project: 'clover' - dockerdir: 'clover/spark/docker/spark-submit' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'clover-clovisor': - project: 'clover' - dockerdir: 'clover/clovisor' - dockerfile: 'Dockerfile' - <<: *master - <<: *other-receivers - - 'cperf': - project: 'cperf' - <<: *master - <<: *other-receivers - - 'dovetail': - project: 'dovetail' - <<: *master - <<: *other-receivers - - 'dovetail-webportal-api': - project: 'dovetail-webportal' - dockerfile: 'Dockerfile.api' - <<: *master - <<: *other-receivers - - 'dovetail-webportal-web': - project: 'dovetail-webportal' - dockerfile: 'Dockerfile.web' - <<: *master - <<: *other-receivers - - 'dovetail-webportal-web-onap': - project: 'dovetail-webportal' - dockerfile: 'Dockerfile.web' - extra_build_args: 'CONTAINER=onap GUI=onap-ui' - <<: *master - <<: *other-receivers - - 'nfvbench': - project: 'nfvbench' - <<: *master - <<: *other-receivers - - 'pharos-tools-laas-dashboard': - project: 'pharos-tools' - dockerdir: 'dashboard' - dockerfile: 'web/Dockerfile' - <<: *master - <<: *pharos_tools_receivers - - 'pharos-tools-laas-celery': - project: 'pharos-tools' - dockerdir: 'dashboard' - dockerfile: 'worker/Dockerfile' - <<: *master - <<: *pharos_tools_receivers - - 'qtip': - project: 'qtip' - dockerdir: '.' - dockerfile: 'docker/Dockerfile.local' - <<: *master - <<: *other-receivers - - 'qtip-nettest': - project: 'qtip' - dockerdir: 'contrib/nettest' - <<: *master - <<: *other-receivers - - 'storperf-master': - project: 'storperf' - dockerdir: 'docker/storperf-master' - arch_tag: 'x86_64' - <<: *master - <<: *storperf-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - arch_tag: 'x86_64' - <<: *master - <<: *storperf-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - arch_tag: 'x86_64' - <<: *master - <<: *storperf-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - arch_tag: 'x86_64' - <<: *master - <<: *storperf-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - arch_tag: 'x86_64' - <<: *master - <<: *storperf-receivers - - 'yardstick': - project: 'yardstick' - <<: *master - <<: *yardstick-receivers - - 'yardstick-ubuntu-18.04': - project: 'yardstick' - dockerfile: 'Dockerfile_ubuntu18' - <<: *master - <<: *yardstick-receivers - - 'yardstick-image-k8s': - project: 'yardstick' - dockerdir: 'docker/k8s' - <<: *master - <<: *yardstick-receivers - - # projects with jobs for hunter - - 'barometer-dma': - project: 'barometer' - dockerdir: 'docker/barometer-dma' - <<: *hunter - <<: *other-receivers - - 'barometer-collectd': - project: 'barometer' - dockerdir: 'docker/barometer-collectd' - <<: *hunter - <<: *other-receivers - - 'barometer-collectd-master': - project: 'barometer' - dockerdir: '.' - dockerfile: 'docker/barometer-collectd-master/Dockerfile' - <<: *hunter - <<: *other-receivers - - 'barometer-grafana': - project: 'barometer' - dockerdir: 'docker/barometer-grafana' - <<: *hunter - <<: *other-receivers - - 'barometer-influxdb': - project: 'barometer' - dockerdir: 'docker/barometer-influxdb' - <<: *hunter - <<: *other-receivers - - 'barometer-kafka': - project: 'barometer' - dockerdir: 'docker/barometer-kafka' - <<: *hunter - <<: *other-receivers - - 'barometer-ves': - project: 'barometer' - dockerdir: 'docker/barometer-ves' - <<: *hunter - <<: *other-receivers - - 'barometer-snmp': - project: 'barometer' - dockerdir: 'docker/barometer-snmp' - <<: *hunter - <<: *other-receivers - - 'bottlenecks': - project: 'bottlenecks' - <<: *hunter - <<: *other-receivers - - 'storperf-master': - project: 'storperf' - dockerdir: 'docker/storperf-master' - arch_tag: 'x86_64' - <<: *hunter - <<: *storperf-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - arch_tag: 'x86_64' - <<: *hunter - <<: *storperf-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - arch_tag: 'x86_64' - <<: *hunter - <<: *storperf-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - arch_tag: 'x86_64' - <<: *hunter - <<: *storperf-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - arch_tag: 'x86_64' - <<: *hunter - <<: *storperf-receivers - - 'yardstick': - project: 'yardstick' - <<: *hunter - <<: *yardstick-receivers - # yamllint enable rule:key-duplicates - jobs: - - "{dockerrepo}-docker-build-push-{stream}" - -- project: - - name: opnfv-monitor-docker # projects which only monitor dedicated file or path - - dockerfile: "Dockerfile" - dockerdir: "docker" - arch_tag: "" - extra_build_args: "" - - project: - # projects with jobs for master - - 'daisy': - dockerrepo: 'daisy' - <<: *master - - jobs: - - '{project}-docker-build-push-monitor-{stream}' - -######################## -# job templates -######################## -- job-template: - name: '{dockerrepo}-docker-build-push-{stream}' - - disabled: '{obj:disabled}' - - parameters: ¶meters - - project-parameter: - project: '{project}' - branch: '{branch}' - - 'opnfv-build-ubuntu-defaults' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - string: - name: DOCKER_REPO_NAME - default: "opnfv/{dockerrepo}" - description: "Dockerhub repo to be pushed to." - - string: - name: DOCKER_DIR - default: "{dockerdir}" - description: "Directory containing files needed by the Dockerfile" - - string: - name: COMMIT_ID - default: "" - description: "commit id to make a snapshot docker image" - - string: - name: GERRIT_REFNAME - default: "" - description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/5.0.RC1" - - string: - name: DOCKERFILE - default: "{dockerfile}" - description: "Dockerfile to use for creating the image." - - string: - name: ARCH_TAG - default: "{arch_tag}" - description: "If set, this value will be added to the docker image tag as a prefix" - - string: - name: EXTRA_BUILD_ARGS - default: "{extra_build_args}" - description: "Whitespace separated key=value pairs. If set, these args will be used to build docker image" - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - builders: &builders - - shell: - !include-raw-escape: ./opnfv-docker.sh - - triggers: - - pollscm: - cron: "*/30 * * * *" - - gerrit-trigger-tag-created: - project: '{project}' - - publishers: - - email: - recipients: '{receivers}' - - email-jenkins-admins-on-failure - -- job-template: - name: '{project}-docker-build-push-monitor-{stream}' - disabled: '{obj:disabled}' - parameters: *parameters - - scm: - - git-scm - - builders: *builders - - # trigger only matching the file name - triggers: - - gerrit: - trigger-on: - - change-merged-event - - comment-added-contains-event: - comment-contains-value: 'remerge' - projects: - - project-compare-type: 'ANT' - project-pattern: '{project}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: 'docker/**' diff --git a/jjb/releng/opnfv-lint.yaml b/jjb/releng/opnfv-lint.yaml deleted file mode 100644 index 6483e3262..000000000 --- a/jjb/releng/opnfv-lint.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -######################## -# Job configuration for opnfv-lint -######################## -- project: - - name: opnfv-lint - - project: opnfv-lint - - jobs: - - 'opnfv-lint-verify-{stream}' - - 'opnfv-yamllint-verify-{stream}' - - 'opnfv-pylint-verify-{stream}' - - stream: - - master: - branch: '{stream}' - gs-pathname: '' - disabled: false - - fraser: - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - disabled: false - - danube: - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - disabled: false - -######################## -# job templates -######################## - -- job-template: - name: 'opnfv-lint-verify-{stream}' - - disabled: '{obj:disabled}' - - concurrent: true - - parameters: - - project-parameter: - project: $GERRIT_PROJECT - branch: '{branch}' - - node: - name: SLAVE_NAME - description: Slaves to execute yamllint - default-slaves: - - lf-build1 - allowed-multiselect: true - ignore-offline-nodes: true - - scm: - - git-scm-gerrit - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - draft-published-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - projects: - - project-compare-type: 'REG_EXP' - project-pattern: 'releng|doctor|pharos' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: '**/*.py' - - compare-type: ANT - pattern: '**/*.sh' - - compare-type: ANT - pattern: '**/*.yml' - - compare-type: ANT - pattern: '**/*.yaml' - - builders: - - lint-all-code - -- job-template: - name: 'opnfv-pylint-verify-{stream}' - - disabled: '{obj:disabled}' - - concurrent: true - - parameters: - - project-parameter: - project: $GERRIT_PROJECT - branch: '{branch}' - - node: - name: SLAVE_NAME - description: Slaves to execute yamllint - default-slaves: - - lf-build1 - allowed-multiselect: true - ignore-offline-nodes: true - - scm: - - git-scm-gerrit - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - draft-published-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'REG_EXP' - project-pattern: 'sdnvpn|qtip|daisy|sfc|escalator' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: '**/*.py' - - builders: - - lint-init - - lint-python-code - - lint-report - -- job-template: - name: 'opnfv-yamllint-verify-{stream}' - - disabled: '{obj:disabled}' - - concurrent: true - - parameters: - - project-parameter: - project: $GERRIT_PROJECT - branch: '{branch}' - - node: - name: SLAVE_NAME - description: Slaves to execute yamllint - default-slaves: - - lf-build1 - allowed-multiselect: true - ignore-offline-nodes: true - - scm: - - git-scm-gerrit - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - draft-published-event - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'REG_EXP' - project-pattern: 'armband|fuel|releng-anteater' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - file-paths: - - compare-type: ANT - pattern: '**/*.yml' - - compare-type: ANT - pattern: '**/*.yaml' - - builders: - - lint-init - - lint-yaml-code - - lint-report diff --git a/jjb/releng/opnfv-repo-archiver.sh b/jjb/releng/opnfv-repo-archiver.sh deleted file mode 100644 index b7ff3baa0..000000000 --- a/jjb/releng/opnfv-repo-archiver.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 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 -o errexit -set -o pipefail -export PATH=$PATH:/usr/local/bin/ - -DATE="$(date +%Y%m%d)" - -declare -a PROJECT_LIST -EXCLUDE_PROJECTS="All-Projects|All-Users|securedlab" -CLONE_PATH="$WORKSPACE/opnfv-repos" - -# Generate project list from gerrit -PROJECT_LIST=($(ssh -p 29418 jenkins-ci@gerrit.opnfv.org gerrit ls-projects | egrep -v $EXCLUDE_PROJECTS)) - -echo "Cloning all OPNFV repositories" -echo "------------------------------" - -for PROJECT in "${PROJECT_LIST[@]}"; do - echo "> Cloning $PROJECT" - if [ ! -d "$CLONE_PATH/$PROJECT" ]; then - git clone "https://gerrit.opnfv.org/gerrit/$PROJECT.git" $CLONE_PATH/$PROJECT - else - pushd "$CLONE_PATH/$PROJECT" &>/dev/null - git pull -f origin master - popd &> /dev/null - fi - - # Don't license scan kernel or qemu in kvmfornfv - if [ "$PROJECT" == "kvmfornfv" ]; then - rm -rf "$CLONE_PATH/$PROJECT/"{kernel,qemu} - fi -done - -echo "Finished cloning OPNFV repositories" -echo "-----------------------------------" - -# Copy repos and clear git data -echo "Copying repos to $WORKSPACE/opnfv-archive and removing .git files" -cp -R $CLONE_PATH $WORKSPACE/opnfv-archive -find $WORKSPACE/opnfv-archive -type d -iname '.git' -exec rm -rf {} + -find $WORKSPACE/opnfv-archive -type f -iname '.git*' -exec rm -rf {} + - -# Create archive -echo "Creating archive: opnfv-archive-$DATE.tar.gz" -echo "--------------------------------------" -cd $WORKSPACE -tar -czf "opnfv-archive-$DATE.tar.gz" opnfv-archive && rm -rf opnfv-archive -echo "Archiving Complete." - -echo "Uploading artifacts" -echo "--------------------------------------" - -gsutil cp "$WORKSPACE/opnfv-archive-$DATE.tar.gz" \ - "gs://opnfv-archive/opnfv-archive-$DATE.tar.gz" 2>&1 - -echo "https://storage.googleapis.com/opnfv-archive/opnfv-archive-$DATE.tar.gz" > archive-link.txt - -rm -f opnfv-archive-$DATE.tar.gz - -echo "Finished" diff --git a/jjb/releng/opnfv-utils.yaml b/jjb/releng/opnfv-utils.yaml deleted file mode 100644 index 05ffd51d9..000000000 --- a/jjb/releng/opnfv-utils.yaml +++ /dev/null @@ -1,216 +0,0 @@ ---- -- project: - - name: opnfv-utils - - jobs: - - 'prune-docker-images' - - 'archive-repositories' - - 'check-status-of-slaves' - - 'ansible-build-server' - - 'generate-artifacts-index-pages' - -######################## -# job templates -######################## -- job-template: - name: 'prune-docker-images' - - disabled: false - - concurrent: true - - parameters: - - node: - name: SLAVE_NAME - description: Slaves to prune docker images - default-slaves: - - arm-build3 - - arm-build4 - - arm-build5 - - ericsson-build3 - - ericsson-build4 - - lf-build2 - allowed-multiselect: true - ignore-offline-nodes: true - - builders: - - description-setter: - description: "Built on $NODE_NAME" - # yamllint disable rule:line-length - - shell: | - #!/bin/bash - sudo systemctl restart docker - (docker ps -q; docker ps -aq) | sort | uniq -u | xargs --no-run-if-empty docker rm - docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi - - - # yamllint enable rule:line-length - triggers: - - timed: '@midnight' - -- job-template: - name: 'archive-repositories' - - disabled: false - - concurrent: true - - parameters: - - node: - name: SLAVE_NAME - description: Where to create the archive - default-slaves: - - lf-build2 - allowed-multiselect: false - ignore-offline-nodes: true - - triggers: - - timed: '@monthly' - - builders: - - shell: - !include-raw-escape: opnfv-repo-archiver.sh - - publishers: - - email-ext: - content-type: 'text' - failure: false - always: true - body: - ${{FILE,path="archive-link.txt"}} - reply-to: > - helpdesk@opnfv.org - recipients: > - tbramwell@linuxfoundation.org - swinslow@linuxfoundation.org - - -- job-template: - name: 'check-status-of-slaves' - - disabled: false - concurrent: true - - parameters: - - node: - name: SLAVE_NAME - description: 'script lives on master node' - default-slaves: - - lf-build1 - allowed-multiselect: false - ignore-offline-nodes: true - - project-parameter: - project: releng - branch: master - - scm: - - git-scm - - triggers: - - timed: '@midnight' - - builders: - - shell: | - cd $WORKSPACE/utils/ - bash slave-monitor-0.1.sh - -- job-template: - name: 'ansible-build-server' - - project-type: freestyle - - disabled: false - concurrent: true - - parameters: - - node: - name: SLAVE_NAME - description: Build Servers - default-slaves: - - lf-build1 - - lf-build2 - - lf-build3 - - ericsson-build3 - - ericsson-build4 - allowed-multiselect: true - ignore-offline-nodes: true - - project-parameter: - project: releng - branch: master - - scm: - - git-scm - - triggers: - - timed: '@midnight' - - builders: - - description-setter: - description: '$NODE_NAME' - - install-ansible - - run-ansible-build-server-playbook - - -- builder: - name: install-ansible - builders: - - shell: | - # Install ansible here - if [ -f /etc/centos-release ] \ - || [ -f /etc/redhat-release ] \ - || [ -f /etc/system-release ]; then - sudo yum -y install ansible - fi - if [ -f /etc/debian_version ] \ - || grep -qi ubuntu /etc/lsb-release \ - || grep -qi ubuntu /etc/os-release; then - sudo apt-get -y install ansible - fi - - -- builder: - name: run-ansible-build-server-playbook - builders: - - shell: | - # run playbook - sudo ansible-playbook -i \ - $WORKSPACE/utils/build-server-ansible/inventory.ini \ - $WORKSPACE/utils/build-server-ansible/main.yml - - -- job-template: - name: 'generate-artifacts-index-pages' - - project-type: freestyle - - disabled: false - - concurrent: false - - parameters: - - node: - name: SLAVE_NAME - description: Build Servers - default-slaves: - - lf-build2 - - project-parameter: - project: releng - branch: master - - scm: - - git-scm - - triggers: - - timed: '@hourly' - - builders: - - generate-artifact-html - - -- builder: - name: generate-artifact-html - builders: - - shell: | - cd $WORKSPACE/utils/ - ./artifacts.opnfv.org.sh diff --git a/jjb/releng/releng-info-vote.yaml b/jjb/releng/releng-info-vote.yaml deleted file mode 100644 index 83818585a..000000000 --- a/jjb/releng/releng-info-vote.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- project: - name: info-vote - build-node: lf-build2 - jobs: - - 'info-vote-verify' diff --git a/jjb/releng/releng-jobs.yaml b/jjb/releng/releng-jobs.yaml new file mode 100644 index 000000000..309b7ce68 --- /dev/null +++ b/jjb/releng/releng-jobs.yaml @@ -0,0 +1,496 @@ +--- +- scm: + name: releng-scm + scm: + - git: + url: 'ssh://fbot@gerrit.opnfv.org:29418/releng' + refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*' + submodule: + recursive: true + branches: + - '{ref}' + +- trigger: + name: releng-patchset-created + triggers: + - gerrit: + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'releng' + branches: + - branch-compare-type: 'ANT' + branch-pattern: 'master' + +- trigger: + name: releng-patchset-merged + triggers: + - gerrit: + trigger-on: + - change-merged-event + - comment-added-contains-event: + comment-contains-value: 'remerge' + projects: + - project-compare-type: 'ANT' + project-pattern: 'releng' + branches: + - branch-compare-type: 'ANT' + branch-pattern: 'master' + +- builder: + name: releng-jjb-verify + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y + jenkins-jobs test --recursive -o tmp jjb + rm -rf tmp + +- builder: + name: releng-jjb-merge + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y + jenkins-jobs update --recursive --delete-old jjb + +- parameter: + name: releng-jjb-node + parameters: + - label: + name: node + default: '{node}' + +- job-template: + name: releng-jjb-verify + triggers: + - releng-patchset-created + scm: + - releng-scm: + ref: $GERRIT_REFSPEC + parameters: + - releng-jjb-node: + node: opnfv-build + builders: + - releng-jjb-verify + +- project: + name: releng-jjb-verify + jobs: + - releng-jjb-verify + +- job-template: + name: releng-jjb-merge + triggers: + - releng-patchset-merged + scm: + - releng-scm: + ref: master + parameters: + - releng-jjb-node: + node: opnfv-build + builders: + - releng-jjb-merge + +- project: + name: releng-jjb-merge + jobs: + - releng-jjb-merge + +- scm: + name: opnfv-scm + scm: + - git: + url: 'https://gerrit.opnfv.org/gerrit/{project}' + refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*' + submodule: + recursive: true + branches: + - '{ref}' + +- trigger: + name: releng-tox-patchset-created + triggers: + - gerrit: + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: recheck + - comment-added-contains-event: + comment-contains-value: reverify + server-name: gerrit.opnfv.org + projects: + - project-compare-type: 'REG_EXP' + project-pattern: '^(?!functest).*' + branches: + - branch-compare-type: 'ANT' + branch-pattern: master + - branch-compare-type: 'ANT' + branch-pattern: stable/nile + - branch-compare-type: 'ANT' + branch-pattern: stable/moselle + +- builder: + name: releng-tox + builders: + - shell: | + [ -f tox.ini ] || exit 0 + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install tox -y + tox --recreate + +- parameter: + name: releng-tox-node + parameters: + - label: + name: node + default: '{node}' + +- job-template: + name: releng-tox + triggers: + - releng-tox-patchset-created + scm: + - opnfv-scm: + ref: $GERRIT_REFSPEC + project: $GERRIT_PROJECT + parameters: + - releng-tox-node: + node: opnfv-build + builders: + - releng-tox + +- project: + name: releng-tox + jobs: + - releng-tox + +- project: + name: releng-release-jobs + stream: + - nile + - orinoco + - v1.22 + - v1.23 + - v1.24 + - v1.25 + - v1.26 + - v1.27 + - v1.28 + - v1.29 + - xena + - wallaby + - yoga + - zed + - '2023.1' + - '2023.2' + jobs: + - 'releng-release-{stream}-verify' + - 'releng-release-{stream}-merge' + +- parameter: + name: stream-parameter + parameters: + - string: + name: STREAM + default: '{stream}' + +- job-template: + name: 'releng-release-{stream}-verify' + scm: + - releng-scm: + ref: $GERRIT_REFSPEC + parameters: + - releng-jjb-node: + node: opnfv-build + - stream-parameter: + stream: '{stream}' + - string: + name: GIT_URL + default: ssh://fbot@gerrit.opnfv.org:29418/ + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + trigger-on: + - patchset-created-event: + exclude-drafts: 'false' + exclude-trivial-rebase: 'false' + exclude-no-code-change: 'false' + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'ANT' + project-pattern: 'releng' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/master' + file-paths: + - compare-type: ANT + pattern: 'releases/{stream}/**' + - compare-type: ANT + pattern: 'releases/schema.yaml' + - compare-type: ANT + pattern: 'releases/scripts/verify_schema.py' + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \ + python3-ruamel.yaml -y + - shell: !include-raw-escape: + - branch-or-tag.sh + +- job-template: + name: 'releng-release-{stream}-merge' + scm: + - releng-scm: + ref: $GERRIT_REFSPEC + parameters: + - releng-jjb-node: + node: opnfv-build + - stream-parameter: + stream: '{stream}' + - string: + name: GIT_URL + default: ssh://fbot@gerrit.opnfv.org:29418/ + triggers: + - gerrit: + trigger-on: + - change-merged-event + - comment-added-contains-event: + comment-contains-value: 'remerge' + projects: + - project-compare-type: 'ANT' + project-pattern: 'releng' + branches: + - branch-compare-type: 'ANT' + branch-pattern: 'master' + file-paths: + - compare-type: ANT + pattern: 'releases/{stream}/**' + builders: + - shell: | + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install python3-pygerrit2 \ + python3-ruamel.yaml -y + - shell: !include-raw-escape: + - branch-or-tag.sh + +- builder: + name: lint-init + builders: + - shell: | + #!/bin/bash + # Ensure we start with a clean environment + rm -f bash-violation.log python-violation.log yaml-violation.log violation.log + git --no-pager diff --diff-filter=MCRAT --name-only HEAD^1 > modified_files + +- builder: + name: lint-report + builders: + - shell: | + #!/bin/bash + if [[ -s violation.log ]]; then + cat violation.log + echo "Reporting lint result...." + set -x + msg="Found syntax error and/or coding style violation(s) in the files modified by your patchset." + sed -i -e "1s#^#${msg}\n\n#" violation.log + cmd="gerrit review -p $GERRIT_PROJECT -m \"$(cat violation.log)\" $GERRIT_PATCHSET_REVISION --notify NONE" + ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -p 29418 fbot@gerrit.opnfv.org "$cmd" + + # Make sure the caller job failed + exit 1 + fi + +- builder: + name: lint-bash-code + builders: + - shell: | + #!/bin/bash + echo "Checking bash code..." + for f in $(egrep '\.sh$' modified_files) + do + bash -n "$f" 2>> bash-violation.log + done + if [[ -s bash-violation.log ]]; then + echo -e "Bash syntax error(s)\n---" >> violation.log + sed -e 's/^/ /g' bash-violation.log >> violation.log + fi + +- builder: + name: lint-python-code + builders: + - shell: | + #!/bin/bash + + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install flake8 -y + + echo "Checking python code..." + for f in $(egrep '\.py$' modified_files) + do + flake8 "$f" >> python-violation.log + done + if [[ -s python-violation.log ]]; then + echo -e "Python violation(s)\n---" >> violation.log + sed -e 's/^/ /g' python-violation.log >> violation.log + fi + +- builder: + name: lint-yaml-code + builders: + - shell: | + #!/bin/bash + + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 dist-upgrade -y + sudo DEBIAN_FRONTEND=noninteractive \ + apt-get -o DPkg::Lock::Timeout=300 install yamllint -y + + echo "Checking yaml file..." + for f in $(egrep '\.ya?ml$' modified_files) + do + yamllint "$f" >> yaml-violation.log + done + if [[ -s yaml-violation.log ]]; then + echo -e "YAML violation(s)\n---" >> violation.log + sed -e 's/^/ /g' yaml-violation.log >> violation.log + fi + +- builder: + name: lint-all-code + builders: + - lint-init + - lint-bash-code + - lint-python-code + - lint-yaml-code + - lint-report + +- project: + name: releng-lint + jobs: + - 'releng-lint-verify' + +- job-template: + name: 'releng-lint-verify' + parameters: + - releng-jjb-node: + node: opnfv-build + scm: + - releng-scm: + ref: $GERRIT_REFSPEC + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + trigger-on: + - patchset-created-event + - comment-added-contains-event: + comment-contains-value: recheck + - comment-added-contains-event: + comment-contains-value: reverify + projects: + - project-compare-type: 'ANT' + project-pattern: 'releng' + branches: + - branch-compare-type: 'ANT' + branch-pattern: 'master' + file-paths: + - compare-type: ANT + pattern: '**/*.py' + - compare-type: ANT + pattern: '**/*.sh' + - compare-type: ANT + pattern: '**/*.yml' + - compare-type: ANT + pattern: '**/*.yaml' + builders: + - lint-all-code + +- project: + name: releng-generate-artifacts-index-pages + jobs: + - releng-generate-artifacts-index-pages + +- job-template: + name: releng-generate-artifacts-index-pages + scm: + - releng-scm: + ref: master + parameters: + - releng-jjb-node: + node: opnfv-build + triggers: + - timed: '@daily' + builders: + - generate-artifact-html + +- builder: + name: generate-artifact-html + builders: + - shell: | + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - + echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \ + /etc/apt/sources.list.d/google-cloud-sdk.list + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install \ + google-cloud-sdk -y + cd $WORKSPACE/utils/ + ./artifacts.opnfv.org.sh + +- project: + name: releng-artifact-cleanup + jobs: + - releng-artifact-cleanup + +- job-template: + name: releng-artifact-cleanup + scm: + - releng-scm: + ref: master + parameters: + - releng-jjb-node: + node: opnfv-build + triggers: + - timed: '@daily' + builders: + - releng-artifact-cleanup + +- builder: + name: releng-artifact-cleanup + builders: + - shell: | + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - + echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \ + /etc/apt/sources.list.d/google-cloud-sdk.list + sudo apt-get -o DPkg::Lock::Timeout=300 update && \ + sudo DEBIAN_FRONTEND=noninteractive apt-get \ + -o DPkg::Lock::Timeout=300 install \ + google-cloud-sdk -y + $WORKSPACE/utils/retention_script.sh diff --git a/jjb/releng/releng-release-create-branch.sh b/jjb/releng/releng-release-create-branch.sh index 7e91d5ace..beb493b1a 100644 --- a/jjb/releng/releng-release-create-branch.sh +++ b/jjb/releng/releng-release-create-branch.sh @@ -14,7 +14,7 @@ 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.name "fbot" git config --global user.email "jenkins-opnfv-ci@opnfv.org" # Ensure we are able to generate Commit-IDs for new patchsets @@ -44,8 +44,8 @@ fi 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 + ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -n -f -p 29418 fbot@gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref" + python3 releases/scripts/create_jobs.py -f $release_file NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-) fi if [ -n "$NEW_FILES" ]; then @@ -65,7 +65,7 @@ for release_file in $RELEASE_FILES; do else run_merge fi - done < <(python releases/scripts/repos.py -b -f "$release_file") + done < <(python3 releases/scripts/repos.py -b -f "$release_file") done } diff --git a/jjb/releng/releng-release-create-venv.sh b/jjb/releng/releng-release-create-venv.sh deleted file mode 100644 index 0200376a7..000000000 --- a/jjb/releng/releng-release-create-venv.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/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 -echo "---> Create virtualenv" - -sudo -H pip install virtualenv -virtualenv -p /usr/bin/python3 $WORKSPACE/venv - -# shellcheck source=$WORKSPACE/venv/bin/activate disable=SC1091 -source $WORKSPACE/venv/bin/activate -pip install --upgrade pip -pip install -r releases/scripts/requirements.txt diff --git a/jjb/releng/releng-release-jobs.yaml b/jjb/releng/releng-release-jobs.yaml deleted file mode 100644 index d23779c0e..000000000 --- a/jjb/releng/releng-release-jobs.yaml +++ /dev/null @@ -1,122 +0,0 @@ -# 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 -############################################################################## ---- -- project: - name: releng-release-jobs - - build-node: 'opnfv-build' - - stream: - - fraser - - gambia - - hunter - - iruya - - jerma - - jobs: - - 'releng-release-{stream}-verify' - - 'releng-release-{stream}-merge' - - project: 'releng' - -- job-template: - name: 'releng-release-{stream}-verify' - - parameters: - - '{build-node}-defaults' - - stream-parameter: - stream: '{stream}' - - project-parameter: - project: '{project}' - branch: 'master' - - scm: - - git-scm-gerrit - - triggers: - - gerrit: - server-name: 'gerrit.opnfv.org' - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - comment-added-contains-event: - comment-contains-value: 'recheck' - - comment-added-contains-event: - comment-contains-value: 'reverify' - projects: - - project-compare-type: 'ANT' - project-pattern: 'releng' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/master' - file-paths: - - compare-type: ANT - pattern: 'releases/{stream}/**' - - compare-type: ANT - pattern: 'releases/schema.yaml' - - compare-type: ANT - pattern: 'releases/scripts/verify_schema.py' - - builders: - - shell: !include-raw-escape: - - releng-release-create-venv.sh - - branch-or-tag.sh - - publishers: - - email-jenkins-admins-on-failure - -- job-template: - name: 'releng-release-{stream}-merge' - - parameters: - - node: - name: SLAVE_NAME - description: 'Only run merge job on build1' - default-slaves: - - lf-build1 - allowed-multiselect: false - ignore-offline-nodes: true - - stream-parameter: - stream: '{stream}' - - project-parameter: - project: '{project}' - branch: 'master' - # Override GIT_URL so we can send patches back to Gerrit and - # modify repos - - string: - name: GIT_URL - default: ssh://$USER@gerrit.opnfv.org:29418/ - description: 'Git URL to use on this Jenkins Slave' - - scm: - - git-scm-gerrit - - triggers: - - gerrit-trigger-change-merged: - project: '{project}' - branch: 'master' - files: 'releases/{stream}/*' - - builders: - - shell: !include-raw-escape: - - releng-release-create-venv.sh - - branch-or-tag.sh - - publishers: - - email-jenkins-admins-on-failure - -- parameter: - name: stream-parameter - parameters: - - string: - name: STREAM - default: '{stream}' - description: "OPNFV Stable Stream" diff --git a/jjb/releng/releng-release-tagging.sh b/jjb/releng/releng-release-tagging.sh index 88927e54d..1fce35f6c 100644 --- a/jjb/releng/releng-release-tagging.sh +++ b/jjb/releng/releng-release-tagging.sh @@ -8,6 +8,7 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## set -e -o pipefail +set -x GIT_URL=${GIT_URL:-https://gerrit.opnfv.org/gerrit} STREAM=${STREAM:-'nostream'} @@ -48,7 +49,7 @@ for release_file in $RELEASE_FILES; do # If the tag doesn't exist and we're in a merge job, # everything has been verified up to this point and we # are ready to create the tag. - git config --global user.name "jenkins-ci" + git config --global user.name "fbot" git config --global user.email "jenkins-opnfv-ci@opnfv.org" echo "--> Creating $tag tag for $repo at $ref" git tag -am "$tag" $tag $ref @@ -62,5 +63,5 @@ for release_file in $RELEASE_FILES; do popd &> /dev/null echo "--> Done verifing $repo" - done < <(python releases/scripts/repos.py -f $release_file) + done < <(python3 releases/scripts/repos.py -f $release_file) done diff --git a/jjb/releng/releng-rtd-jobs.yaml b/jjb/releng/releng-rtd-jobs.yaml deleted file mode 100644 index f7c960335..000000000 --- a/jjb/releng/releng-rtd-jobs.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- project: - name: releng-builder-jobs - project: 'releng' - project-name: 'releng' - jjb-version: '2.5.0' - - build-timeout: 60 - - rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-releng/38594/' - rtd-token: '291c6a0109493b4457e566d06141212452c65784' - project-pattern: 'releng' - - jobs: - - '{project-name}-ci-jobs' - - '{project-name}-rtd-jobs' diff --git a/jjb/releng/releng-views.yaml b/jjb/releng/releng-views.yaml index 12dfbfe35..fbd69982d 100644 --- a/jjb/releng/releng-views.yaml +++ b/jjb/releng/releng-views.yaml @@ -1,7 +1,12 @@ --- -- project: - name: releng-view - views: - - common-view - view-name: releng - view-regex: ^releng.* +- view: + name: releng + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^releng-.* |