metal3: Parameterize version and reorganize projects

By parameterizing the version, it was possible to reduce the number of files since
we used to have one job-template for each version.

Second, the projects.yml is reorganized so that we have projects based
on the different types of tests (e.g. integration and feature) instead
of based on the repository. This is because the test type has more in
common than the repository, so fewer things are duplicated.

Change-Id: I620254144f27861871c5b449afd74e9f1e0dd3a0
diff --git a/jjb/metal3/job_main_feature_tests_upgrade.yml b/jjb/metal3/job_main_feature_tests_upgrade.yml
new file mode 100644
index 0000000..f7cd895
--- /dev/null
+++ b/jjb/metal3/job_main_feature_tests_upgrade.yml
@@ -0,0 +1,111 @@
+---
+#
+# ============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 Cluster API Provider Metal3 (CAPM3)
+# main feature upgrade tests.
+# This job can be triggered manually or through a Github pull request. It creates a
+# pipeline job. The pipeline scripts are maintained in Metal3 CI project infra repository.
+
+- job-template:
+    id: main_feature_tests_upgrade
+    name: '{job_prefix}_main_feature_tests_upgrade_{image_os}'
+    description: "Upgrade main tests on {image_os}."
+    project-type: pipeline
+    defaults: global
+    disabled: False
+    concurrent: True
+    parameters:
+    - string:
+        name: PROJECT_REPO_ORG
+        default: '{org}'
+        description: 'Project github repo org name'
+    - string:
+        name: PROJECT_REPO_NAME
+        default: '{repo}'
+        description: 'Project github repo name'
+    - string:
+        name: ghprbActualCommit
+        default: 'master'
+        description: 'CI Repo branch for triggering manual build'
+    - string:
+        name: ghprbAuthorRepoGitUrl
+        default: 'https://github.com/{org}/{repo}.git'
+        description: 'CI Repo URL for triggering manual build'
+    - string:
+        name: ghprbTargetBranch
+        default: 'master'
+        description: 'Target branch of the PR'
+    - string:
+        name: IMAGE_OS
+        default: '{image_os}'
+        description: 'Distribution to use for the target host as well as source and target cluster. Can be ubuntu or centos'
+    - string:
+        name: CAPI_VERSION
+        default: 'v1alpha4'
+        description: 'Cluster API version.'
+    - string:
+        name: CAPIRELEASE
+        description: 'Cluster API release tag to upgrade from, e.g. v1.0.0'
+    - string:
+        name: CAPM3_VERSION
+        default: 'v1alpha5'
+        description: 'Cluster API provider Metal3 version.'
+    - string:
+        name: CAPM3RELEASE
+        description: 'CAPM3 release tag to upgrade from, e.g. v1.0.0'
+    - string:
+        name: TARGET_NODE_MEMORY
+        default: 4096
+        description: 'RAM size of the target host.'
+    - string:
+        name: NUM_NODES
+        default: 4
+        description: 'Number of libvirt VMs.'
+    - string:
+        name: TESTS_FOR
+        default: "feature_tests_upgrade"
+        description: 'Tests for upgrade.'
+
+    properties:
+    - build-discarder:
+        days-to-keep: 30
+        num-to-keep: 300
+        artifact-days-to-keep: -1
+        artifact-num-to-keep: -1
+
+    triggers:
+      - timed: "H 17 * * *"
+
+    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
+      script-path: "{ci_github_pipeline}"
+      lightweight-checkout: False