Jenkins+Python+GitLab持续集成

Stella981
• 阅读 586

创建任务

登录Jenkins,点击左侧列表的新建选项。输入任务名称,选择构建一个自由风格的软件项目,点击确定

配置

任务配置界面,可以设置General标签中的丢弃旧的构建选项,设置保持构建的天数保持构建的最大个数

点击源码管理标签,选择git,在Repository URL中输入Git仓库的链接。

如果是HTTP链接,选择Credentials一行的Add > Jenkins,在Kind一行下拉选择Username with password,在下方UsernamePassword框中输入用户名和密码。

使用docker jenkins容器里面的ssh-key。 直接使用服务器的ssh key就可以了。如果指定Path to key需要使用docker中的ssh key。如果使用Source files那么需要使用docker容器中的key, 因为Source files的相对路径不是固化到本地的路径, 而是docker中的路径.

如果是SSH链接,选择SSH Username with private key,在Username框中输入用户名,Private Key 选择为Enter directly,在显示的key框中输入私钥。(生成秘钥ssh-keygen -t rsa -C "email.com",生成的文件在home目录下的.ssh目录下,使用命令cat id_rsa查看私钥,复制到key框中)。点击最下方的Add按钮,保存设置。

Credentials的下拉选项中选择刚刚创建Username

使用定时任务

构建触发器标签里选择Poll SCM,输入H/2 * * * *, 最后点击保存。 这是一个定时任务,每隔2分钟查询一次代码,如果有更新,就执行任务。

使用webhook

使用webhook比定时任务更好,webhook只有在push或指定操作时,jenkins会拉取代码,不用定时访问,耗费资源。

需要安装的插件Gitlab Hook、GitLab、Gitlab Authentication、Build Authorization Token Root 配置job,在构建触发器中勾选Build when a change is pushed to GitLab. GitLab CI Service URL: http://服务器IP:8080/project/demoURL后面是回调地址,再点击高级,再Secret token行,点击Generate生成token

GitLab服务器上的相对应的项目的Settings里面的Integrations中,配置webhook,输入在jenkins中获取的URL,和token,可以根据需要勾选事件,开启SSL,点击Add webhook。会在Add webhook按钮下生成一个webhook,点击test,会弹出勾选的事件,选择相应的事件,会在页顶弹出Hook executed successfully: HTTP 200,到此,webhook配置完成。

注意:在脚本中使用docker exec执行容器中的命令是, 不要指定-it, -t是指定tty, 而jenkins中没有tty, 只需要指定-i即可.

1 将代码部署到远程服务器

不需要使用容器中的ssh-key。 在jenkins服务器上生成keyssh-keygen -t rsa -C "email.com", 使用ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip(如果端口不是22,可以添加参数-p port进行修改,port为端口数值), 将生成的公钥保存在目标服务器。这样可以免密码登录。

安装Publish over SSH插件,在系统管理-->系统设置里面找到Publish over SSH。 配置Jenkins SSH Key,如果key在生成时设置了密码,就在Passphrase里输入密码,没有则忽略。 复制私钥,粘贴进Key里面。

配置SSH Servers,点击增加Name为SSH的名称,Hostname是远程服务器的IP地址,Username是登录的用户名,Remote Directory是远程服务器的目录,必须是真实存在的,插件不会自动创建。

点击Test Configuration测试配置是否成功。成功会显示Success

1.1远程部署任务

再创建一个构建任务,当有触发任务时,构建任务运行。

还是点击新建,输入一个任务名称,不点击构建一个自由风格的软件项目,在最下面的复制框中,输入刚刚创建的触发任务名称。 点击确定。如果输入的任务名不存在,会报错,并让你重新输入一次。

构建触发器中选择Build after other projects are built,在其他项目建成后进行构建,Projects to watch选择第一个任务,可能会报错No such project ‘gol’. Did you mean ‘golismero’?,不用理会,如果是单个任务,可以把最后面的, 逗号和空格删除,就不会报错了,不删也没有影响。 勾选下面的Trigger only if build is stable,只有在构建稳定时才触发。

