• 创建自定义 Builder
    • 从零创建一个自定义 Builder
      • Builder 镜像
      • 安装 Builder
      • 使用 Builder
    • 覆盖已有的 Builder
    • 参照

    创建自定义 Builder

    如何为 Jenkins X 创建一个自定义 Builder

    在 Jenkins X 中,可以创建字段自定义的 Builder (也就是 POD templates)或覆盖已有的。你只需要基于 builder-base 或它的 slim 版本的镜像。

    从零创建一个自定义 Builder

    Builder 镜像

    首先,您需要为 Builder 创建一个 docker 镜像。从 Dockerfile 开始的一个实例可能类似于:

    1. FROM jenkinsxio/builder-base:latest
    2. # Install your tools and libraries
    3. RUN yum install -y gcc openssl-devel
    4. CMD ["gcc"]

    现在,您可以构建并发布这个镜像到您的 registry:

    1. export BUILDER_IMAGE=<YOUR_REGISTRY>/<YOUR_BUILDER_IMAGE>:<VERSION>
    2. docker build -t ${BUILDER_IMAGE} .
    3. docker push ${BUILDER_IMAGE}

    别担心,当新的镜像需要构建时,您无需每次手动执行这些步骤。Jenkins X 可以为您管理这些。您只需要把 Dockerfile 推送到类似于这个代码仓库中。然后,根据您的组织名称来调整 Jenkinsfile ,并使用下面的命令导入 Jenkins X 平台:

    1. jx import --url <REPOSITORY_URL>

    之后,您每次推送一个变更,Jenkins X 将会自动地构建和发布镜像。

    安装 Builder

    当您安装或者升级 Jenkins X 时就可以安装您的 Builder 了。

    在您的 ~/.jx/ 目录下创建文件 myvalues.yaml 并写入下面内容:

    1. jenkins:
    2. Agent:
    3. PodTemplates:
    4. MyBuilder:
    5. Name: mybuilder
    6. Label: jenkins-mybuilder
    7. volumes:
    8. - type: Secret
    9. secretName: jenkins-docker-cfg
    10. mountPath: /home/jenkins/.docker
    11. EnvVars:
    12. JENKINS_URL: http://jenkins:8080
    13. GIT_COMMITTER_EMAIL: jenkins-x@googlegroups.com
    14. GIT_AUTHOR_EMAIL: jenkins-x@googlegroups.com
    15. GIT_AUTHOR_NAME: jenkins-x-bot
    16. GIT_COMMITTER_NAME: jenkins-x-bot
    17. XDG_CONFIG_HOME: /home/jenkins
    18. DOCKER_CONFIG: /home/jenkins/.docker/
    19. ServiceAccount: jenkins
    20. Containers:
    21. Jnlp:
    22. Image: jenkinsci/jnlp-slave:3.14-1
    23. RequestCpu: "100m"
    24. RequestMemory: "128Mi"
    25. Args: '${computer.jnlpmac} ${computer.name}'
    26. Dlang:
    27. Image: <YOUR_BUILDER_IMAGE>
    28. Privileged: true
    29. RequestCpu: "400m"
    30. RequestMemory: "512Mi"
    31. LimitCpu: "1"
    32. LimitMemory: "1024Mi"
    33. Command: "/bin/sh -c"
    34. Args: "cat"
    35. Tty: true

    根据需要替换 Builder 名称和镜像。

    您可以继续安装 Jenkins X ,然后 Builder 将会自动添加到平台。

    使用 Builder

    现在,您的 Builder 已经在 Jenkins 中安装了,您可以在 Jenkinsfile 中轻松地引用:

    1. pipeline {
    2. agent {
    3. label "jenkins-mybuilder"
    4. }
    5. stages {
    6. stage('Build') {
    7. when {
    8. branch 'master'
    9. }
    10. steps {
    11. container('mybuilder') {
    12. // your steps
    13. }
    14. }
    15. }
    16. }
    17. post {
    18. always {
    19. cleanWs()
    20. }
    21. }
    22. }

    覆盖已有的 Builder

    Jenkins X 自带了很多预安装的 Builder,在安装或升级过程中可以根据需要覆盖。

    您只需要基于基础 Builder 镜像或者Builder 镜像 自定义。在上面查看细节。

    然后,您可以在目录 ~/.jx/ 中创建文件 myvalues.yaml ,并写入一下内容:

    1. jenkins:
    2. Agent:
    3. PodTemplates:
    4. Maven:
    5. Containers:
    6. Maven:
    7. Image: <YOUR_REGISTRY>/<YOUR_MAVEN_BUILDER_IMAGE>:<VERSION>
    8. Nodejs:
    9. Containers:
    10. Nodejs:
    11. Image: <YOUR_REGISTRY>/<YOUR_NODEJS_BUILDER_IMAGE>:<VERSION>
    12. Go:
    13. Containers:
    14. Go:
    15. Image: <YOUR_REGISTRY>/<YOUR_GO_BUILDER_IMAGE>:<VERSION>

    您可以继续安装 Jenkins X,这些 Builder 将会自动地添加到平台。

    参照

    • 配置
    • 安装过程中发生了什么
    • 在 Kubernetes 上安装
    • 创建新集群
    • 获取 jx