Merge "enable onos in joid deployment"
[releng.git] / jjb / apex / apex.yml
index cb0a0f3..be595d4 100644 (file)
@@ -3,6 +3,9 @@
     jobs:
         - 'apex-verify-{stream}'
         - 'apex-merge-{stream}'
+        - 'apex-build-{stream}'
+        - 'apex-deploy-virtual-{stream}'
+        - 'apex-deploy-baremetal-{stream}'
         - 'apex-daily-{stream}'
 
     # stream:    branch with - in place of / (eg. stable-arno)
@@ -11,8 +14,6 @@
         - master:
             branch: 'master'
             gs-pathname: ''
-            flags: '-fM'
-            disabled: false
 
     project: 'apex'
 
 
     node: opnfv-jump-1
 
-    project-type: freestyle
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 10
-        artifactDaysToKeep: -1
-        artifactNumToKeep: -1
-
     parameters:
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
-            flags: '{flags}'
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: "Used for overriding the GIT URL coming from parameters macro."
 
     scm:
                 branches:
                   - branch-compare-type: 'ANT'
                     branch-pattern: '**/master'
+                file-paths:
+                  - compare-type: ANT
+                    pattern: 'ci/**'
+                  - compare-type: ANT
+                    pattern: 'build/**'
+                  - compare-type: ANT
+                    pattern: 'lib/**'
+                  - compare-type: ANT
+                    pattern: 'config/**'
                 forbidden-file-paths:
                   - compare-type: ANT
                     pattern: 'docs/**'
 
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - "apex-daily.*"
+                - "apex-deploy.*"
+                - "apex-build.*"
+
     builders:
         - 'apex-build'
         - 'apex-deploy-virtual'
 
     node: opnfv-jump-1
 
-    project-type: freestyle
-
-    logrotate:
-        daysToKeep: 30
-        numToKeep: 40
-        artifactDaysToKeep: -1
-        artifactNumToKeep: 5
+    disabled: true
 
     parameters:
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
-            flags: '{flags}'
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: "Used for overriding the GIT URL coming from parameters macro."
 
     scm:
         - 'apex-workspace-cleanup'
 
 - job-template:
-    name: 'apex-daily-{stream}'
+    name: 'apex-build-{stream}'
 
-    # Job template for daily builders
+    # Job template for builds
     #
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
 
     disabled: false
 
-    project-type: freestyle
-
-    logrotate:
-        daysToKeep: '{build-days-to-keep}'
-        numToKeep: '{build-num-to-keep}'
-        artifactDaysToKeep: '{build-artifact-days-to-keep}'
-        artifactNumToKeep: '{build-artifact-num-to-keep}'
-
     parameters:
         - project-parameter:
             project: '{project}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
-            flags: '{flags}'
         - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: "Used for overriding the GIT URL coming from parameters macro."
 
     scm:
             refspec: ''
             branch: '{branch}'
 
-    triggers:
-        - 'apex-{stream}'
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - "apex-deploy.*"
 
     builders:
         - 'apex-build'
         - 'apex-deploy-virtual'
         - 'apex-upload-artifact'
         - 'apex-workspace-cleanup'
+
+- job-template:
+    name: 'apex-deploy-virtual-{stream}'
+
+    # Job template for virtual deployment
+    #
+    # Required Variables:
+    #     stream:    branch with - in place of / (eg. stable)
+    #     branch:    branch (eg. stable)
+    node: opnfv-jump-1
+
+    disabled: false
+
+    scm:
+        - git-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: ''
+            branch: '{branch}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - "apex-verify.*"
+                - "apex-deploy.*"
+                - "apex-build.*"
+
+    builders:
+        - 'apex-deploy-virtual'
+        - 'apex-workspace-cleanup'
+
+- job-template:
+    name: 'apex-deploy-baremetal-{stream}'
+
+    # Job template for baremetal deployment
+    #
+    # Required Variables:
+    #     stream:    branch with - in place of / (eg. stable)
+    #     branch:    branch (eg. stable)
+    node: opnfv-jump-1
+
+    disabled: false
+
+    scm:
+        - git-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: ''
+            branch: '{branch}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - "apex-verify.*"
+                - "apex-deploy.*"
+                - "apex-build.*"
+                - "apex-daily.*"
+
+    builders:
+        - 'apex-deploy-baremetal'
+        - 'apex-workspace-cleanup'
+
+- job-template:
+    name: 'apex-daily-{stream}'
+
+    # Job template for daily build
+    #
+    # Required Variables:
+    #     stream:    branch with - in place of / (eg. stable)
+    #     branch:    branch (eg. stable)
+    node: opnfv-jump-1
+
+    disabled: false
+
+    scm:
+        - git-scm:
+            credentials-id: '{ssh-credentials}'
+            refspec: ''
+            branch: '{branch}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - "apex-verify.*"
+                - "apex-deploy.*"
+                - "apex-build.*"
+
+    triggers:
+        - 'apex-{stream}'
+
+    builders:
         - trigger-builds:
-          - project: 'functest-apex-{stream}'
+          - project: 'apex-build-{stream}'
+            git-revision: true
+            block: true
+        - trigger-builds:
+          - project: 'apex-deploy-virtual-{stream}'
+            git-revision: true
+            block: true
+        - trigger-builds:
+          - project: 'functest-apex-opnfv-jump-1-daily-{stream}'
             block: true
             block-thresholds:
                 build-step-failure-threshold: 'never'
 - parameter:
     name: apex-parameter
     parameters:
