##初探在容器上构建持续部署( 六 )
关于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} .
- 「预计 3 分钟读完」助力构建基于AI的服务生态体系,第四范式完成2.3亿美元C+轮融资
- 人员防控:合肥:构建五道硬核“监督网” 筑牢境外输入“防疫墙”
- PingWest品玩:Gartner报告:阿里云容器产品布局全球第一
- 【腾讯科技】微软谷歌亚马逊云竞争开启新战线 无需编写代码短时间内构建应用
- Gartner报告:阿里云容器产品布局全球第一
- 『腾讯科技』265亿美元!美国第三、第四大运营商正式合并 努力构建最好的5G网络
- 『中国经济网』构建中国云生态|华云数据携手云新信息推出数据中心设备管理平台DCM联合解决方案
- 「滕州房产超市网」滕州亿和广场2020年3月工程播报,一砖一瓦构建幸福
- 如何借助openEuler 20.03 LTS版本构建企业级服务器操作系统
- [科技女王范儿]后者致力于构建世界范围的三维建模,Niantic宣布收购AR点云技术公司6D.ai