diff options
Diffstat (limited to 'jjb/functest/functest-docker.yaml')
-rw-r--r-- | jjb/functest/functest-docker.yaml | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/jjb/functest/functest-docker.yaml b/jjb/functest/functest-docker.yaml new file mode 100644 index 000000000..50c7c3816 --- /dev/null +++ b/jjb/functest/functest-docker.yaml @@ -0,0 +1,286 @@ +--- +############################################## +# job configuration for docker build and push +############################################## +- project: + + name: functest-docker + + project: functest + + stream: + - master: + branch: '{stream}' + disabled: false + - fraser: + 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' + + # 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 + GERRIT_REFNAME=$GERRIT_REFNAME + 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: + GERRIT_REFNAME=$GERRIT_REFNAME + kill-phase-on: FAILURE + abort-all-jobs: false + + # yamllint enable rule:key-duplicates + jobs: + - "functest-docker-{stream}" + - "functest-{image}-docker-build-{arch_tag}-{stream}" + - "functest-{image}-docker-manifest-{stream}" + +######################## +# job templates +######################## +- job-template: + name: 'functest-docker-{stream}' + + project-type: multijob + + disabled: '{obj:disabled}' + + parameters: + - functest-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 * * * *" + - gerrit-trigger-tag-created: + project: '{project}' + + builders: + - multijob: + name: 'build functest-core images' + execution-type: PARALLEL + projects: + - name: 'functest-core-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-core-docker-build-arm64-{stream}' + <<: *build-job-settings + - multijob: + name: 'publish functest-core manifests' + execution-type: PARALLEL + projects: + - name: 'functest-core-docker-manifest-{stream}' + <<: *manifest-job-settings + - multijob: + name: 'build all functest images' + condition: SUCCESSFUL + execution-type: PARALLEL + projects: + - name: 'functest-healthcheck-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-healthcheck-docker-build-arm64-{stream}' + <<: *build-job-settings + - name: 'functest-features-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-features-docker-build-arm64-{stream}' + <<: *build-job-settings + - name: 'functest-components-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-components-docker-build-arm64-{stream}' + <<: *build-job-settings + - name: 'functest-parser-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-parser-docker-build-arm64-{stream}' + <<: *build-job-settings + - name: 'functest-smoke-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-smoke-docker-build-arm64-{stream}' + <<: *build-job-settings + - name: 'functest-vnf-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-vnf-docker-build-arm64-{stream}' + <<: *build-job-settings + - multijob: + name: 'publish all manifests' + condition: SUCCESSFUL + execution-type: PARALLEL + projects: + - name: 'functest-healthcheck-docker-manifest-{stream}' + <<: *manifest-job-settings + - name: 'functest-features-docker-manifest-{stream}' + <<: *manifest-job-settings + - name: 'functest-components-docker-manifest-{stream}' + <<: *manifest-job-settings + - name: 'functest-parser-docker-manifest-{stream}' + <<: *manifest-job-settings + - name: 'functest-smoke-docker-manifest-{stream}' + <<: *manifest-job-settings + - name: 'functest-vnf-docker-manifest-{stream}' + <<: *manifest-job-settings + + publishers: + - 'functest-amd64-recipients' + - 'functest-arm64-recipients' + +- job-template: + name: 'functest-{image}-docker-build-{arch_tag}-{stream}' + disabled: '{obj:disabled}' + parameters: + - functest-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}-docker-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: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on this Jenkins Slave' + - string: + name: REPO + default: "opnfv" + description: "Repository name for functest images" + + + disabled: '{obj:disabled}' + + builders: + - shell: | + #!/bin/bash -ex + case "{stream}" in + "master") + tag="latest" ;; + *) + tag="{stream}" ;; + esac + sudo manifest-tool push from-args \ + --platforms linux/amd64,linux/arm64 \ + --template $REPO/functest-{image}:ARCH-$tag \ + --target $REPO/functest-{image}:$tag + exit $? + +# parameter macro +- parameter: + name: functest-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: GERRIT_REFNAME + default: "" + description: "Docker tag to be built, e.g. refs/tags/5.0.0, refs/tags/opnfv-5.0.0, refs/tags/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" + - string: + name: REPO + default: "opnfv" + description: "Repository name for functest images" + +# 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 + valentin.boucher@kontron.com |