十二.Jenkins持续集成
一.安装jenkins
1.下载
Jenkins下载地址:http://jenkins-ci.org/ 或 https://mirrors.jenkins-ci.org/redhat/
2.安装
可以通过官网的安装方式来安装
安装完后,需要修改以下的配置
vim /usr/lib/systemd/system/jenkins.service
如果对权限不熟的话,把用户改成root,如下所示
修改Jenkins的端口
修改用如下命令启动
systemctl start jenkins
二.上传到运行服务器
2.1jenkins的构建流程
2.2安装jenkins的常用插件
2.2.1汉化
2.2.2GIT和SSH
2.3通过freestyle构建项目
点击Jenkins上面的新建任务,输入名称,然后选中Freestyle project,如下图所示
在凭证管理页面中,点击“全局”或“系统”选项卡,根据需要选择要添加凭证的范围。
接着,点击“添加凭证”按钮,选择要添加的凭证类型,例如SSH用户名和密码、Git令牌等。
注意:ssh配置中Remote Directory是目标服务器后进入的目录,我设置为了/jenkis_data
注意:在Jenkins中添加凭证时,请注意保护您的凭证信息,不要将其暴露在公共场合。同时,及时删除不再使用的凭证,以免造成潜在的安全隐患。
配置Freestyle项目
在Freestyle项目的配置界面中,有多个选项可以配置。以下是一些常用的配置选项
源代码管理:选择版本控制系统(例如Git、Subversion、Mercurial等),并填写仓库地址和认证信息。
构建触发器:定义何时触发构建操作,例如定期触发、代码提交触发、另一个项目构建完成触发等。
构建环境:定义构建环境,例如构建所需的JDK版本、构建参数、构建工具等。
构建步骤:定义构建操作的步骤,例如构建命令、测试命令、静态分析命令等。
构建后操作:定义构建完成后的操作,例如发送邮件、上传构建产物、部署应用程序等。
根据项目的需求,选择需要配置的选项,填写相应的信息即可。
保存配置
执行构建
可以能过控制台查看构建后的结果
Started by user job1
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/gin_test
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential gitee-user-pass> git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/gin_test/.git # timeout=10
Fetching changes from the remote Git repository> git config remote.origin.url https://gitee.com/lisus2000/gin_test.git # timeout=10
Fetching upstream changes from https://gitee.com/lisus2000/gin_test.git> git --version # timeout=10> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials gitee的用户名和密码> git fetch --tags --progress https://gitee.com/lisus2000/gin_test.git +refs/heads/*:refs/remotes/origin/* # timeout=10> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 4cb9fc717b649a1917aca1f20803a9e4eecd848d (refs/remotes/origin/master)> git config core.sparsecheckout # timeout=10> git checkout -f 4cb9fc717b649a1917aca1f20803a9e4eecd848d # timeout=10
Commit message: "add target/readme.txt."> git rev-list --no-walk 4cb9fc717b649a1917aca1f20803a9e4eecd848d # timeout=10
[gin_test] $ /bin/sh -xe /tmp/jenkins5019030023922432660.sh
+ echo 开始构建
开始构建
+ echo 结束构建
结束构建
SSH: Connecting from host [localhost.localdomain]
SSH: Connecting with configuration [192.168.66.129] ...
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [192.168.66.129] ...
SSH: Transferred 2 file(s)
Triggering a new build of pipeline_test #10
Finished: SUCCESS
2.4将构建服务器上的代码上传到服务器
点击构建后操作,选择 Send build artifacts over SSH
在这之前要先添加好SSH的配置,在这个路径下,找到SSH Servers后,点周新增,添加远程主机名称和密码
然后重新点击构建,就会把内从上传到远服务器上了,这里经192.168.66.130,192.168.66.129(远程),构建完后的结果如下
192.168.66.130的jenkis工作目录如下
192.168.66.129的目录如下
就可以看到相应的结果了。
三.通过pipeline实现持续集成
Jenkins Pipeline是一种脚本化的工作流程,它可以通过代码来定义构建过程,包括构建、测试、部署等步骤。通过使用Pipeline,您可以将整个构建过程自动化,并将其保存在源代码控制库中,以便进行版本控制和追踪更改历史。
这比界面化操作带来的好处很多,比如jenkins挂掉了 我要进行修改和新增操作 这是使用pipeline会完成。如果在构建配置的时候jenkins挂掉了 界面化的操作配置会直接没了,pipeline就可以使用代码进行保存
把所有功能代码化后期存储和维护更加方便
3.1安装pipeline插件
3.2新建一个流水线
3.3Jenkins Pipeline参数
管理文档:https://www.jenkins.io/zh/doc/pipeline/tour/hello-world/
流水线的代码如下
pipeline {agent anystages {stage('pull code') {steps {git credentialsId: 'gitee-user-pass', url: 'https://gitee.com/lisus2000/gin_test.git'}}stage('build goproject') {steps {sh '''echo "开始构建"echo "结束构建"'''}}stage('deploy goproject') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.66.129', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo "success"', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'gin_test/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}
每一个state都是一个操作
如果不懂流水线语法的话,可以点击查
这里面有各种各样的语法,可参考
流水线写完好,点击保存,然后点击构建,构建后的结果如下
四.通过jenkinsfile管理构建pipeline脚本
使用Jenkinsfile来管理构建Pipeline脚本有许多好处,其中一些包括:
管理代码版本:Jenkinsfile可以存储在代码版本控制系统中,因此您可以将Pipeline脚本与应用程序代码一起管理,从而使得管理代码变得更加容易。
可重复性:使用Jenkinsfile可以确保每次构建都具有相同的设置和步骤,从而提高构建的可重复性。这是因为Jenkinsfile是一个文本文件,可以轻松地跟踪和管理。
可维护性:将Pipeline脚本与应用程序代码一起管理可以使其更易于维护。这是因为您可以使用与应用程序相同的工具和流程来管理Jenkinsfile。
更好的可视化:使用Jenkinsfile可以提供更好的可视化功能,因为您可以将整个Pipeline脚本作为代码存储,从而使得整个流程更加透明和易于理解。
可编程性:Jenkinsfile是基于Groovy编写的,这意味着您可以使用编程语言的所有功能来编写Pipeline脚本。这为您提供了更多的灵活性和自定义选项。
持续交付:Jenkinsfile使得自动化持续交付变得更加容易,因为您可以使用Jenkinsfile来定义整个CI/CD Pipeline,从代码检查到测试和部署。
总之,使用Jenkinsfile管理构建Pipeline脚本可以使您的构建过程更加可重复、可维护和可视化,并提供更多的灵活性和自定义选项,以实现自动化持续交付。
仓库新建Jenkinsfile文件
把Groovy语法复制到这里
修改流水线配置
流水线定义选择Pipeline script form SCM
定时构建和轮询SCM构建
定时构建和轮询SCM构建是Jenkins中两种不同的构建触发方式。
定时构建:Jenkins中的定时构建是指在指定的时间执行构建操作。您可以在Jenkins的构建配置中设置一个时间表,例如每天晚上10点或每个星期五上午8点,以触发构建操作。这种方式通常用于定期构建或者需要按照时间表进行构建的情况。
轮询SCM构建:Jenkins中的轮询SCM构建是指在一定时间间隔内轮询代码版本控制系统中是否有代码变更,并在检测到变更时触发构建操作。您可以在Jenkins的构建配置中设置轮询间隔和代码版本控制系统的位置,例如每分钟检查一次Git代码库中是否有代码变更。这种方式通常用于需要及时构建并测试新代码的情况。
在选择构建触发方式时,您需要根据自己的需求和构建场景来选择适合的方式。如果您需要按照特定时间表执行构建操作,则应使用定时构建。如果您需要及时检查并构建最新代码,则应使用轮询SCM构建。
五.通过jenkins部署go和vue
5.1构建Vue
构建之前要先安装好node,npm
流水线的定义如下
Jenkinsfile的内容如下:
pipeline {agent anystages {stage('pull code') {steps {git credentialsId: 'gitee-user-pass', url: 'https://gitee.com/lisus2000/mxshop_vue.git'}}stage('build project') {steps {sh '''echo "运行 cnpm install"npm installecho "运行 cnpm run build"npm run buildecho "构建成功"'''}}stage('deploy code') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.66.129-root', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo "success"', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'docker/nginx/data/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}
5.2构建GO
这里采用的自由风格,具体的内容如下
构建环境,采用shell
构建后的操作