arm-{CRATE}-main: add jobs to test different crates

 * arm-fvp-base-pac
 * arm-gic
 * arm-pl011-uart
 * arm-psci
 * arm-sp805
 * arm-xlat
 * firmware-development-guide

Change-Id: Iece4975fd4df3a778ab2535e4beb0ed13e605fac
Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
diff --git a/arm-ffa-main.yaml b/arm-ffa-main.yaml
index 0d7e7e3..40f3cf9 100644
--- a/arm-ffa-main.yaml
+++ b/arm-ffa-main.yaml
@@ -30,7 +30,7 @@
                 exclude-private: true
                 exclude-wip: true
             - comment-added-contains-event:
-                comment-contains-value: '^STAGING_RUN_FFA_CI$'
+                comment-contains-value: '^RUN_CI$'
         override-votes: true
         gerrit-build-started-verified-value: 0
         gerrit-build-successful-verified-value: 1
@@ -61,7 +61,7 @@
             description: |
               'e.g. refs/changes/13/31138/1'
         - string:
-            name: ARM_FFA_REFSPEC
+            name: ARM_FFA_GERRIT_REFSPEC
             default: ${GERRIT_REFSPEC}
             description: |
               'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
diff --git a/arm-fvp-base-pac-main.yaml b/arm-fvp-base-pac-main.yaml
new file mode 100644
index 0000000..a37e4ee
--- /dev/null
+++ b/arm-fvp-base-pac-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-fvp-base-pac-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-fvp-base-pac crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-fvp-base-pac'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-fvp-base-pac'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_FVP_BASE_PAC_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-fvp-base-pac crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-fvp-base-pac"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_FVP_BASE_PAC_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_FVP_BASE_PAC_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-fvp-base-pac
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/arm-gic-main.yaml b/arm-gic-main.yaml
new file mode 100644
index 0000000..29341a2
--- /dev/null
+++ b/arm-gic-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-gic-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-gic crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-gic'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-gic'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_GIC_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-gic crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-gic"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_GIC_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_GIC_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-gic
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/arm-pl011-uart-main.yaml b/arm-pl011-uart-main.yaml
new file mode 100644
index 0000000..a2a4f0c
--- /dev/null
+++ b/arm-pl011-uart-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-pl011-uart-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-pl011-uart crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-pl011-uart'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-pl011-uart'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_PL011_UART_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-pl011-uart crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-pl011-uart"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_PL011_UART_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_PL011_UART_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-pl011-uart
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/arm-psci-main.yaml b/arm-psci-main.yaml
new file mode 100644
index 0000000..2ed64dc
--- /dev/null
+++ b/arm-psci-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-psci-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-psci crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-psci'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-psci'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_PSCI_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-psci crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-psci"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_PSCI_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_PSCI_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-psci
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/arm-sp805-main.yaml b/arm-sp805-main.yaml
new file mode 100644
index 0000000..761d2f5
--- /dev/null
+++ b/arm-sp805-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-sp805-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-sp805 crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-sp805'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-sp805'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_SP805_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-sp805 crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-sp805"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_SP805_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_SP805_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-sp805
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/arm-xlat-main.yaml b/arm-xlat-main.yaml
new file mode 100644
index 0000000..ba8b199
--- /dev/null
+++ b/arm-xlat-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: arm-xlat-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the arm-xlat crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/arm-xlat'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/arm-xlat'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_XLAT_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the arm-xlat crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,arm-xlat"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_XLAT_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_XLAT_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=arm-xlat
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/firmware-development-guide-main.yaml b/firmware-development-guide-main.yaml
new file mode 100644
index 0000000..007ce1b
--- /dev/null
+++ b/firmware-development-guide-main.yaml
@@ -0,0 +1,126 @@
+- job:
+    name: firmware-development-guide-main
+    node: docker-amd64-tf-a-jammy
+    project-type: multijob
+    concurrent: true
+    disabled: false
+    description: Main CI job for the firmware-development-guide crate
+    properties:
+    - throttle:
+        option: project
+        enabled: true
+        max-total: 5
+    - build-discarder:
+        days-to-keep: 14
+        num-to-keep: 60
+    triggers:
+    - gerrit:
+        server-name: 'review.trustedfirmware.org'
+        projects:
+        - branches:
+          - branch-compare-type: PLAIN
+            branch-pattern: 'main'
+          project-compare-type: PLAIN
+          project-pattern: 'rust-spmc/firmware-development-guide'
+        trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+                exclude-private: true
+                exclude-wip: true
+            - comment-added-contains-event:
+                comment-contains-value: '^RUN_CI$'
+        override-votes: true
+        gerrit-build-started-verified-value: 0
+        gerrit-build-successful-verified-value: 1
+        gerrit-build-failed-verified-value: -1
+        gerrit-build-unstable-verified-value: -1
+        gerrit-build-notbuilt-verified-value: 0
+        # without explicitly setting these values to 0, the plugin will by
+        # default leave Code Review votes
+        gerrit-build-started-codereview-value: 0
+        gerrit-build-successful-codereview-value: 0
+        gerrit-build-failed-codereview-value: 0
+        gerrit-build-unstable-codereview-value: 0
+        gerrit-build-notbuilt-codereview-value: 0
+        silent: false
+        silent-start: false
+    parameters:
+        # GERRIT_{PROJECT,BRANCH,REFSPEC} are set when triggered by a Gerrit
+        # patchset - defaults below are for manual triggers
+        - string:
+            name: GERRIT_PROJECT
+            default: 'rust-spmc/firmware-development-guide'
+        - string:
+            name: GERRIT_BRANCH
+            default: 'refs/heads/main'
+        - string:
+            name: GERRIT_REFSPEC
+            default: '+refs/heads/main:refs/remotes/origin/main'
+            description: |
+              'e.g. refs/changes/13/31138/1'
+        - string:
+            name: ARM_FW_DEV_GUIDE_GERRIT_REFSPEC
+            default: ${GERRIT_REFSPEC}
+            description: |
+              'do-not-amend: used by scripts/clone.sh to fetch the correct Gerrit patchset - use GERRIT_REFSPEC instead'
+        - string:
+            name: CI_REFSPEC
+            default: '+refs/heads/tfa-next:refs/remotes/origin/tfa-next'
+            description: |
+              'Refs to fetch for the tf-a-ci-scripts repo e.g. refs/changes/13/31138/1'
+        - string:
+            name: JOBS_REFSPEC
+            default: 'refs/heads/master'
+            description: |
+              tf-a-job-configs refspec to use. The master branch is used by default.
+        - string:
+            name: TEST_FEATURES
+            description: 'Features the firmware-development-guide crate will be tested against'
+        - string:
+            name: SHARE_FOLDER
+            default: '/srv/shared/${JOB_NAME}/${BUILD_NUMBER}'
+            description: 'Folder containing shared repositories for downstream pipeline jobs'
+        - string:
+            name: CLONE_REPOS
+            default: "tf-a-ci-scripts,firmware-development-guide"
+            description: |
+              Optional arg to clone only specific projects from default list (tf-a-ci-scripts,trusted-firmware-a,tf-a-tests,spm,tf-m-tests,tf-m-extras,etc.)
+        - string:
+            name: FETCH_SSH
+            default: 1
+            description: |
+              Fetch branches with authenticated SSH instead of anonymous HTTPS
+    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
+        set -e
+        cat << EOF > tf-a-env.param
+        ARM_FW_DEV_GUIDE_GERRIT_PROJECT=${GERRIT_PROJECT}
+        ARM_FW_DEV_GUIDE_GERRIT_REFSPEC=${GERRIT_REFSPEC}
+        SHARE_FOLDER=${SHARE_FOLDER}
+        EOF
+    - multijob:
+        name: Platform independent tests
+        condition: COMPLETED
+        projects:
+        - name: generic-lib-testing
+          current-parameters: true
+          kill-phase-on: NEVER
+          predefined-parameters: |
+            TEST_REPO_NAME=firmware-development-guide
+            TEST_REPO_PROJECT=rust-spmc
+            TEST_FEATURES=${TEST_FEATURES}
+          property-file: tf-a-env.param
diff --git a/scripts/clone.sh b/scripts/clone.sh
index 5157541..c839e3d 100755
--- a/scripts/clone.sh
+++ b/scripts/clone.sh
@@ -64,14 +64,14 @@
 TF_M_TESTS_GERRIT_REFSPEC="${TF_M_TESTS_GERRIT_REFSPEC:-${REFSPEC_TF_M_TESTS}}"
 TF_M_EXTRAS_GERRIT_REFSPEC="${TF_M_EXTRAS_GERRIT_REFSPEC:-${REFSPEC_TF_M_EXTRAS}}"
 CI_REFSPEC="${CI_REFSPEC:-${REFSPEC_MASTER}}"
