build-job-settings: &build-job-settings
current-parameters: false
git-revision: true
- node-parameters: true
+ node-parameters: false
predefined-parameters: |
PUSH_IMAGE=$PUSH_IMAGE
COMMIT_ID=$COMMIT_ID
RELEASE_VERSION=$RELEASE_VERSION
DOCKERFILE=$DOCKERFILE
- ARCH_TAG=$ARCH_TAG
kill-phase-on: FAILURE
abort-all-jobs: false
manifest-job-settings: &manifest-job-settings
current-parameters: false
git-revision: true
- node-parameters: true
- predefined-parameters: |
+ node-parameters: false
+ predefined-parameters:
RELEASE_VERSION=$RELEASE_VERSION
- ARCH_TAG=$ARCH_TAG
kill-phase-on: FAILURE
abort-all-jobs: false
# yamllint enable rule:key-duplicates
jobs:
- - "functest-docker-build-push-{arch_tag}-{stream}"
- - "functest-{image}-build-push-{arch_tag}-{stream}"
- - "functest-{image}-create-manifest-{arch_tag}-{stream}"
+ - "functest-docker-{stream}"
+ - "functest-{image}-build-{arch_tag}-{stream}"
+ - "functest-{image}-manifest-{stream}"
+
########################
# job templates
########################
- job-template:
- name: 'functest-docker-build-push-{arch_tag}-{stream}'
+ name: 'functest-docker-{stream}'
project-type: multijob
- job-parameters:
project: '{project}'
branch: '{branch}'
- slave_label: '{slave_label}'
- arch_tag: '{arch_tag}'
- - string:
- name: ARCH_TAG
- default: "{arch_tag}"
- description: "If set, this value will be added to the docker image tag as a prefix"
+ slave_label: 'opnfv-build-ubuntu'
+ arch_tag: 'amd64'
properties:
- throttle:
builders:
- multijob:
- name: 'build-base-img-create-manifest'
- execution-type: SEQUENTIAL
+ name: 'build functest-core images'
+ execution-type: PARALLEL
projects:
- - name: 'functest-core-build-push-{stream}'
+ - name: 'functest-core-build-amd64-{stream}'
<<: *build-job-settings
- - name: 'functest-core-create-manifest-{stream}'
+ - 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-child-img'
+ name: 'build all functest images'
condition: SUCCESSFUL
execution-type: PARALLEL
projects:
- - name: 'functest-healthcheck-build-push-{stream}'
+ - 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-features-build-push-{stream}'
+ - name: 'functest-parser-build-amd64-{stream}'
<<: *build-job-settings
- - name: 'functest-components-build-push-{stream}'
+ - name: 'functest-parser-build-arm64-{stream}'
<<: *build-job-settings
- - name: 'functest-parser-build-push-{stream}'
+ - name: 'functest-smoke-build-amd64-{stream}'
<<: *build-job-settings
- - name: 'functest-smoke-build-push-{stream}'
+ - name: 'functest-smoke-build-arm64-{stream}'
<<: *build-job-settings
- - name: 'functest-vnf-build-push-{stream}'
+ - name: 'functest-vnf-build-amd64-{stream}'
<<: *build-job-settings
- - name: 'functest-restapi-build-push-{stream}'
+ - name: 'functest-restapi-build-amd64-{stream}'
<<: *build-job-settings
- multijob:
- name: 'create-img-manifest'
+ name: 'publish all manifests'
condition: SUCCESSFUL
execution-type: PARALLEL
projects:
- - name: 'functest-healthcheck-create-manifest-{stream}'
+ - name: 'functest-healthcheck-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-features-create-manifest-{stream}'
+ - name: 'functest-features-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-components-create-manifest-{stream}'
+ - name: 'functest-components-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-parser-create-manifest-{stream}'
+ - name: 'functest-parser-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-smoke-create-manifest-{stream}'
+ - name: 'functest-smoke-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-vnf-create-manifest-{stream}'
+ - name: 'functest-vnf-manifest-{stream}'
<<: *manifest-job-settings
- - name: 'functest-restapi-create-manifest-{stream}'
+ - name: 'functest-restapi-manifest-{stream}'
<<: *manifest-job-settings
publishers:
- - 'functest-{arch_tag}-recipients'
+ - 'functest-amd64-recipients'
+ - 'functest-arm64-recipients'
- job-template:
-
- name: 'functest-{image}-build-push-{arch_tag}-{stream}'
-
+ 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}'
- - string:
- name: DOCKER_REPO_NAME
- default: "opnfv/functest-{image}"
- description: "Dockerhub repo to be pushed to."
- - string:
- name: DOCKER_DIR
- default: "docker/{image}"
- description: "Directory containing files needed by the Dockerfile"
-
+ scm:
+ - git-scm
builders:
- - shell:
- !include-raw-escape: ./opnfv-docker.sh
+ - 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}-create-manifest-{arch_tag}-{stream}'
-
- disabled: '{obj:disabled}'
+ name: 'functest-{image}-manifest-{stream}'
parameters:
- - job-parameters:
+ - project-parameter:
project: '{project}'
branch: '{branch}'
- slave_label: '{slave_label}'
- arch_tag: '{arch_tag}'
+ - label:
+ name: SLAVE_LABEL
+ default: 'opnfv-build-ubuntu'
+ description: 'Slave label on Jenkins'
- string:
- name: DOCKER_REPO_NAME
- default: "opnfv/functest-{image}"
- description: "Dockerhub repo to be pushed to."
+ 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: DOCKER_DIR
- default: "docker/{image}"
- description: "Directory containing files needed by the Dockerfile"
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+
+ disabled: '{obj:disabled}'
builders:
- - shell:
- !include-raw-escape: ./opnfv-manifest.sh
+ - 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: