一、Jenkins基础
jenkins是一款非常优秀的CI工具。但是我们如何去安装jenkins?这里我们学习一下。
首先是下载,您可以下载您需要的环境的版本。因为jenkins是java编写的,所以我们直接下载war包的形式比较好。https://www.jenkins.io/download/
启动jenkins
代码语言:javascript复制java -jar jenkins.war
在浏览器中输入localhost:8080/,在弹出的页面中会让你输入安装的密码,之后进入安装页面。因为jenkins有很多插件,如果没有插件那么jenkins什么事都干不了。所以安装插件很重要,如果是离线安装,比如在测试服务器上安装。您可以直接跳过,如果需要安装插件,您就需要去下载,然后再插件的高级选项卡中,然后提交插件。但这么干的效果不是很好,因为一个插件有其他的依赖,而且插件的版本还要控制好。作者在离线安装就已经特别的痛苦了。所以这里主要写一下,在线安装,后期再研究离线安装的方法。
我们选择默认推荐的插件,这些插件包括我们基本常用的组件。这些组件基本可以满足我们的使用。
但是在开发中,我个人比较喜欢使用事件去触发,比如当我将代码提交gitea、gitlab的时候就发送一个请求到jenkins,然后jenkins进行打包并发布。所以我还喜欢安装generic webhook trigger plugin这个组件。除此之外,我之前看到一些架构师喜欢装buil monitor view,该组件提供了对在构建的项目的监控功能,如果构建成功则显示蓝色,否则标记为红色。
安装好这些插件之后,我们在对jenkins进行一些配置,我们说过jenkins是java编写的,所以jenkins的配置肯定离不了jdk,当然对于当下maven和git的配置也不可或缺。这些都是当下java项目的必备。
在全局工具中配置一些基础的环境,mavn、jdk、git等
安装好之后,你也可以新建用户
或者开启用户自动注册的功能
您可以像我一样,先创建一个流水线项目,然后将该项目添加到build monitor plugin的视图中。
这样,项目开发人员就可以通过监控大屏的视图来看到项目发布是否健康的状态。
至此,jenkins的安装就已经完毕了。在线安装就是这么简单。
二、Jenkins流水线
接下来,我们主要实现一个流水线,在之前的jenkins老版本中,需要手动配置好多,填写好多属性。在jenkins2.x中,jenkins提供了jenkinsfile,使得我们可以直接像写代码一样在jenkinsfile中加入逻辑去设计我们的流水线。这个特性就非常好了。那么我们怎么实现一个简单的流水线?我们的期望是通过代码提交来触发jenkins自动构建。
首先我们要明确的是我们的项目是git仓库中,所以需要在jenkins中配置项目的地址。对于pipline代码的文件名称,我们采用默认的jenkinsfile。
然后我们我们的项目中添加jenkins流水线的代码文件Jenkinsfile,该文件与pom.xml平齐。下边贴一点流水线脚本,如果要详细的学习,您可以上jenkins中文网站。
代码语言:javascript复制pipeline {
agent any
triggers{
GenericTrigger(
token:'app-server'
)
}
stages {
stage('Build') {
steps {
echo '1.start build.....'
bat 'mvn clean -Dmaven.test.skip=true package'
echo 'end build'
bat 'cd targetn dir n XCOPY *.war D:\pipline-test /y'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
}
}
之后,我们点击立即构建,就会出现下面这样的场景,这说明jenkins已经按照我们的想法进行构建了。
通过上述代码的jenkinsfile的执行,我们的war包已经打出来并放到了D:pipline-test目录下:
至此,一个简易的jenkins流水线已经搭建完毕了。现在还有一个问题,我们如何让我们的jenkins在我们将代码提交的gitlab中的时候就触发构建的问题。除此之外还有远程免密文件复制和执行的代码。我们逐步来探索一下。
三、使用generic webhook trigger来触发jenkins构建
要实现这样的一个构建,那么必须要一个发起的事件,我们push代码是因素,是要被gitlab或者gitea在或者是github来识别的。所以说git仓库平台是重点,当然jenkins识别这样一个请求(get、post等http请求),肯定格式已经写死了,所以我们只需要将jenkins的格式贴到git代码平台上即可。
根据generic webhook trigger的规范,我们只需在token中填入我们在pipline流水线脚本中的token即可触发与该token相同的流水线进行构建活动。
那么我就去我们的gitlab平台,将这一串请求贴到相应的事件监听器中即可。注意这里的jenkins不再是127.0.0.1了哦,除非您所有的测试项目都在本地安装!
代码语言:javascript复制http://192.168.21.119:8080/generic-webhook-trigger/invoke?token=app-server
然后我们测试一下,果然发生了构建活动,此刻是否感到挺好玩的哈!
跨机器传输应用并部署,下期再说!