互联网时代的软件交付周期有别于传统软件行业,快与变及其关键的两个关键词。如若采取老旧的shell人工构建、人工推包、折腾环境进行运维的方式,必将加大每次提测与交付的成本,CI/CD的概念产生即是为了解决此技术痛点。CI/CD持续交付,快速试错,为实现devOps的目标提供了关键的一环。 在这里我必须先赞一波我司的基础架构产品,两年前刚进来的时候真的觉得开发效率贼高,真正理解devOps这个概念确实是得益于我实际工作中接触到我司云平台自动化构建产品: 这也是促使我去了解jenkins的原因。 GitLab CI:基于YAML描述管道,支持集成K8S,使用 Herokuish 构建包来确定语言以及如何构建应用程序,遵循遵MIT 许可协议 虽然实现不一样,不过核心原理都差不多。任何高大上的产品都离不开迭代,任何迭代都有一个巨人肩膀或者我称之为基线。。比如日志采集基线->elk体系,爬虫->webmagic,大数据->hadoop/hive/spark 好吧扯远了 俗话说咱不能为了炒个肉,自己养猪,钻木取火,自己磨刀吧。。咱关注的维度如何组合出一道菜而不是如何养猪。。同理,做个软件没必要逻辑门或者电子元件都自己搞吧hhh ci/cd的这条基线选jenkins没错啦哈哈哈哈 Java API wrappers 此处选择使用docker pipeline插件,安装方式为docker。 手动编写触发jenkins任务,实现检验node环境并构建vue-admin项目并上传静态文件到git这一流程, scm方式或者自由风格软件方式等更多内容可以移步官方文档~ 提交代码 over~~ 插件定制开发 say hello world 插件 about jenkinsfile Jenkins 流水线(pipeline)的优势: bb两句:全文手撸,拙见轻喷。水滴石穿,做我们自己的基础架构。helloworld虽然不比企业的复杂架构/需求场景/历史技术沉淀/丰富的人力资源,但是我们依旧可以helloworld出真知,以自己的刚需为导向去发掘自己能迭代什么。jenkins,解放我撸代码提交部署的双手,即使只是部署到本机,那以后可能部署到树莓派,部署到阿里云之类的。东西多了,量级起来了,轮子的作用就出现了!一键触发!。轮子不够用了,又促使你继续去研究以及解决刚需。开源时代有则改之,无则开发哈哈哈哈技术视野之窥探CI/CD
前言:
闲聊我司
持续集成的业界产品
Go CD:遵循 Apache 2.0 许可协议,感兴趣上去看吧https://www.gocd.org/哈哈哈哈并不是我有偏见,就一天写作急赶紧继续写。
Jenkins:提供基本的构建流程,以及基于jenkinfiles描述的pipeline构建方式,社区生态提供上千个插件,jenkins自身允许集成各种语言执行编译的环境,也支持通过插件agent到不同节点(use docker/as a k8s pod/or a node machine)完成管道工作。开放接口支持二次开发。遵循 MIT 许可协议。https://www.jenkins.io/zh/万变不离其宗
进入主题:
jenkins提供了什么
1.1. docker :docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
使用blueocean提供的基础镜像,并指定挂载目录(便于存放第三方jenkins插件)以及本机docker socke挂载(搭配docker pipeline插件更香,agent本机提供docker服务)
1.2. war文件。https://mirrors.jenkins.io/war-stable/latest/jenkins.war java -jar jenkins.war --httpPort=9090
1.3. iOS brew install jenkins
1.4. linux (debian) apt-get install jenkins
2.1. 流水线任务构建:scm触发,pipeline,自由风格…
2.2. 构建历史
2.3. 系统管理:插件管理,用户管理,工作空间,凭据管理,cloud节点管理。
– Docker Pipeline插件允许在pipeline中使用docker agent
– DOCKER 插件使外部docker作为一个jenkins从节点
– K8S 使jenkins可以在k8s集群中使用pod作为jenkins slave agent。类似上述docker插件
– 其它基础依赖插件如 git/gradle/maven/node/中文… 在新手教程会指引安装。
插件安装方式,通过插件地址下载hpi格式文件手动上传/admin进入插件管理选择插件下载。
The jenkins-rest library is an object oriented java project that provides access to the Jenkins REST API programmatically to some remote API Jenkins provides. It is build using the amazing jclouds toolkit and can easily be extended to support more REST endpoints. Its feature set evolves and users are invited to contribute new endpoints via pull-requests. In its current state it is possible with this library to submit a job, track its progress through the queue, and during its execution until its completion, and obtain the build status. Services currently offered include:
The project can evolve rapidly, this list is accurate only as of the date of writing.jenkins的基础使用(demo)
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
(此处可以进行多个stage的定义,包括集成测试,代码检查之类的,有shell有api就啥都有了,此处只是为了简单演示,仅校验目标agent的node环境)
从构建日志信息中可以看出ok了
jenkins脚本:指定docker agent执行流水线构建并在jenkins工作空间产生结果文件。pipeline { agent { docker { image 'node:latest' } } stages { stage('Build') { steps { sh 'node --version' echo 'Building..' sh 'npm install' echo 'packing..' sh 'npm run pack' echo 'build..' sh 'npm run build' } } stage('Test') { steps { echo 'Testing..something' } } stage('Deploy') { steps { echo 'Deploying....' } } } }
scm检出触发流水线
构建完查看workspace
当然可以把本demo打包成dmg安装包(下图上半部分是本地打包,下半部分是进入jenkins工作空间看到的流水线结果),此处演示默认build linux的包
后面再加点后置脚本,shell将工作空间的静态文件提交到git或者部署或者运行或者集成测试都可以。jenkins灵活且强大。扩展
使用Groovy DSL(领域特定语言)编写代码
代码存储在一个名为Jenkinsfile的文本文件中,该文件可以存放到代码
库中
支持各种复杂的逻辑操作
可以与其他插件集成结语:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算