- job:
    name: tcwg-llvm-testsuite
    project-type: matrix
    defaults: global
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
            everyone-flat:
                - job-build
                - job-cancel
        - build-discarder:
            days-to-keep: 10
            num-to-keep: 10
    parameters:
        - string:
            name: toolchain
            default: ''
            description: 'URL of the toolchain to use. This needs to be a tarball with a /bin directory inside with either GCC or LLVM from make install'
        - string:
            name: nt_flags
            default: ''
            description: 'Flags to pass to the LNT nt producer (e.g. --threads=8 --cflag -O0)'
        - string:
            name: build_container_tag
            default: 'lts'
            description: 'Type of image to use in the container: lts_1, lts, ...'
        - string:
            name: target_list
            default: 'tcwg-tk1_32-build tcwg-apm_64-build'
            description: 'List of targets -- tcwg-x86_64-cam tcwg-tk1_32-build tcwg-apm_64-build -- should be a subset of slave axis'
        - string:
            name: scripts_branch
            default: 'refs/remotes/origin/tested'
            description: 'Branch to pull jenkins-script from'
    disabled: false
    node: tcwg-coordinator
    retry-count: 3
    concurrent: true
    display-name: 'TCWG LLVM Test-Suite'
    scm:
        - git:
            url: https://gitlab.com/LinaroLtd/tcwg/jenkins-scripts.git
            refspec: +refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*
            name: origin
            branches:
                - ${scripts_branch}
            skip-tag: true
            shallow-clone: true
            wipe-workspace: true
    axes:
        - axis:
            type: slave
            name: label
            values:
                - tcwg-x86_64-cam
                - tcwg-tk1_32-build
                - tcwg-apm_64-build
        - axis:
            type: dynamic
            name: target
            values:
                - target_list
    execution-strategy:
        combination-filter: |
            label==target
        sequential: false
    wrappers:
        - timeout:
            timeout: 300
        - timestamps
        - ssh-agent-credentials:
            # tcwg-buildslave user id
            users:
                - 'e0958a95-204f-4c14-a66c-5e2be6c5d50a'
        - build-name:
            name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}'
    builders:
        - shell: |
            #!/bin/bash
            set -exu

            . jenkins-helpers.sh

            if [ "${toolchain:+set}" != "set" ]; then
              echo "Test-suite needs a toolchain to test"
              exit 1
            fi

            # Start build container
            ${WORKSPACE}/start-container-docker.sh --label ${label} --node ${NODE_NAME} --distro ${build_container_tag} --prefix build_ > build-container.sh

            # Define build_CONTAINER_RSH and build_container_cleanup
            . ./build-container.sh

            trap "build_container_cleanup" EXIT

            # Setup job parameters and run
            build_container_exec ${WORKSPACE}/tcwg-llvm-testsuite.sh \
                                      --workspace=${WORKSPACE} \
                                      --toolchain=${toolchain} \
                                      ${nt_flags:+--nt-flags="$nt_flags"}
