engine: Create ironic release jobs 78/5378/4
authorFatih Degirmenci <fatih.degirmenci@est.tech>
Sun, 12 Jul 2020 09:14:21 +0000 (09:14 +0000)
committerFatih Degirmenci <fatih.degirmenci@est.tech>
Sun, 12 Jul 2020 11:52:06 +0000 (11:52 +0000)
Change-Id: Ic4b1523edd1dcaa87c3317eb7bedfd865caa81fa

jjb/engine/ironic-jobs/ironic-release-jobs.yaml [new file with mode: 0644]
jjb/engine/ironic-jobs/ironic-verify-provision.yaml [moved from jjb/engine/ironic-jobs/ironic-verify-deploy-test.yaml with 84% similarity]
jjb/engine/kubernetes-jobs/kubernetes-release-deploy-test.yaml
jjb/engine/kubernetes-jobs/kubernetes-release-jobs.yaml

diff --git a/jjb/engine/ironic-jobs/ironic-release-jobs.yaml b/jjb/engine/ironic-jobs/ironic-release-jobs.yaml
new file mode 100644 (file)
index 0000000..966fd66
--- /dev/null
@@ -0,0 +1,328 @@
+---
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2019 Nordix Foundation.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+- project:
+    name: 'ironic-release'
+
+    project: 'ironic-release'
+
+    stream:
+      - 'master':
+          branch: 'master'
+          deploy-scenario: 'k8-multus-plugins'
+          promote-stack: 'true'
+
+    environment-type:
+      - offline:
+          disabled: false
+          execution-mode: offline-deployment
+          pdf: 'file:///opt/engine/offline/git/hwconfig/pods'
+          idf: 'file:///opt/engine/offline/git/hwconfig/pods'
+          openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'
+
+    distro:
+      - ubuntu1804
+
+    phase:
+      - package
+      - promote
+
+    jobs:
+      - 'ironic-release-{distro}-{stream}'
+      - 'ironic-package-{distro}-{stream}'
+      - 'ironic-release-{environment-type}-provision-{distro}-baremetal-{stream}'
+      - 'ironic-promote-{distro}-{stream}'
+
+- job-template:
+    name: 'ironic-release-{distro}-{stream}'
+
+    project-type: multijob
+
+    disabled: '{obj:disabled}'
+
+    node: 'engine-package-{distro}-fra'
+
+    concurrent: false
+
+    parameters:
+      - string:
+          name: BRANCH
+          default: '{branch}'
+          description: 'Branch the job is created for. DO NOT MODIFY!'
+      - string:
+          name: DISTRO
+          default: '{distro}'
+          description: 'Distribution to provision and configre target nodes with. DO NOT MODIFY!'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: '{deploy-scenario}'
+          description: 'Scenario to test change with. This depends on the branch of the stack.'
+      - string:
+          name: CI_LOOP
+          default: 'release'
+          description: 'CI loop type. DO NOT MODIFY!'
+      - string:
+          name: VERBOSITY
+          default: 'false'
+          description: 'Engine verbosity'
+      - string:
+          name: NORDIX_ENGINE_VERSION
+          default: 'master'
+          description: 'Engine version of engine to package, deploy, test, release'
+      - string:
+          name: STACK_TYPE
+          default: 'ironic'
+          description: 'Stack to package, deploy, test, release'
+      - string:
+          name: STACK_VERSION
+          default: '{branch}'
+          description: 'Stack version of engine to package, deploy, test, release'
+      - string:
+          name: NORDIX_BIFROST_VERSION
+          default: 'master'
+          description: 'Bifrost version of engine to package, deploy, test, release'
+      - string:
+          name: PROMOTE_STACK
+          default: '{promote-stack}'
+          description: 'Heat version of engine to package, deploy, test, release'
+
+    properties:
+      - logrotate
+      # NOTE (fdegir): throttle categories are controlled in jenkins global configuration
+      - throttle:
+          enabled: true
+          max-per-node: 1
+          max-total: 1
+          option: category
+          categories:
+            - engine-verify-package
+
+    wrappers:
+      - build-timeout:
+          timeout: 600
+      - mask-passwords
+      - fix-workspace-permissions
+      - openstack:
+          single-use: True
+
+    triggers:
+      - pollscm:
+          cron: "#H 0,8,16 * * *"
+
+    scm:
+      - git:
+          url: https://gerrit.nordix.org/infra/engine.git
+          branches:
+            - master
+          timeout: 15
+          wipe-workspace: true
+
+    builders:
+      - 'generate-release-metadata-macro'
+      - inject:
+          properties-file: "$WORKSPACE/release.properties"
+      - 'generate-ssh-keypair-macro'
+      - 'wait-pkg-mgr-macro'
+      - multijob:
+          name: Packaging
+          condition: SUCCESSFUL
+          execution-type: PARALLEL
+          projects:
+            - name: 'ironic-package-{distro}-{stream}'
+              current-parameters: false
+              git-revision: true
+              node-parameters: true
+              property-file: "$WORKSPACE/release.properties"
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: Provisioning
+          condition: SUCCESSFUL
+          execution-type: PARALLEL
+          projects:
+            - name: 'ironic-release-offline-provision-{distro}-baremetal-{stream}'
+              current-parameters: false
+              git-revision: true
+              node-parameters: false
+              property-file: "$WORKSPACE/release.properties"
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: Promotion
+          condition: SUCCESSFUL
+          execution-type: PARALLEL
+          projects:
+            - name: 'ironic-promote-{distro}-{stream}'
+              current-parameters: false
+              git-revision: true
+              node-parameters: true
+              property-file: "$WORKSPACE/release.properties"
+              kill-phase-on: FAILURE
+              abort-all-job: true
+
+- job-template:
+    name: 'ironic-package-{distro}-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    parameters:
+      - string:
+          name: EXECUTION_MODE
+          default: 'packaging'
+          description: 'Execution mode to run engine'
+
+    properties:
+      - logrotate
+
+    wrappers:
+      - build-timeout:
+          timeout: 70
+      - credentials-binding:
+          - username-password-separated:
+              credential-id: 'nordix-cicd-arm-credentials'
+              username: NORDIX_ARM_USERNAME
+              password: NORDIX_ARM_TOKEN
+      - mask-passwords
+      - fix-workspace-permissions
+
+    scm:
+      - git:
+          url: https://gerrit.nordix.org/infra/engine.git
+          branches:
+            - master
+          timeout: 15
+          wipe-workspace: true
+
+    builders:
+      - 'package-macro'
+      - 'upload-artifact-macro'
+
+- job-template:
+    name: 'ironic-promote-{distro}-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    properties:
+      - logrotate
+
+    wrappers:
+      - build-timeout:
+          timeout: 30
+      - credentials-binding:
+          - username-password-separated:
+              credential-id: 'nordix-cicd-arm-credentials'
+              username: NORDIX_ARM_USERNAME
+              password: NORDIX_ARM_TOKEN
+      - mask-passwords
+      - fix-workspace-permissions
+
+    scm:
+      - git:
+          url: https://gerrit.nordix.org/infra/engine.git
+          branches:
+            - master
+          timeout: 15
+          wipe-workspace: true
+
+    builders:
+      - 'promote-macro'
+
+- job-template:
+    name: 'ironic-release-{environment-type}-provision-{distro}-baremetal-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    node: baremetal-deploy
+
+    concurrent: false
+
+    parameters:
+      - string:
+          name: EXECUTION_MODE
+          default: 'offline-deployment'
+          description: 'Engine execution mode'
+      - string:
+          name: PDF
+          default: '{pdf}/${{NODE_NAME}}-pdf.yml'
+          description: 'PDF file to use for deployment. DO NOT MODIFY!'
+      - string:
+          name: IDF
+          default: '{idf}/${{NODE_NAME}}-idf.yml'
+          description: 'IDF file to use for deployment. DO NOT MODIFY!'
+      - string:
+          name: SLAVE_LABEL
+          default: 'baremetal-deploy'
+          description: 'Type of the slave'
+
+    properties:
+      - logrotate
+      - throttle:
+          max-per-node: 1
+          max-total: 1
+          option: project
+
+    wrappers:
+      - build-timeout:
+          timeout: 60
+      - mask-passwords
+      - fix-workspace-permissions
+      - credentials-binding:
+          - file:
+              credential-id: '{openrc-credentials-file}'
+              variable: OPENRC_FILE
+      - pre-scm-buildstep:
+          failOnError: true
+          buildsteps:
+            - shell: |
+                #!/bin/bash
+                sudo chown -R $USER:$USER $WORKSPACE || exit 1
+                # offline nodes can not resolve Nordix Artifactory and Gerrit
+                if [[ "$EXECUTION_MODE" == "offline-deployment" ]]; then
+                  echo "Info  : Offline deployment. Adding City OpenStack Endpoint, Nordix Artifactory and Gerrit Public IP to /etc/hosts"
+                  sudo sed -i 's/^search/# search/' /etc/resolv.conf
+                  sudo bash -c "cat << EOF >> /etc/hosts
+                # managed by engine
+                91.106.198.25 artifactory.nordix.org
+                91.106.198.142 gerrit.nordix.org
+                86.107.242.50 fra1.citycloud.com
+                # managed by engine
+                EOF"
+                  # we need to get rid of search domain as well
+                  sudo sed -i 's/^search/# search/' /etc/resolv.conf
+                fi
+
+    scm:
+      - git:
+          url: https://gerrit.nordix.org/infra/engine.git
+          branches:
+            - master
+          timeout: 15
+          wipe-workspace: true
+
+    builders:
+      - description-setter:
+          description: provisioning
+      - 'download-artifact-macro'
+      - 'deploy-macro'
+
+# vim: set ts=2 sw=2 expandtab:
similarity index 84%
rename from jjb/engine/ironic-jobs/ironic-verify-deploy-test.yaml
rename to jjb/engine/ironic-jobs/ironic-verify-provision.yaml
index 5a1051362d970362f76e7eb8d837c73c0ca81f79..827fb09b2916e3bfcaf3869c368fb84987c90725 100644 (file)
@@ -18,9 +18,9 @@
 # ============LICENSE_END=========================================================
 
 - project:
