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 | 40 | ||||
-rw-r--r-- | jjb/releng/compass4nfv-docker.yaml | 269 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker-arm.yaml | 202 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker-custom.yaml | 111 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker.sh | 158 | ||||
-rw-r--r-- | jjb/releng/opnfv-docker.yaml | 476 | ||||
-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 | 215 | ||||
-rw-r--r-- | jjb/releng/releng-jobs.yaml | 500 | ||||
-rw-r--r-- | jjb/releng/releng-release-create-branch.sh | 65 | ||||
-rw-r--r-- | jjb/releng/releng-release-create-venv.sh | 18 | ||||
-rw-r--r-- | jjb/releng/releng-release-jobs.yaml | 121 | ||||
-rw-r--r-- | jjb/releng/releng-release-tagging.sh | 9 | ||||
-rw-r--r-- | jjb/releng/releng-rtd-jobs.yaml | 16 | ||||
-rw-r--r-- | jjb/releng/releng-views.yaml | 12 | ||||
-rw-r--r-- | jjb/releng/testresults-verify.yaml | 63 |
18 files changed, 660 insertions, 1910 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 new file mode 100755 index 000000000..f9767eca1 --- /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 +set -x + +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 + python3 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" + source jjb/releng/releng-release-tagging.sh + else + echo "This is a branching job" + source jjb/releng/releng-release-create-branch.sh + fi + + done < <(python3 releases/scripts/repos.py -b -f "$release_file") +done diff --git a/jjb/releng/compass4nfv-docker.yaml b/jjb/releng/compass4nfv-docker.yaml deleted file mode 100644 index 2eb2a207c..000000000 --- a/jjb/releng/compass4nfv-docker.yaml +++ /dev/null @@ -1,269 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## -- project: - - name: compass-docker - - project: compass-containers - - stream: - - master: - branch: '{stream}' - disabled: false - - euphrates: - branch: 'stable/{stream}' - disabled: true - - gambia: - branch: 'stable/{stream}' - disabled: false - - arch_tag: - - 'amd64': - slave_label: 'opnfv-build-ubuntu' - docker_file: 'Dockerfile' - - 'arm64': - slave_label: 'opnfv-build-ubuntu-arm' - docker_file: 'Dockerfile-arm64' - - # yamllint disable rule:key-duplicates - image: - - 'tasks' - - 'cobbler' - - 'db' - - 'deck' - - 'tasks-base' - - 'tasks-k8s' - - 'tasks-osa' - - # settings for jobs run in multijob phases - build-job-settings: &build-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: | - PUSH_IMAGE=$PUSH_IMAGE - COMMIT_ID=$COMMIT_ID - GERRIT_REFNAME=$GERRIT_REFNAME - kill-phase-on: FAILURE - abort-all-jobs: false - - manifest-job-settings: &manifest-job-settings - current-parameters: false - git-revision: true - node-parameters: false - predefined-parameters: - GERRIT_REFNAME=$GERRIT_REFNAME - kill-phase-on: FAILURE - abort-all-jobs: false - - # yamllint enable rule:key-duplicates - jobs: - - "compass-docker-{stream}" - - "compass-{image}-build-{arch_tag}-{stream}" - - "compass-{image}-manifest-{stream}" - -######################## -# job templates -######################## -- job-template: - name: 'compass-docker-{stream}' - - project-type: multijob - - disabled: '{obj:disabled}' - - parameters: - - compass-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: 'opnfv-build-ubuntu' - docker_file: 'Dockerfile' - arch_tag: 'amd64' - - properties: - - throttle: - max-per-node: 1 - option: 'project' - - scm: - - git-scm - - triggers: - - pollscm: - cron: "*/30 * * * *" - - builders: - - multijob: - name: 'build compass-tasks-base images' - execution-type: PARALLEL - projects: - - name: 'compass-tasks-base-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-base-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish compass-tasks-base manifests' - execution-type: PARALLEL - projects: - - name: 'compass-tasks-base-manifest-{stream}' - <<: *manifest-job-settings - - multijob: - name: 'build all compass images' - condition: SUCCESSFUL - execution-type: PARALLEL - projects: - - name: 'compass-cobbler-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-db-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-deck-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-k8s-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-osa-build-amd64-{stream}' - <<: *build-job-settings - - name: 'compass-cobbler-build-arm64-{stream}' - <<: *build-job-settings - - name: 'compass-db-build-arm64-{stream}' - <<: *build-job-settings - - name: 'compass-deck-build-arm64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-build-arm64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-k8s-build-arm64-{stream}' - <<: *build-job-settings - - name: 'compass-tasks-osa-build-arm64-{stream}' - <<: *build-job-settings - - multijob: - name: 'publish all manifests' - execution-type: PARALLEL - projects: - - name: 'compass-cobbler-manifest-{stream}' - <<: *manifest-job-settings - - name: 'compass-db-manifest-{stream}' - <<: *manifest-job-settings - - name: 'compass-deck-manifest-{stream}' - <<: *manifest-job-settings - - name: 'compass-tasks-manifest-{stream}' - <<: *manifest-job-settings - - name: 'compass-tasks-k8s-manifest-{stream}' - <<: *manifest-job-settings - - name: 'compass-tasks-osa-manifest-{stream}' - <<: *manifest-job-settings - - publishers: - - 'compass-amd64-recipients' - - 'compass-arm64-recipients' - -- job-template: - name: 'compass-{image}-build-{arch_tag}-{stream}' - disabled: '{obj:disabled}' - parameters: - - compass-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: '{slave_label}' - docker_file: '{docker_file}' - arch_tag: '{arch_tag}' - - string: - name: DOCKER_REPO_NAME - default: "opnfv/compass-{image}" - description: "Dockerhub repo to be pushed to." - - string: - name: DOCKER_DIR - default: "compass-{image}" - description: "Directory containing files needed by the Dockerfile" - scm: - - git-scm - builders: - - shell: - !include-raw-escape: ./opnfv-docker.sh - -- job-template: - name: 'compass-{image}-manifest-{stream}' - disabled: '{obj:disabled}' - parameters: - - compass-job-parameters: - project: '{project}' - branch: '{branch}' - slave_label: 'opnfv-build-ubuntu' - docker_file: 'Dockerfile' - arch_tag: 'amd64' - builders: - - shell: | - #!/bin/bash -ex - case "{stream}" in - "master") - sudo manifest-tool push from-args \ - --platforms linux/amd64,linux/arm64 \ - --template opnfv/compass-{image}:ARCH-latest \ - --target opnfv/compass-{image}:latest ;; - *) - sudo manifest-tool push from-args \ - --platforms linux/amd64,linux/arm64 \ - --template opnfv/compass-{image}:ARCH-stable \ - --target opnfv/compass-{image}:{stream} ;; - esac - exit $? - -# parameter macro -- parameter: - name: compass-job-parameters - parameters: - - project-parameter: - project: '{project}' - branch: '{branch}' - - label: - name: SLAVE_LABEL - default: '{slave_label}' - description: 'Slave label on Jenkins' - all-nodes: false - node-eligibility: 'ignore-offline' - - string: - name: GIT_BASE - default: https://gerrit.opnfv.org/gerrit/$PROJECT - description: 'Git URL to use on this Jenkins Slave' - - string: - name: PUSH_IMAGE - default: "true" - description: "To enable/disable pushing the image to Dockerhub." - - 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: '{docker_file}' - 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: PROJECT - default: "{project}" - description: "Project name used to enable job conditions" - -# publisher macros -- publisher: - name: 'compass-amd64-recipients' - publishers: - - email: - recipients: > - huangxiangyu5@huawei.com - wutianwei1@huawei.com - -- publisher: - name: 'compass-arm64-recipients' - publishers: - - email: - recipients: > - yibo.cai@arm.com diff --git a/jjb/releng/opnfv-docker-arm.yaml b/jjb/releng/opnfv-docker-arm.yaml deleted file mode 100644 index 68217cbd0..000000000 --- a/jjb/releng/opnfv-docker-arm.yaml +++ /dev/null @@ -1,202 +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 - 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: "" - - # 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' - <<: *fraser - <<: *storperf-arm-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - docker_repo_name: 'opnfv/storperf-graphite' - arch_tag: 'aarch64' - <<: *fraser - <<: *storperf-arm-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - docker_repo_name: 'opnfv/storperf-httpfrontend' - arch_tag: 'aarch64' - <<: *fraser - <<: *storperf-arm-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - docker_repo_name: 'opnfv/storperf-reporting' - arch_tag: 'aarch64' - <<: *fraser - <<: *storperf-arm-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - docker_repo_name: 'opnfv/storperf-swaggerui' - arch_tag: 'aarch64' - <<: *fraser - <<: *storperf-arm-receivers - - 'yardstick': - project: 'yardstick' - <<: *gambia - <<: *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" - - 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 e64764128..000000000 --- a/jjb/releng/opnfv-docker.sh +++ /dev/null @@ -1,158 +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/compass-tasks:latest "/bin/bash" ... - # 99fcb59f4787 opnfv/compass-tasks-base:latest "/bin/bash" ... - # cc5eee16b995 opnfv/compass-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/compass-tasks latest 6501569fd328 ... - # opnfv/compass-tasks-base latest 8764fe29c434 ... - # opnfv/compass-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 - -# 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 - -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 9bbcdfea7..000000000 --- a/jjb/releng/opnfv-docker.yaml +++ /dev/null @@ -1,476 +0,0 @@ ---- -############################################## -# job configuration for docker build and push -############################################## - -- project: - - name: opnfv-docker - - master: &master - stream: master - branch: '{stream}' - disabled: false - danube: &danube - stream: danube - branch: 'stable/{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 - 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: > - limingjiang@huawei.com - rexlee8776@gmail.com - emma.l.foley@intel.com - other-receivers: &other-receivers - receivers: '' - - dockerfile: "Dockerfile" - dockerdir: "docker" - arch_tag: "" - - # 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-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 - - '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 - - '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-image-k8s': - project: 'yardstick' - dockerdir: 'docker/k8s' - <<: *master - <<: *yardstick-receivers - - # projects with jobs for euphrates - - 'barometer-collectd': - project: 'barometer' - dockerdir: 'docker/barometer-collectd' - <<: *fraser - <<: *other-receivers - - 'barometer-grafana': - project: 'barometer' - dockerdir: 'docker/barometer-grafana' - <<: *fraser - <<: *other-receivers - - 'barometer-influxdb': - project: 'barometer' - dockerdir: 'docker/barometer-influxdb' - <<: *fraser - <<: *other-receivers - - 'barometer-kafka': - project: 'barometer' - dockerdir: 'docker/barometer-kafka' - <<: *fraser - <<: *other-receivers - - 'barometer-ves': - project: 'barometer' - dockerdir: 'docker/barometer-ves' - <<: *fraser - <<: *other-receivers - - 'barometer-snmp': - project: 'barometer' - dockerdir: 'docker/barometer-snmp' - <<: *fraser - <<: *other-receivers - - 'bottlenecks': - project: 'bottlenecks' - <<: *euphrates - <<: *other-receivers - - 'nfvbench': - project: 'nfvbench' - <<: *fraser - <<: *other-receivers - - 'qtip': - project: 'qtip' - dockerdir: '.' - dockerfile: 'docker/Dockerfile.local' - <<: *fraser - <<: *other-receivers - - 'storperf-master': - project: 'storperf' - dockerdir: 'docker/storperf-master' - arch_tag: 'x86_64' - <<: *fraser - <<: *storperf-receivers - - 'storperf-graphite': - project: 'storperf' - dockerdir: 'docker/storperf-graphite' - arch_tag: 'x86_64' - <<: *fraser - <<: *storperf-receivers - - 'storperf-httpfrontend': - project: 'storperf' - dockerdir: 'docker/storperf-httpfrontend' - arch_tag: 'x86_64' - <<: *fraser - <<: *storperf-receivers - - 'storperf-reporting': - project: 'storperf' - dockerdir: 'docker/storperf-reporting' - arch_tag: 'x86_64' - <<: *fraser - <<: *storperf-receivers - - 'storperf-swaggerui': - project: 'storperf' - dockerdir: 'docker/storperf-swaggerui' - arch_tag: 'x86_64' - <<: *fraser - <<: *storperf-receivers - - 'yardstick': - project: 'yardstick' - <<: *gambia - <<: *yardstick-receivers - # projects with jobs for fraser - - 'bottlenecks': - project: 'bottlenecks' - <<: *fraser - <<: *other-receivers - - 'clover': - project: 'clover' - dockerdir: '.' - dockerfile: 'docker/Dockerfile' - <<: *fraser - <<: *other-receivers - - 'clover-ns-nginx-lb': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/lb/Dockerfile' - <<: *fraser - <<: *other-receivers - - 'clover-ns-nginx-proxy': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/proxy/Dockerfile' - <<: *fraser - <<: *other-receivers - - 'clover-ns-nginx-server': - project: 'clover' - dockerdir: 'samples/services/nginx/docker' - dockerfile: 'subservices/server/Dockerfile' - <<: *fraser - <<: *other-receivers - - 'clover-ns-snort-ids': - project: 'clover' - dockerdir: 'samples/services/snort_ids/docker' - dockerfile: 'Dockerfile' - <<: *fraser - <<: *other-receivers - - 'dovetail': - project: 'dovetail' - <<: *fraser - <<: *other-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: "" - - project: - # projects with jobs for master - - 'daisy': - dockerrepo: 'daisy' - <<: *master - - 'escalator': - dockerrepo: 'escalator' - <<: *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" - - 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 457f7dc2b..000000000 --- a/jjb/releng/opnfv-utils.yaml +++ /dev/null @@ -1,215 +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-jobs.yaml b/jjb/releng/releng-jobs.yaml new file mode 100644 index 000000000..f4eda89a1 --- /dev/null +++ b/jjb/releng/releng-jobs.yaml @@ -0,0 +1,500 @@ +--- +- 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 + - pieman + - v1.22 + - v1.23 + - v1.24 + - v1.25 + - v1.26 + - v1.27 + - v1.28 + - v1.29 + - v1.30 + - v1.31 + - xena + - wallaby + - yoga + - zed + - '2023.1' + - '2023.2' + - '2024.1' + 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 663ff19e7..beb493b1a 100644 --- a/jjb/releng/releng-release-create-branch.sh +++ b/jjb/releng/releng-release-create-branch.sh @@ -9,42 +9,65 @@ ############################################################################## 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.name "fbot" git config --global user.email "jenkins-opnfv-ci@opnfv.org" # Ensure we are able to generate Commit-IDs for new patchsets 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 -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 + 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 < <(python3 releases/scripts/repos.py -b -f "$release_file") done +} + +check_if_ref_exists +main diff --git a/jjb/releng/releng-release-create-venv.sh b/jjb/releng/releng-release-create-venv.sh deleted file mode 100644 index de585fdb3..000000000 --- a/jjb/releng/releng-release-create-venv.sh +++ /dev/null @@ -1,18 +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 $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 3136d7855..000000000 --- a/jjb/releng/releng-release-jobs.yaml +++ /dev/null @@ -1,121 +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 - - 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 - - releng-release-tagging.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 - - releng-release-tagging.sh - - releng-release-create-branch.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 f8cf9c8ea..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'} @@ -15,10 +16,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 @@ -52,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 @@ -66,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 new file mode 100644 index 000000000..fbd69982d --- /dev/null +++ b/jjb/releng/releng-views.yaml @@ -0,0 +1,12 @@ +--- +- view: + name: releng + view-type: list + columns: + - status + - weather + - job + - last-success + - last-failure + - last-duration + regex: ^releng-.* diff --git a/jjb/releng/testresults-verify.yaml b/jjb/releng/testresults-verify.yaml index 958833c0f..c4f4c0f0b 100644 --- a/jjb/releng/testresults-verify.yaml +++ b/jjb/releng/testresults-verify.yaml @@ -12,6 +12,7 @@ jobs: - '{module}-verify-{stream}' - '{module}-client-verify-{stream}' + - '{module}-ui-verify-{stream}' project: 'releng-testresults' @@ -30,7 +31,7 @@ triggers: - gerrit-trigger-patchset-created: server: 'gerrit.opnfv.org' - project: '**' + project: '{project}' branch: '{branch}' files: '{module}/**' @@ -61,7 +62,7 @@ triggers: - gerrit-trigger-patchset-created: server: 'gerrit.opnfv.org' - project: '**' + project: '{project}' branch: '{branch}' files: '{module}/{module}-client/**' @@ -76,3 +77,61 @@ publishers: - publish-coverage - email-jenkins-admins-on-failure + +- job-template: + name: '{module}-ui-verify-{stream}' + + parameters: + - project-parameter: + project: '{project}' + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + + scm: + - git-scm-gerrit + + wrappers: + - nodejs-installator: + name: "testapi node" + + triggers: + - gerrit-trigger-patchset-created: + server: 'gerrit.opnfv.org' + project: '{project}' + branch: '{branch}' + files: '{module}/opnfv_testapi/ui/**' + + builders: + - shell: | + set -e + + if ! which google-chrome > /dev/null; then + #Install Google Chrome + wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee \ + /etc/apt/sources.list.d/google-chrome.list + sudo apt-get update + sudo apt-get install -y google-chrome-stable + fi + + npm -v + node -v + cd ./{module}/opnfv_testapi/ui/ + npm install -g grunt-cli + npm install + grunt e2e + mv ../tests/UI/coverage/cobertura-coverage.xml ../../../coverage.xml # Moving coverage \ + # xml to workspace as required by publish-coverage publisher. + + publishers: + - text-finder-failures + - publish-coverage + - email-jenkins-admins-on-failure + +- publisher: + name: 'text-finder-failures' + publishers: + - text-finder: + regexp: " 0 failures" + also-check-console-output: true + succeed-if-found: true |