+        - string:
+            name: ARTIFACT_NAME
+            default: 'latest'
+            description: "RPM Artifact name that will be appended to GS_URL to deploy a specific artifact"
         - string:
             name: BUILD_DIRECTORY
             default: $WORKSPACE/build_output
             name: GS_URL
             default: artifacts.opnfv.org/$PROJECT/{gs-pathname}
             description: "URL to Google Storage."
-        - string:
-            name: FLAGS
-            default: '{flags}'
-            description: "Build Flags"
 
 ########################
 # builder macros
             # log info to console
             echo "Starting the build of Apex using OpenStack Master packages. This will take some time..."
             echo "---------------------------------------------------------------------------------------"
-            echo "Build flags for this build are ${FLAGS}"
-            echo "---------------------------------------------------------------------------------------"
             echo
             # create the cache directory if it doesn't exist
             [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
             export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
             # start the build
             cd $WORKSPACE/ci
-            ./build.sh $FLAGS -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
+            ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
             RPM_VERSION=$(grep Version $BUILD_DIRECTORY/../build/opnfv-apex.spec | awk '{ print $2 }')-$(echo $OPNFV_ARTIFACT_VERSION | tr -d '_-')
             # list the contents of BUILD_OUTPUT directory
             ls -al $BUILD_DIRECTORY
             echo "--------------------------------------------------------"
             echo
 
-            # source the file so we get OPNFV vars
+            if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
+                # if artifact name is passed the pull a
+                # specific artifact from artifacts.opnfv.org
+                RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME
+            else
+                if [[ -f opnfv.properties ]]; then
+                    # if opnfv.properties exists then use the
+                    # local build. Source the file so we get local OPNFV vars
+                    source opnfv.properties
+                    RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
+                else
+                    # no opnfv.properties means use the latest from artifacts.opnfv.org
+                    # get the latest.properties to get the link to the latest artifact
+                    curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties
+                    [[ -f opnfv.properties ]] || exit 1
+                    # source the file so we get OPNFV vars
+                    source opnfv.properties
+                    RPM_INSTALL_PATH=$OPNFV_RPM_URL
+                fi
+            fi
+
             source opnfv.properties
             RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
 
             # cleanup virtual machines before we start
             sudo opnfv-clean
             # initiate virtual deployment
-            sudo opnfv-deploy -v
+            if [ -e /usr/share/doc/opnfv/network_settings.yaml.example ]; then
+              sudo opnfv-deploy -v -d /usr/share/doc/opnfv/deploy_settings.yaml.example -n /usr/share/doc/opnfv/network_settings.yaml.example
+            else
+              sudo opnfv-deploy -v
+            fi
+            echo
+            echo "--------------------------------------------------------"
+            echo "Done!"
+
+- builder:
+    name: 'apex-deploy-baremetal'
+    builders:
+        - shell: |
+            #!/bin/bash
+            set -o errexit
+            set -o nounset
+            set -o pipefail
+
+            # log info to console
+            echo "Starting the Apex baremetal deployment."
+            echo "--------------------------------------------------------"
+            echo
+
+            if [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
+                # if artifact name is passed the pull a
+                # specific artifact from artifacts.opnfv.org
+                RPM_INSTALL_PATH=$GS_URL/$ARTIFACT_NAME
+            else
+                if [[ -f opnfv.properties ]]; then
+                    # if opnfv.properties exists then use the
+                    # local build. Source the file so we get local OPNFV vars
+                    source opnfv.properties
+                    RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
+                else
+                    # no opnfv.properties means use the latest from artifacts.opnfv.org
+                    # get the latest.properties to get the link to the latest artifact
+                    curl -s -o $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties
+                    [[ -f opnfv.properties ]] || exit 1
+                    # source the file so we get OPNFV vars
+                    source opnfv.properties
+                    RPM_INSTALL_PATH=$OPNFV_RPM_URL
+                fi
+            fi
+
+            source opnfv.properties
+            RPM_INSTALL_PATH=build_output/$(basename $OPNFV_RPM_URL)
+            if [ ! -e "$RPM_INSTALL_PATH" ]; then
+               RPM_INSTALL_PATH=http://${OPNFV_RPM_URL}
+            fi
+
+            # update / install the new rpm
+            if rpm -q opnfv-apex > /dev/null; then
+               if [ $(basename $OPNFV_RPM_URL) == $(rpm -q opnfv-apex).rpm ]; then
+                 echo "RPM is already installed"
+               elif sudo yum update -y $RPM_INSTALL_PATH | grep "does not update installed package"; then
+                   sudo yum downgrade -y $RPM_INSTALL_PATH;
+               fi
+            else
+               sudo yum install -y $RPM_INSTALL_PATH;
+            fi
+
+            # cleanup environment before we start
+            sudo opnfv-clean
+            # initiate baremetal deployment
+            sudo opnfv-deploy -i  /root/inventory/pod_settings.yaml \
+            -d /usr/share/doc/opnfv/deploy_settings.yaml.example \
+            -n /root/network/network_settings.yaml
 
             echo
             echo "--------------------------------------------------------"