-    name: 'ironic-verify-deploy-test'
+    name: 'ironic-verify-provision'
 
-    project: 'ironic-verify-deploy-test'
+    project: 'ironic-verify-provision'
 
     stream:
       - 'master':
     dependency-job-var: 'TRIGGER_ironic_verify_package_{distro}_{stream}_BUILD_RESULT'
 
     jobs:
-      - 'ironic-verify-{environment-type}-deploy-test-{distro}-{cloud}-{type}-{stream}'
-      - 'ironic-verify-{environment-type}-{phase}-{distro}-{cloud}-{type}-{stream}'
+      - 'ironic-verify-{environment-type}-provision-{distro}-{cloud}-{type}-{stream}'
 
 - job-template:
-    name: 'ironic-verify-{environment-type}-deploy-test-{distro}-{cloud}-{type}-{stream}'
-
-    project-type: multijob
+    name: 'ironic-verify-{environment-type}-provision-{distro}-{cloud}-{type}-{stream}'
 
     disabled: '{obj:disabled}'
 
           dependency-jobs: '{dependency-jobs}'
 
     wrappers:
+      - fix-workspace-permissions
       - build-timeout:
           timeout: 180
       - credentials-binding:
 
     builders:
       - 'generate-change-metadata-macro'
-      - multijob:
-          name: "{environment-type} deployment on {type} instances"
-          condition: SUCCESSFUL
-          execution-type: PARALLEL
-          projects:
-            - name: 'ironic-verify-{environment-type}-deploy-{distro}-city-{type}-{stream}'
-              current-parameters: true
-              git-revision: true
-              node-parameters: true
-              kill-phase-on: FAILURE
-              abort-all-job: false
-              property-file: $WORKSPACE/change.properties
+      - inject:
+          properties-file: "$WORKSPACE/change.properties"
+      - 'generate-ssh-keypair-macro'
+      - 'download-artifact-macro'
+      - 'wait-pkg-mgr-macro'
+      - 'deploy-macro'
 
     publishers:
       - postbuildscript:
               build-steps:
                 - 'wait-pkg-mgr-macro'
                 - 'delete-stack-macro'
