@初探在容器上构建持续部署( 六 )
关于WORKSPACE详情 , 请参阅Jenkins Project Artifacts and Workspace
https://stackoverflow.com/questions/39397329/jenkins-project-artifacts-and-workspace
- 最佳实践
另外能写代码就不要在页面上配置 , 只有代码是可以重复执行并保证稳定结果的 , 页面配置不能移植 , 而且不能保证每次配置都产生一样的结果 。
- 尽量少使用插件
第一 , 每个插件都有他自己的设置方式(一般要在Jenkins插件页面进行设置) , 但这种设置是与其他持续部署工具不兼容的 。 如果以后你要迁移到其他持续部署工具 , 这些设置都需要废弃 。
第二 , 每个插件都有自己的命令格式 , 因此你需要另外学习一套新的命令 。
第三 , 这些插件往往只支持部分功能 , 使你能做的事情受到了限制 。
例如 , 你需要创建一个Docker镜像文件 , 命令如下 , 它将创建一个名为''jfeng45/jenkins-k8sdemo''的镜像 , 镜像的默认文件是在项目的根目录下的Dockerfile 。
app = docker.build(''jfeng45/jenkins-k8sdemo'')
但创建Docker镜像文件命令有许多参数选项 , 例如 , 你的镜像文件名不是Dockerfile , 并且目录不是在项目根目录下 , 应如何写呢?这在以前的版本是不支持的 , 后来的版本支持了 , 但毕竟不太方便 , 还要学新的命令 。 最好的办法是能直接使用Docker命令 , 这样就完美的解决了上面说的三个问题 。 答案就在前面讲的Jenkins原理里 , 其实绝大多数插件都是不需要的 , 你只要自己创建一个Jenkins子节点容器 , 并安装相应的软件就能圆满解决 。
下面是使用插件的脚本和不使用的对比 , 不使用的看起来更长 , 那时因为使用插件的脚本和Jenkins里的凭证设置有更好的集成 , 而不使用的脚本没有 。 但除了这个小缺点 , 其他方面不使用的脚本都要远远优于使用插件的 。
使用插件的脚本(用插件命令):
stage('Create Docker images') {
container('docker') {
app = docker.build(''jfeng45/codedemo'', ''-f ${WORKSPACE}/script/kubernetes/backend/docker/Dockerfile-k8sdemo-test .'')
docker.withRegistry('', 'dockerhub') {
// Push image and tag it with our build number for versioning purposes.
app.push(''${env.BUILD_NUMBER}'')
}
}
}
不使用插件的脚本(直接用Docker命令):
stage('Create a d ocker image') {
def imageName = ''jfeng45/codedemo:${env.BUILD_NUMBER}''
def dockerDirectory = ''${kubBackendDirectory}/docker/Dockerfile-k8sdemo-backend''
container('modified-jenkins') {
withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'dockerhub',
usernameVariable: 'DOCKER_HUB_USER',
passwordVariable: 'DOCKER_HUB_PASSWORD']]) {
sh ''''''
docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASSWORD}
docker build -f ${WORKSPACE}${dockerDirectory} -t ${imageName} .
推荐阅读
- 【大连】大连化物所:通过纳米反应器的电催化效应构建高性能的锂硫电池
- []构建120Hz壁垒,全球最快充电,Find X2标准版表现均衡且全面
- 『甘肃』“绿”动甘肃加快构建清洁高效能源体系
- 砍柴网:华为云 Volcano 容器批量计算正式成为 CNCF 官方项目
- 计算:引领云原生|华为云Volcano容器批量计算正式成为CNCF官方项目
- 『karl』视觉设计软件公司「Lucid Software」获 5200 万美元融资,帮助用户构建工作图表
- 「海信」海信发布2020年4大系列电视新品 构建超画质和全场景娱乐体验
- 「」从0到100,用户画像的构建思路,值得学习参考!
- 「路由器」接上U盘就能构建虚拟局域网!蒲公英X5路由器使用体验分享
- 『IBM中国』全球CEO洞察:构建数据优势,这3大领域是关键!
