构建打包
打包源码为 kubernetes 应用
我们使用 draft 风格为不同的语言构建打包 ,我们通过导入或者创建他们,运行时和构建工具添加必要的配置文件,因此我们可以在 Kubernetes 中构建和部署他们。
如果由于工程没有被创建或导入而不存在的话,构建包会默认使用下面的文件:
Dockerfile
把代码构建为不可变的 docker 镜像,准备在 Kubernetes 中运行Jenkinsfile
为应用使用申明式 Jenkins 流水线定义 CI/CD 步骤- helm chart 在文件夹
charts
中生成可以在 Kubernets 中运行的 Kubernetes 资源 - 在
charts/preview
文件夹中的 preview chart 定义了基于 Pull Request 部署一个预览环境的所有依赖默认的构建包在 https://github.com/jenkins-x-buildpacks/jenkins-x-kubernetes,每个语言或者构建工具在一个文件夹中。
jx
命令行克隆构建包到你的文件夹 .~/.jx/draft/packs/
,并在你每次尝试创建或者到一个工程时通过 git pull
来更新他们。
创建新的构建
这里有如何创建一个新的构建包的指导 —— 如果有任何不清楚的请加入社区并提问,我们很乐意帮助!
最好的开始就是 快速开始 应用。你可以当作一个测试的样例工程。因此,创建或查找一个合适的例子工程,然后导入。
然后,如果不存在的话,手动添加 Dockerfile
和 Jenkinsfile
。你可以从当前构建包文件夹开始 —— 使用相似的语言或框架。
如果你的构建包使用了 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。
如果你需要任何帮助 请加入社区 。