其他设置不变,构建后操作增加构建后操作步骤,在弹出的选项中选择Send build artifacts SSH,输入SSH Server Name(是远程主机IP),然后在Transfers中的Exec command中输入脚本命令,其他选项暂时不用填写。

Source files是相对于workspace下项目目录的目录, 是一个相对目录, 如果在workspace目录, 即jenkins的工作目录, 那么需要填写**/, 后面可以跟工作目录下的文件或文件夹.

Remove prefix文件复制时要过滤的目录.

Remote directory文件得到到远程机上的目录,此目录是相对于SSH Server中的Remote directory的,如果不存在将会自动创建。

保存,即可看到触发任务和构建任务。

还有另一种方式可以部署

2 SSH插件部署

这种方式需要安装SSH插件。

点击Credentials-->System-->Add domain,在Domain Name中输入名称,Description描述,可写可不写,Specification保持默认为Add,点击ok。在新页面点击左上的Add Credentials,输入远程登录的UsernamePassword,点击OK。 点击系统管理-->系统设置,找到SSH remote hosts,配置SSH site,点击增加,输入Hostname主机IP,Port远程连接端口(一般为22),Credentials选择刚刚创建Domain,和Username相同,点击Check connection,显示Successfull connection,成功,点击保存

2.1 远程部署任务

基本和1.1相同,但是这个是在构建增加构建步骤,在弹出的选项中选择Execute shell script on remote host using ssh,默认会自动填写SSH site(如果没有填写,点击输入框看看有没有,如果没有可能是前面出现错误),可能会有红字报错SSH Site not specified,不用理。在Command输入框中输入shell脚本。保存即可。

这种方式没有第一种构建的快。

配置邮件

可以安装Email Extension Plugin插件,扩展邮箱功能。

点击左侧的系统管理,在管理Jenkins列点击系统设置,在新页面找到Jenkins Location,在系统管理员邮件地址栏中输入发件人,格式为标题<email.com>,再找到邮件通知,点击高级按钮,添加SMTP服务器,以及邮件后缀(@xxx.com),使用SMTP验证的用户名为完整的邮箱账号,密码是授权码。(腾讯企业邮箱如果绑定了微信,在设置-微信绑定-客户端专用密码,生成授权码,保存设置。)勾选使用SSL协议,SMTP端口是465, Reply-To Address填写收件人地址。

高级版邮件通知

需要安装Email Extension插件,安装好后,点击系统管理-->系统设置找到Extended E-mail Notification,配置SMTP server服务器地,格式为smtp.exmail.qq.com(这里用腾讯企业邮箱作为例子).

Default user E-mail suffix设置邮箱后缀,就是@及后面的字符@xxx.com.

Default Content Type默认发送的内容类型选择HTML/(text/html).

Default Recipients默认收件人,可以设置多个收件人,中间用, 隔开,英文状态下的符号.

Default Subject默认主题不用改,也可以在最前面加一些文字,比如构建通知.

Default Content这里面是默认模板,可以在网上找模板更改,也可以自己写,html类型。

点击上面的高级按钮,勾选Use SMTP Authentication,输入UsernamePasswordPassword是客户端授权密码要和配置邮件中的授权码一样,勾选SSL,点击保存

为单个的Job增加构建后步骤, 选择Editable Email Notification, 在Project Recipient List收件人列表中输入收件人邮箱, 多个可以用, 分割, 想使用全局默认配置的话, 可以使用$DEFAULT_RECIPIENTS.

Project Reply-To List允许回复人列表, 默认值$DEFAULT_REPLYTO

Content Type文档类型, 可以设置HTML

Attach Build Log发送的邮件是否包含日志。

点击Advanced Settings, 在Triggers中, 删除Sent To默认的Developer List, 点击Add添加Recipient List, 保存完成。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这