introduce the metal3 fullstack building tests

The fullstack jobs will replace the ipa-ironc test jobs.

Change-Id: Ia4fda73fe5259bf07901f99e640db3e523635d8a
diff --git a/jjb/metal3/job_fullstack_building_test.yml b/jjb/metal3/job_fullstack_building_test.yml
new file mode 100644
index 0000000..81a22df
--- /dev/null
+++ b/jjb/metal3/job_fullstack_building_test.yml
@@ -0,0 +1,225 @@
+---
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2021 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 full stack of Metal3
+# from source. This job can be triggered on PRs manually. It creates a pipeline job.
+# The pipeline scripts are maintained in Nordix/metal3-dev-tools repository.
+
+- job-template:
+    id: fullstack_building_test
+    name: '{job_prefix}_fullstack_building_test'
+    description: "IPA and Ironic image building test."
+    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: BMO_REPO
+        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/baremetal-operator.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: PROJECT_REPO_ORG
+        default: '{repo[org]}'
+        description: 'Project github repo org name'
+    - string:
+        name: PROJECT_REPO_NAME
+        default: '{repo[name]}'
+        description: 'Project github repo name'
+    - string:
+        name: ghprbActualCommit
+        default: 'main'
+        description: 'CI Repo branch for triggering manual build'
+    - string:
+        name: ghprbAuthorRepoGitUrl
+        default: 'https://github.com/{repo[org]}/{repo[name]}.git'
+        description: 'CI Repo URL for triggering manual build'
+    - string:
+        name: ghprbTargetBranch
+        default: 'main'
+        description: 'Target branch of the PR'
+    - string:
+        name: STAGING
+        default: 'false'
+        description: 'Configures IPA builder upload mode (staging/review)'
+
+    properties:
+    - build-discarder:
+        days-to-keep: 30
+        num-to-keep: 300
+        artifact-days-to-keep: -1
+        artifact-num-to-keep: -1
+    - github:
+        url: https://github.com/{repo[org]}/{repo[name]}
+
+    triggers:
+    - github-pull-request:
+        admin-list:
+          - '{ci_github_admin_user}'
+        org-list: "{ci_github_whitelist_org}"
+        cron: 'H/5 * * * *'
+        auth-id: "{ci_ghprb_auth_id}"
+        trigger-phrase: '((.|\n)*\s)?/test-ipa(\s(.|\n)*)?'
+        skip-build-phrase: '/skip-test'
+        only-trigger-phrase: True
+        github-hooks: True
+        permit-all: False
+        auto-close-on-fail: False
+        allow-whitelist-orgs-as-admins: True
+        white-list-target-branches:
+          - 'main'
+        status-context: "test-ipa"
+        success-status: "Passed"
+        failure-status: "Failed"
+        error-status: "Error"
+        cancel-builds-on-update: True
+    pipeline-scm:
+      scm:
+      - git:
+          url: "{ci_github_repo}"
+          credentials-id: "{ci_github_jenkins_credentials_id}"
+          branches:
+            - '{branch|main}'
+          name: 'origin'
+          refspec: '+refs/heads/*:refs/remotes/origin/*'
+          wipe-workspace: True
+          honor-refspec: True
+          shallow-clone: False
+          included-regions:
+                - "ci/scripts/image_scripts/ipa_builder_elements/.*"
+                - "ci/scripts/image_scripts/build_ipa.sh"
+                - "ci/scripts/image_scripts/run_build_ironic.sh"
+                - "ci/scripts/image_scripts/start_centos_ipa_ironic_build.sh"
+      script-path: "ci/jobs/openstack_ipa_and_ironic_image_building.pipeline"
+      lightweight-checkout: False