--- ############################################## # job configuration for docker build and push ############################################## - project: name: functest-docker project: functest stream: - master: branch: '{stream}' disabled: false - euphrates: branch: 'stable/{stream}' disabled: false arch_tag: - 'amd64': slave_label: 'opnfv-build-ubuntu' - 'arm64': slave_label: 'opnfv-build-ubuntu-arm' # yamllint disable rule:key-duplicates image: - 'core' - 'healthcheck' - 'features' - 'components' - 'parser' - 'smoke' - 'vnf' - 'restapi' # settings for jobs run in multijob phases build-job-settings: &build-job-settings current-parameters: false git-revision: true node-parameters: false predefined-parameters: | PUSH_IMAGE=$PUSH_IMAGE COMMIT_ID=$COMMIT_ID RELEASE_VERSION=$RELEASE_VERSION DOCKERFILE=$DOCKERFILE kill-phase-on: FAILURE abort-all-jobs: false manifest-job-settings: &manifest-job-settings current-parameters: false git-revision: true node-parameters: false predefined-parameters: RELEASE_VERSION=$RELEASE_VERSION kill-phase-on: FAILURE abort-all-jobs: false # yamllint enable rule:key-duplicates jobs: - "functest-docker-{stream}" - "functest-{image}-build-{arch_tag}-{stream}" - "functest-{image}-manifest-{stream}" ######################## # job templates ######################## - job-template: name: 'functest-docker-{stream}' project-type: multijob disabled: '{obj:disabled}' parameters: - job-parameters: project: '{project}' branch: '{branch}' slave_label: 'opnfv-build-ubuntu' arch_tag: 'amd64' properties: - throttle: max-per-node: 1 option: 'project' scm: - git-scm triggers: - pollscm: cron: "*/30 * * * *" builders: - multijob: name: 'build functest-core images' execution-type: PARALLEL projects: - name: 'functest-core-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-core-build-arm64-{stream}' <<: *build-job-settings - multijob: name: 'publish functest-core manifests' execution-type: PARALLEL projects: - name: 'functest-core-manifest-{stream}' <<: *manifest-job-settings - multijob: name: 'build all functest images' condition: SUCCESSFUL execution-type: PARALLEL projects: - name: 'functest-healthcheck-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-healthcheck-build-arm64-{stream}' <<: *build-job-settings - name: 'functest-features-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-features-build-arm64-{stream}' <<: *build-job-settings - name: 'functest-components-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-components-build-arm64-{stream}' <<: *build-job-settings - name: 'functest-parser-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-parser-build-arm64-{stream}' <<: *build-job-settings - name: 'functest-smoke-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-smoke-build-arm64-{stream}' <<: *build-job-settings - name: 'functest-vnf-build-amd64-{stream}' <<: *build-job-settings - name: 'functest-restapi-build-amd64-{stream}' <<: *build-job-settings - multijob: name: 'publish all manifests' condition: SUCCESSFUL execution-type: PARALLEL projects: - name: 'functest-healthcheck-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-features-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-components-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-parser-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-smoke-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-vnf-manifest-{stream}' <<: *manifest-job-settings - name: 'functest-restapi-manifest-{stream}' <<: *manifest-job-settings publishers: - 'functest-amd64-recipients' - 'functest-arm64-recipients' - job-template: name: 'functest-{image}-build-{arch_tag}-{stream}' disabled: '{obj:disabled}' parameters: - job-parameters: project: '{project}' branch: '{branch}' slave_label: '{slave_label}' arch_tag: '{arch_tag}' scm: - git-scm builders: - shell: | #!/bin/bash -ex case "{arch_tag}" in "arm64") sudo amd64_dirs= arm64_dirs=docker/{image} bash ./build.sh ;; *) sudo amd64_dirs=docker/{image} arm64_dirs= bash ./build.sh ;; esac exit $? - job-template: name: 'functest-{image}-manifest-{stream}' parameters: - project-parameter: project: '{project}' branch: '{branch}' - label: name: SLAVE_LABEL default: 'opnfv-build-ubuntu' description: 'Slave label on Jenkins' - string: name: PROJECT default: "{project}" description: "Project name used to enable job conditions" - string: name: RELEASE_VERSION default: "" description: "Docker tag to be built, e.g. 5.0.0, opnfv-5.0.0, 5.0.RC1" - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on this Jenkins Slave' disabled: '{obj:disabled}' builders: - shell: | #!/bin/bash -ex case "{stream}" in "master") tag="latest" ;; *) tag="{stream}" ;; esac case "{image}" in "vnf"|"restapi") sudo manifest-tool push from-args \ --platforms linux/amd64 \ --template opnfv/functest-{image}:ARCH-$tag \ --target opnfv/functest-{image}:$tag ;; *) sudo manifest-tool push from-args \ --platforms linux/amd64,linux/arm64 \ --template opnfv/functest-{image}:ARCH-$tag \ --target opnfv/functest-{image}:$tag ;; esac exit $? # parameter macro - parameter: name: job-parameters parameters: - project-parameter: project: '{project}' branch: '{branch}' - label: name: SLAVE_LABEL default: '{slave_label}' description: 'Slave label on Jenkins' - string: name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on this Jenkins Slave' - string: name: PUSH_IMAGE default: "true" description: "To enable/disable pushing the image to Dockerhub." - string: name: COMMIT_ID default: "" description: "commit id to make a snapshot docker image" - string: name: RELEASE_VERSION default: "" description: "Docker tag to be built, e.g. 5.0.0, opnfv-5.0.0, 5.0.RC1" - string: name: DOCKERFILE default: "Dockerfile" description: "Dockerfile to use for creating the image." - string: name: ARCH_TAG default: "{arch_tag}" description: "If set, this value will be added to the docker image tag as a prefix" - string: name: PROJECT default: "{project}" description: "Project name used to enable job conditions" # publisher macros - publisher: name: 'functest-arm64-recipients' publishers: - email: recipients: > cristina.pauna@enea.com alexandru.avadanii@enea.com delia.popescu@enea.com - publisher: name: 'functest-amd64-recipients' publishers: - email: recipients: > jalausuch@suse.com morgan.richomme@orange.com cedric.ollivier@orange.com feng.xiaowei@zte.com.cn juha.kosonen@nokia.com wangwulin@huawei.com