feat: add TFTF main job

This change adds the `tf-a-tftf-main` OpenCI job, which runs an
extensive suite of tests to validate the sanity of the Trusted
Firmware-A Test Framework project.

Contrary to the TF-A main job, this job runs on the TF-A `master` branch
and includes additional tests relevant only to TFTF.

This job is triggered to run daily.

Signed-off-by: Chris Kay <chris.kay@arm.com>
Change-Id: I175bdaee0d0360789c3c61051f2c56be8ba9ff89
diff --git a/tf-a-tftf-main.yaml b/tf-a-tftf-main.yaml
new file mode 100644
index 0000000..573b5a8
--- /dev/null
+++ b/tf-a-tftf-main.yaml
@@ -0,0 +1,138 @@
+- job:
+    name: tf-a-tftf-main
+    description: Main CI job for the Trusted Firmware-A Test Framework.
+    node: docker-amd64-tf-a-bionic
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    properties:
+      - authorization:
+          !include: authorization.yaml.inc
+      - build-discarder:
+          days-to-keep: 14
+          num-to-keep: 60
+      - throttle:
+          option: project
+          enabled: true
+          max-total: 5
+    parameters:
+      - string:
+          name: TF_GERRIT_PROJECT
+          default: "TF-A/trusted-firmware-a"
+          description: "Gerrit project name for Trusted Firmware-A."
+      - string:
+          name: TF_GERRIT_BRANCH
+          default: "refs/heads/master"
+          description: "Git project branch for Trusted Firmware-A."
+      - string:
+          name: TF_GERRIT_REFSPEC
+          default: "+refs/heads/master:refs/remotes/origin/master"
+          description: "Git refspec for Trusted Firmware-A."
+      - string:
+          name: TFTF_GERRIT_PROJECT
+          default: "TF-A/tf-a-tests"
+          description: "Gerrit project name for the Trusted Firmware-A Test Framework."
+      - string:
+          name: TFTF_GERRIT_BRANCH
+          default: "refs/heads/master"
+          description: "Git branch for the Trusted Firmware-A Test Framework."
+      - string:
+          name: TFTF_GERRIT_REFSPEC
+          default: "+refs/heads/master:refs/remotes/origin/master"
+          description: "Git refspec for the Trusted Firmware-A Test Framework."
+      - string:
+          name: CI_REFSPEC
+          default: "+refs/heads/master:refs/remotes/origin/master"
+          description: "Git refspec for the Trusted Firmware-A CI scripts."
+      - string:
+          name: SHARE_FOLDER
+          default: "/srv/shared/${JOB_NAME}/${BUILD_NUMBER}"
+          description: "Folder containing shared repositories for downstream pipeline jobs."
+    publishers:
+      - slack:
+          notify-unstable: True
+          notify-failure: True
+          notify-repeated-failure: True
+          notify-back-to-normal: True
+          room: "#trusted-firmware-a-ci-info"
+    triggers:
+      - timed: H H(0-6) * * 1-5
+    wrappers:
+      - credentials-binding:
+          - ssh-user-private-key:
+              credential-id: TFA_CI_BOT_USER_SSH_KEY
+              key-file-variable: CI_BOT_KEY
+              username-variable: CI_BOT_USERNAME
+              passphrase-variable: ""
+      - workspace-cleanup
+      - timestamps
+    builders:
+      - shell:
+          !include-raw: scripts/clone.sh
+      - shell: |
+          #!/bin/bash
+
+          cat << EOF > tf-a-tests-env.param
+          GERRIT_PROJECT=${TFTF_GERRIT_PROJECT}
+          GERRIT_BRANCH=${TFTF_GERRIT_BRANCH}
+          GERRIT_REFSPEC=${TFTF_GERRIT_REFSPEC}
+          QA_SERVER_PROJECT=${JOB_NAME}
+          QA_SERVER_VERSION=${BUILD_NUMBER}
+          SHARE_FOLDER=${SHARE_FOLDER}
+          EOF
+      - multijob:
+          condition: COMPLETED
+          name: Static checks on TFTF
+          projects:
+            - current-parameters: true
+              kill-phase-on: NEVER
+              name: tf-a-static-checks
+              predefined-parameters: |-
+                REPO_UNDER_TEST=trusted-firmware-tf
+              property-file: tf-a-tests-env.param
+      - multijob:
+          condition: COMPLETED
+          name: Build TFTF
+          projects:
+            - current-parameters: true
+              kill-phase-on: NEVER
+              name: tf-a-ci-gateway
+              predefined-parameters: |-
+                TEST_GROUPS=tftf-l1-build
+              property-file: tf-a-tests-env.param
+      - multijob:
+          condition: COMPLETED
+          name: Run TFTF FWU
+          projects:
+            - current-parameters: true
+              kill-phase-on: NEVER
+              name: tf-a-ci-gateway
+              predefined-parameters: |-
+                TEST_GROUPS=tftf-l2-fwu
+              property-file: tf-a-tests-env.param
+      - multijob:
+          condition: COMPLETED
+          name: Run TFTF
+          projects:
+            - current-parameters: true
+              kill-phase-on: NEVER
+              name: tf-a-ci-gateway
+              predefined-parameters: |-
+                TEST_GROUPS=tftf-l1-fvp tftf-l1-juno tftf-l2-fvp-auxiliary tftf-l2-fvp-dynamiq
+              property-file: tf-a-tests-env.param
+            - current-parameters: true
+              kill-phase-on: NEVER
+              name: tf-a-ci-gateway
+              predefined-parameters: |-
+                TEST_GROUPS=spm-l2-boot-tests spm-l3-boot-tests tf-l2-boot-tests-spm-mm tf-l3-boot-tests-spm-mm
+              property-file: tf-a-tests-env.param
+      - multijob:
+          condition: SUCCESSFUL
+          name: Run TFTF Extensive
+          projects:
+            - current-parameters: true
+              kill-phase-on: FAILURE
+              name: tf-a-ci-gateway
+              predefined-parameters: |-
+                TEST_GROUPS=tftf-l2-extensive-tests-fvp
+              property-file: tf-a-tests-env.param