| /* |
| * This file is describing all the Jenkins jobs in the DSL format (see https://plugins.jenkins.io/job-dsl/) |
| * needed by the Kogito pipelines. |
| * |
| * The main part of Jenkins job generation is defined into the https://github.com/kiegroup/kogito-pipelines repository. |
| * |
| * This file is making use of shared libraries defined in |
| * https://github.com/kiegroup/kogito-pipelines/tree/main/dsl/seed/src/main/groovy/org/kie/jenkins/jobdsl. |
| */ |
| |
| import org.kie.jenkins.jobdsl.model.JobType |
| import org.kie.jenkins.jobdsl.utils.JobParamsUtils |
| import org.kie.jenkins.jobdsl.KogitoJobTemplate |
| import org.kie.jenkins.jobdsl.Utils |
| |
| jenkins_path = '.ci/jenkins' |
| |
| // Setup branch |
| createSetupBranchJob() |
| |
| // Nightly |
| setupDeployJob(JobType.NIGHTLY) |
| |
| // Release |
| setupDeployJob(JobType.RELEASE) |
| setupPromoteJob(JobType.RELEASE) |
| |
| ///////////////////////////////////////////////////////////////// |
| // Methods |
| ///////////////////////////////////////////////////////////////// |
| |
| void createSetupBranchJob() { |
| def jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-serverless-operator', JobType.SETUP_BRANCH, "${jenkins_path}/Jenkinsfile.setup-branch", 'Kogito Serverless Cloud Operator Setup Branch') |
| jobParams.env.putAll([ |
| JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}", |
| |
| REPO_NAME: 'kogito-serverless-operator', |
| OPERATOR_IMAGE_NAME: 'kogito-serverless-operator', |
| CONTAINER_ENGINE: 'podman', |
| CONTAINER_TLS_OPTIONS: '--tls-verify=false', |
| MAX_REGISTRY_RETRIES: 3, |
| |
| GIT_AUTHOR: "${GIT_AUTHOR_NAME}", |
| AUTHOR_CREDS_ID: "${GIT_AUTHOR_CREDENTIALS_ID}", |
| GITHUB_TOKEN_CREDS_ID: "${GIT_AUTHOR_TOKEN_CREDENTIALS_ID}", |
| |
| IS_MAIN_BRANCH: "${Utils.isMainBranch(this)}" |
| ]) |
| KogitoJobTemplate.createPipelineJob(this, jobParams)?.with { |
| parameters { |
| stringParam('DISPLAY_NAME', '', 'Setup a specific build display name') |
| |
| stringParam('BUILD_BRANCH_NAME', "${GIT_BRANCH}", 'Set the Git branch to checkout') |
| |
| stringParam('PROJECT_VERSION', '', 'Version to set.') |
| |
| // Deploy information |
| booleanParam('IMAGE_USE_OPENSHIFT_REGISTRY', false, 'Set to true if image should be deployed in Openshift registry.In this case, IMAGE_REGISTRY_CREDENTIALS, IMAGE_REGISTRY and IMAGE_NAMESPACE parameters will be ignored') |
| stringParam('IMAGE_REGISTRY_CREDENTIALS', "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_NIGHTLY}", 'Image registry credentials to use to deploy images. Will be ignored if no IMAGE_REGISTRY is given') |
| stringParam('IMAGE_REGISTRY', "${CLOUD_IMAGE_REGISTRY}", 'Image registry to use to deploy images') |
| stringParam('IMAGE_NAMESPACE', "${CLOUD_IMAGE_NAMESPACE}", 'Image namespace to use to deploy images') |
| stringParam('IMAGE_NAME_SUFFIX', '', 'Image name suffix to use to deploy images. In case you need to change the final image name, you can add a suffix to it.') |
| stringParam('IMAGE_TAG', '', 'Image tag to use to deploy images') |
| |
| booleanParam('SEND_NOTIFICATION', false, 'In case you want the pipeline to send a notification on CI channel for this run.') |
| } |
| } |
| } |
| |
| void setupDeployJob(JobType jobType) { |
| def jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-serverless-operator-deploy', jobType, "${jenkins_path}/Jenkinsfile.deploy", 'Kogito Serverless Cloud Operator Deploy') |
| jobParams.env.putAll([ |
| JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}", |
| |
| GIT_AUTHOR: "${GIT_AUTHOR_NAME}", |
| AUTHOR_CREDS_ID: "${GIT_AUTHOR_CREDENTIALS_ID}", |
| GITHUB_TOKEN_CREDS_ID: "${GIT_AUTHOR_TOKEN_CREDENTIALS_ID}", |
| |
| OPERATOR_IMAGE_NAME: 'kogito-serverless-operator', |
| CONTAINER_ENGINE: 'podman', |
| CONTAINER_TLS_OPTIONS: '--tls-verify=false', |
| MAX_REGISTRY_RETRIES: 3, |
| OPENSHIFT_API_KEY: 'OPENSHIFT_API', |
| OPENSHIFT_CREDS_KEY: 'OPENSHIFT_CREDS', |
| PROPERTIES_FILE_NAME: 'deployment.properties', |
| ]) |
| KogitoJobTemplate.createPipelineJob(this, jobParams)?.with { |
| parameters { |
| stringParam('DISPLAY_NAME', '', 'Setup a specific build display name') |
| |
| stringParam('BUILD_BRANCH_NAME', "${GIT_BRANCH}", 'Set the Git branch to checkout') |
| |
| stringParam('PROJECT_VERSION', '', 'Optional if not RELEASE. If RELEASE, cannot be empty.') |
| |
| // Build&Test information |
| booleanParam('SKIP_TESTS', false, 'Skip tests') |
| |
| // Deploy information |
| booleanParam('SKIP_DEPLOY', false, 'In case you don\'t want to deploy the final image.') |
| booleanParam('IMAGE_USE_OPENSHIFT_REGISTRY', false, 'Set to true if image should be deployed in Openshift registry.In this case, IMAGE_REGISTRY_CREDENTIALS, IMAGE_REGISTRY and IMAGE_NAMESPACE parameters will be ignored') |
| stringParam('IMAGE_REGISTRY_CREDENTIALS', "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_NIGHTLY}", 'Image registry credentials to use to deploy images. Will be ignored if no IMAGE_REGISTRY is given') |
| stringParam('IMAGE_REGISTRY', "${CLOUD_IMAGE_REGISTRY}", 'Image registry to use to deploy images') |
| stringParam('IMAGE_NAMESPACE', "${CLOUD_IMAGE_NAMESPACE}", 'Image namespace to use to deploy images') |
| stringParam('IMAGE_NAME_SUFFIX', '', 'Image name suffix to use to deploy images. In case you need to change the final image name, you can add a suffix to it.') |
| stringParam('IMAGE_TAG', '', 'Image tag to use to deploy images') |
| booleanParam('DEPLOY_WITH_LATEST_TAG', false, 'Set to true if you want the deployed image to also be with the `latest` tag') |
| |
| booleanParam('SEND_NOTIFICATION', false, 'In case you want the pipeline to send a notification on CI channel for this run.') |
| } |
| } |
| } |
| |
| void setupPromoteJob(JobType jobType) { |
| def jobParams = JobParamsUtils.getBasicJobParams(this, 'kogito-serverless-operator-promote', jobType, "${jenkins_path}/Jenkinsfile.promote", 'Kogito Serverless Cloud Operator Promote') |
| jobParams.env.putAll([ |
| JENKINS_EMAIL_CREDS_ID: "${JENKINS_EMAIL_CREDS_ID}", |
| |
| CONTAINER_ENGINE: 'podman', |
| CONTAINER_TLS_OPTIONS: '--tls-verify=false', |
| MAX_REGISTRY_RETRIES: 3, |
| PROPERTIES_FILE_NAME: 'deployment.properties', |
| |
| GIT_AUTHOR: "${GIT_AUTHOR_NAME}", |
| |
| AUTHOR_CREDS_ID: "${GIT_AUTHOR_CREDENTIALS_ID}", |
| GITHUB_TOKEN_CREDS_ID: "${GIT_AUTHOR_TOKEN_CREDENTIALS_ID}", |
| ]) |
| KogitoJobTemplate.createPipelineJob(this, jobParams)?.with { |
| parameters { |
| stringParam('DISPLAY_NAME', '', 'Setup a specific build display name') |
| |
| stringParam('BUILD_BRANCH_NAME', "${GIT_BRANCH}", 'Set the Git branch to checkout') |
| |
| // Deploy job url to retrieve deployment.properties |
| stringParam('DEPLOY_BUILD_URL', '', 'URL to jenkins deploy build to retrieve the `deployment.properties` file. If base parameters are defined, they will override the `deployment.properties` information') |
| |
| // Base information which can override `deployment.properties` |
| booleanParam('BASE_IMAGE_USE_OPENSHIFT_REGISTRY', false, 'Override `deployment.properties`. Set to true if base image should be deployed in Openshift registry.In this case, BASE_IMAGE_REGISTRY_CREDENTIALS, BASE_IMAGE_REGISTRY and BASE_IMAGE_NAMESPACE parameters will be ignored') |
| stringParam('BASE_IMAGE_REGISTRY_CREDENTIALS', "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_NIGHTLY}", 'Override `deployment.properties`. Base Image registry credentials to use to deploy images. Will be ignored if no BASE_IMAGE_REGISTRY is given') |
| stringParam('BASE_IMAGE_REGISTRY', "${CLOUD_IMAGE_REGISTRY}", 'Override `deployment.properties`. Base image registry') |
| stringParam('BASE_IMAGE_NAMESPACE', "${CLOUD_IMAGE_NAMESPACE}", 'Override `deployment.properties`. Base image namespace') |
| stringParam('BASE_IMAGE_NAME_SUFFIX', '', 'Override `deployment.properties`. Base image name suffix') |
| stringParam('BASE_IMAGE_TAG', '', 'Override `deployment.properties`. Base image tag') |
| |
| // Promote information |
| booleanParam('PROMOTE_IMAGE_USE_OPENSHIFT_REGISTRY', false, 'Set to true if base image should be deployed in Openshift registry.In this case, PROMOTE_IMAGE_REGISTRY_CREDENTIALS, PROMOTE_IMAGE_REGISTRY and PROMOTE_IMAGE_NAMESPACE parameters will be ignored') |
| stringParam('PROMOTE_IMAGE_REGISTRY_CREDENTIALS', "${CLOUD_IMAGE_REGISTRY_CREDENTIALS_NIGHTLY}", 'Promote Image registry credentials to use to deploy images. Will be ignored if no PROMOTE_IMAGE_REGISTRY is given') |
| stringParam('PROMOTE_IMAGE_REGISTRY', "${CLOUD_IMAGE_REGISTRY}", 'Promote image registry') |
| stringParam('PROMOTE_IMAGE_NAMESPACE', "${CLOUD_IMAGE_NAMESPACE}", 'Promote image namespace') |
| stringParam('PROMOTE_IMAGE_NAME_SUFFIX', '', 'Promote image name suffix') |
| stringParam('PROMOTE_IMAGE_TAG', '', 'Promote image tag') |
| booleanParam('DEPLOY_WITH_LATEST_TAG', false, 'Set to true if you want the deployed images to also be with the `latest` tag') |
| |
| // Release information which can override `deployment.properties` |
| stringParam('PROJECT_VERSION', '', 'Override `deployment.properties`. Optional if not RELEASE. If RELEASE, cannot be empty.') |
| stringParam('GIT_TAG', '', 'Git tag to set, if different from v{KOGITO_VERSION}') |
| |
| booleanParam('SEND_NOTIFICATION', false, 'In case you want the pipeline to send a notification on CI channel for this run.') |
| } |
| } |
| } |