-ARM_FFA_REFSPEC="${ARM_FFA_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_PL011_UART_REFSPEC="${ARM_PL011_UART_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_PSCI_REFSPEC="${ARM_PSCI_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_GIC_REFSPEC="${ARM_GIC_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_FVP_BASE_PAC_REFSPEC="${ARM_FVP_BASE_PAC_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_SP805_REFSPEC="${ARM_SP805_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_XLAT_REFSPEC="${ARM_XLAT_REFSPEC:-${REFSPEC_MAIN}}"
-ARM_FW_DEV_GUIDE_REFSPEC="${ARM_FW_DEV_GUIDE_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_FFA_GERRIT_REFSPEC="${ARM_FFA_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_PL011_UART_GERRIT_REFSPEC="${ARM_PL011_UART_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_PSCI_GERRIT_REFSPEC="${ARM_PSCI_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_GIC_GERRIT_REFSPEC="${ARM_GIC_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_FVP_BASE_PAC_GERRIT_REFSPEC="${ARM_FVP_BASE_PAC_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_SP805_GERRIT_REFSPEC="${ARM_SP805_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_XLAT_GERRIT_REFSPEC="${ARM_XLAT_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
+ARM_FW_DEV_GUIDE_GERRIT_REFSPEC="${ARM_FW_DEV_GUIDE_GERRIT_REFSPEC:-${REFSPEC_MAIN}}"
 JOBS_REFSPEC="${JOBS_REFSPEC:-${REFSPEC_MASTER}}"
 
 JOBS_REPO_NAME="tf-a-job-configs"
@@ -85,13 +85,13 @@
     "${GERRIT_HOST};${RMM_GERRIT_PROJECT};tf-rmm;${RMM_REFSPEC}"
     "${GERRIT_HOST};${TF_M_TESTS_GERRIT_PROJECT};tf-m-tests;${TF_M_TESTS_GERRIT_REFSPEC}"
     "${GERRIT_HOST};${TF_M_EXTRAS_GERRIT_PROJECT};tf-m-extras;${TF_M_EXTRAS_GERRIT_REFSPEC}"
-    "${GERRIT_HOST};${ARM_FFA_GERRIT_PROJECT};arm-ffa;${ARM_FFA_REFSPEC}"
-    "${GERRIT_HOST};${ARM_PL011_UART_GERRIT_PROJECT};arm-pl011-uart;${ARM_PL011_UART_REFSPEC}"
-    "${GERRIT_HOST};${ARM_PSCI_GERRIT_PROJECT};arm-psci;${ARM_PSCI_REFSPEC}"
-    "${GERRIT_HOST};${ARM_GIC_GERRIT_PROJECT};arm-gic;${ARM_GIC_REFSPEC}"
-    "${GERRIT_HOST};${ARM_FVP_BASE_PAC_GERRIT_PROJECT};arm-fvp-base-pac;${ARM_FVP_BASE_PAC_REFSPEC}"
-    "${GERRIT_HOST};${ARM_SP805_GERRIT_PROJECT};arm-sp805;${ARM_SP805_REFSPEC}"
-    "${GERRIT_HOST};${ARM_XLAT_GERRIT_PROJECT};arm-xlat;${ARM_XLAT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_FFA_GERRIT_PROJECT};arm-ffa;${ARM_FFA_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_PL011_UART_GERRIT_PROJECT};arm-pl011-uart;${ARM_PL011_UART_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_PSCI_GERRIT_PROJECT};arm-psci;${ARM_PSCI_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_GIC_GERRIT_PROJECT};arm-gic;${ARM_GIC_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_FVP_BASE_PAC_GERRIT_PROJECT};arm-fvp-base-pac;${ARM_FVP_BASE_PAC_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_SP805_GERRIT_PROJECT};arm-sp805;${ARM_SP805_GERRIT_REFSPEC}"
+    "${GERRIT_HOST};${ARM_XLAT_GERRIT_PROJECT};arm-xlat;${ARM_XLAT_GERRIT_REFSPEC}"
     "${GERRIT_HOST};${ARM_FW_DEV_GUIDE_GERRIT_PROJECT};firmware-development-guide;${ARM_FW_DEV_GUIDE_REFSPEC}"
 )