构建打包

打包源码为 kubernetes 应用

我们使用 draft 风格为不同的语言_构建打包_ ,我们通过导入或者创建他们,运行时和构建工具添加必要的配置文件,因此我们可以在 Kubernetes 中构建和部署他们。

如果由于工程没有被创建或导入而不存在的话,构建包会默认使用下面的文件:

  • Dockerfile 把代码构建为不可变的 docker 镜像,准备在 Kubernetes 中运行
  • Jenkinsfile 为应用使用申明式 Jenkins 流水线定义 CI/CD 步骤
  • helm chart 在文件夹 charts 中生成可以在 Kubernetes 中运行的 Kubernetes 资源
  • charts/preview 文件夹中的 preview chart 定义了基于 Pull Request 部署一个预览环境的所有依赖

默认的构建包在 https://github.com/jenkins-x-buildpacks/jenkins-x-kubernetes,每个语言或者构建工具在一个文件夹中。

jx 命令行克隆构建包到你的文件夹 .~/.jx/draft/packs/ ,并在你每次尝试创建或者到一个工程时通过 git pull 来更新他们。

创建新的构建

我们欢迎贡献,因此,请考虑增加新的构建包和 pod 模板

这里有如何创建一个新的构建包的指导 —— 如果有任何不清楚的请加入社区并提问,我们很乐意帮助!

最好的开始就是 快速开始 应用。你可以当作一个测试的样例工程。因此,创建或查找一个合适的例子工程,然后导入

然后,如果不存在的话,手动添加 DockerfileJenkinsfile 。你可以从当前构建包文件夹开始 —— 使用相似的语言或框架。

如果你的构建包使用了 pod 模板 中不存在的构建工具,你需要提交一个新的 pod 模板,还可能需要一个新的构建容器景象。

一旦你有了 pod 模板可以使用,例如你的 Jenkinsfile 中引用到的 jenkins-foo

// my declarative Jenkinsfile

pipeline {
    agent {
      label "jenkins-foo"
    }
    environment {
      ...
    }
    stages {
      stage('CI Build and push snapshot') {
        steps {
          container('foo') {
            sh "foo deploy"
          }

一旦你的 Jenkinsfile 可以在你的示例工程为你的语言实现 CI/CD 的话,我们因该把 Dockerfile, Jenkinsfile 和 charts 文件夹拷贝到你的派生 jenkins-x/draft-packs 仓库 中。

你可以通过把他们添加到构建包的本地库 ~/.jx/draft/packs/github.com/jenkins-x/draft-packs/packs 中来尝试。

例如:

export PACK="foo"
mkdir ~/.jx/draft/packs/github.com/jenkins-x/draft-packs/packs/$PACK
cp Dockerfile Jenkinsfile  ~/.jx/draft/packs/github.com/jenkins-x/draft-packs/packs/$PACK

# the charts will be in some folder charts/somefoo
cp -r charts/somefoo ~/.jx/draft/packs/github.com/jenkins-x/draft-packs/packs/$PACK/charts

当你的构建包在 ~/.jx/draft/packs/github.com/jenkins-x/draft-packs/packs/ 文件夹中,就可以通过命令 jx import 来导入工程,使用编程语言来检测并查找最合适的构建包。如果你的构建包自定义检测逻辑的话,请让我们指导,我们可以帮助改进 jx import 使得在你的构建包上做的更好。例如:我们有一些自定义逻辑更好地处理 maven 和 Gradle

如果你需要任何帮助 请加入社区