python 持续集成方案_Jenkins+Python+GitLab持续集成

创建任务

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

配置

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

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

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

使用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/demo ,URL后面是回调地址,再点击高级,再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,输入远程登录的Username和Password,点击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,在系统管理员邮件地址栏中输入发件人,格式为标题,再找到邮件通知,点击高级按钮,添加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,输入Username和Password,Password是客户端授权密码要和配置邮件中的授权码一样,勾选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, 保存完成。

你可能感兴趣的:(python,持续集成方案)