introduce dynamic periodic fullstack job

This commit:
  - Is the first step in refactoring the fullstack jobs
  - Adds a version of the periodic fullstack job that uses the dynamic
    jenkins agents instead of the static workers
  - The new job will take the pipeline script from project-infra instead of
    nordix dev-tools

Signed-off-by: Adam Rozman <adam.rozman@est.tech>
Change-Id: Ic4ddedde8df4a5d38c7811c09290a791a24c4401
diff --git a/jjb/metal3/job_periodic_dynamic_fullstack_building.yml b/jjb/metal3/job_periodic_dynamic_fullstack_building.yml
new file mode 100644
index 0000000..cdc74f1
--- /dev/null
+++ b/jjb/metal3/job_periodic_dynamic_fullstack_building.yml
@@ -0,0 +1,189 @@
+---
+#
+# ============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=========================================================
+
+# Description:
+# ============
+# This file contains job template definition for building the whole Metal3 stack
+# from source. This job can be triggered manually. It creates a pipeline job.
+# The pipeline scripts are maintained in Nordix/metal3-dev-tools repository.
+
+- job-template:
+    id: periodic_dynamic_fullstack_building
+    name: '{job_prefix}_daily_periodic_dynamic_fullstack_building'
+    description: "Build and test a Metal3 cluster stack from source."
+    project-type: pipeline
+    defaults: global
+    disabled: False
+    concurrent: True
+    parameters:
+    - string:
+        name: IRONIC_REFSPEC
+        default: ''
+        description: 'Gerrit refspec of the patch we want to test. Example: refs/changes/84/800084/22'
+    - string:
+        name: IRONIC_IMAGE_REPO_COMMIT
+        default: 'HEAD'
+        description: 'Metal3 Ironic image Git repository commit hash to build'
+    - string:
+        name: IRONIC_IMAGE_BRANCH
+        default: 'main'
+        description: 'Metal3 Ironic image Git repository branch to build'
+    - string:
+        name: IRONIC_INSPECTOR_REFSPEC
+        default: ''
+        description: 'Gerrit refspec of the patch we want to test. Example: refs/changes/84/800084/22'
+    - string:
+        name: IPA_REPO
+        default: 'https://opendev.org/openstack/ironic-python-agent.git'
+        description: "The default Git repository of IPA"
+    - string:
+        name: IPA_REF
+        default: 'HEAD'
+        description: 'Ironic Python Agent repository reference to use for the build. Example: refs/changes/84/800084/22'
+    - string:
+        name: IPA_BRANCH
+        default: 'master'
+        description: 'Ironic Python Agent repository branch to build'
+    - string:
+        name: IPA_BUILDER_REPO
+        default: 'https://opendev.org/openstack/ironic-python-agent-builder.git'
+        description: 'Ironic Python Agent builder Git repository'
+    - string:
+        name: IPA_BUILDER_BRANCH
+        default: 'master'
+        description: 'Ironic Python Agent builder Git repository tool branch'
+    - string:
+        name: IPA_BUILDER_COMMIT
+        default: 'HEAD'
+        description: 'Ironic Python Agent builder Git repository tool commit'
+    - string:
+        name: METAL3_DEV_ENV_REPO
+        default: 'https://github.com/metal3-io/metal3-dev-env.git'
+        description: 'The Git repository of metal3-dev-env'
+    - string:
+        name: METAL3_DEV_ENV_BRANCH
+        default: 'main'
+        description: 'Metal3 dev-env Git repository branch'
+    - string:
+        name: METAL3_DEV_ENV_COMMIT
+        default: 'HEAD'
+        description: 'Metal3 dev-env Git repository commit'
+    - bool:
+        name: BUILD_BMO_LOCALLY
+        default: true
+        description: 'Enable or disable BMO local building (enabled by default)'
+    - bool:
+        name: BUILD_CAPM3_LOCALLY
+        default: true
+        description: 'Enable or disable CAPM3 local building (enabled by default)'
+    - bool:
+        name: BUILD_IPAM_LOCALLY
+        default: true
+        description: 'Enable or disable IPAM local building (enabled by default)'
+    - bool:
+        name: BUILD_CAPI_LOCALLY
+        default: false
+        description: 'Enable or disable CAPI local building (disabled by default)'
+    - string:
+        name: BMOREPO
+        default: 'https://github.com/metal3-io/baremetal-operator.git'
+        description: 'The Git reposiotry used to build BMO'
+    - string:
+        name: BMO_BRANCH
+        default: 'main'
+        description: 'Bare Metal Operator Git repository branch to build'
+    - string:
+        name: BMO_COMMIT
+        default: 'HEAD'
+        description: 'Cluster API provider Metal3 Git repository commit hash to build'
+    - string:
+        name: CAPM3_REPO
+        default: 'https://github.com/metal3-io/cluster-api-provider-metal3.git'
+        description: 'The Git reposiotry used to build Cluster API provider Metal3'
+    - string:
+        name: CAPM3_BRANCH
+        default: 'main'
+        description: 'Cluster API provider Metal3 Git repository branch to build'
+    - string:
+        name: CAPM3_COMMIT
+        default: 'HEAD'
+        description: 'Cluster API provider Metal3 Git repository commit hash to build'
+    - string:
+        name: IPAM_REPO
+        default: 'https://github.com/metal3-io/ip-address-manager.git'
+        description: 'IP Address Manager Git repository branch to build'
+    - string:
+        name: IPAM_BRANCH
+        default: 'main'
+        description: 'IP Address Manager Git repository branch to build'
+    - string:
+        name: IPAM_COMMIT
+        default: 'HEAD'
+        description: 'IP Address Manager Git repository commit hash to build'
+    - string:
+        name: CAPI_REPO
+        default: 'https://github.com/kubernetes-sigs/cluster-api.git'
+        description: 'Cluster API Git repository branch to build'
+    - string:
+        name: CAPI_BRANCH
+        default: 'main'
+        description: 'Cluster API Git repository branch to build'
+    - string:
+        name: CAPI_COMMIT
+        default: 'HEAD'
+        description: 'Cluster API Git repository commit hash to build'
+    - string:
+        name: STAGING
+        default: 'true'
+        description: 'Configures IPA builder upload mode (staging/review)'
+
+    properties:
+    - github:
+        url: https://github.com/Nordix/ironic-python-agent.git
+    - build-discarder:
+        days-to-keep: 30
+        num-to-keep: 300
+        artifact-days-to-keep: -1
+        artifact-num-to-keep: -1
+
+    triggers:
+      - timed: "0 4  * * 1,3,5,7"
+      - github
+
+    pipeline-scm:
+      scm:
+      - git:
+          url: "{ci_github_repo}"
+          credentials-id: "{ci_github_jenkins_credentials_id}"
+          branches:
+            - 'main'
+          name: 'origin'
+          refspec: '+refs/heads/*:refs/remotes/origin/*'
+          wipe-workspace: True
+          honor-refspec: True
+          shallow-clone: False
+          included-regions:
+                - "jenkins/scripts/artifactory/.*"
+                - "jenkins/scripts/dynamic_worker_workflow/build_ipa.sh"
+                - "jenkins/scripts/dynamic_worker_workflow/fullstack.sh"
+                - "jenkins/scripts/dynamic_worker_workflow/fullstack_build_ironic.sh"
+                - "jenkins/scripts/harbor/.*"
+      script-path: "jenkins/jobs/dynamic_fullstack_building.pipeline"
+      lightweight-checkout: False
diff --git a/jjb/metal3/projects.yml b/jjb/metal3/projects.yml
index 1dda523..dab6791 100644
--- a/jjb/metal3/projects.yml
+++ b/jjb/metal3/projects.yml
@@ -72,6 +72,7 @@
       name: "project-infra"
     jobs:
     - fullstack_project-infra_building_test
+    - periodic_dynamic_fullstack_building
 
 - project:
     name: "capm3-prow"