-
-- job-template:
-    name: 'ironic-verify-{environment-type}-{phase}-{distro}-{cloud}-{type}-{stream}'
-
-    disabled: '{obj:disabled}'
-
-    concurrent: true
-
-    properties:
-      - logrotate
-      - throttle:
-          max-per-node: 1
-          max-total: 3
-          option: project
-
-    scm:
-      - git-scm-gerrit:
-          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
-          branch: $GERRIT_BRANCH
-          refspec: $GERRIT_REFSPEC
-          wipe_workspace: true
-          clean_before: false
-
-    wrappers:
-      - build-timeout:
-          timeout: 180
-      - credentials-binding:
-          - file:
-              credential-id: '{openrc-credentials-file}'
-              variable: OPENRC_FILE
-          - username-password-separated:
-              credential-id: 'nordix-cicd-arm-credentials'
-              username: NORDIX_ARM_USERNAME
-              password: NORDIX_ARM_TOKEN
-      - mask-passwords
-      - fix-workspace-permissions
-
-    builders:
-      - 'generate-ssh-keypair-macro'
-      - 'wait-pkg-mgr-macro'
-      - 'download-artifact-macro'
-      - '{phase}-macro'
index f7041d8652bc74907cffabeab69b46bf9683b3ee..3a15f49ac005d660255c6f3e27402a8b6689d92c 100644 (file)
     concurrent: false
 
     parameters:
+      - string:
+          name: EXECUTION_MODE
+          default: 'offline-deployment'
+          description: 'Engine execution mode'
       - string:
           name: PDF
           default: '{pdf}/${{NODE_NAME}}-pdf.yml'
index 9aad833d8a31cf95ca184b606bc70d52ba22aa7a..beac16849680668b0aecbe44aa80e10a0cff168c 100644 (file)
       - offline:
           disabled: false
           execution-mode: offline-deployment
+          openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'
 
     distro:
       - ubuntu1804
 
-    phase:
-      - package
-      - promote
-
-    cloud:
-      - city:
-          openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'
-
     jobs:
       - 'kubernetes-release-{distro}-{stream}'
       - 'kubernetes-package-{distro}-{stream}'