zoukankan      html  css  js  c++  java
  • Jenkins+Python+GitLab持续集成

    创建任务

    登录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, 保存完成。

  • 相关阅读:
    Django (五) modeld进阶
    django (四) model模型
    django (三) admin后台系统
    Django (二) url 和 模板
    django (一) 环境的配置及Django文件简介
    Thinkphp5之Bootstrap自定义BootstrapDetailed分页插件的实现
    Thinkphp5之laypage分页插件的实现
    Thinkphp5之ajax分页实现_paginate()参数详细
    Thinkphp5 日期与时间戳相互转换
    dedecms后台一些时间等验证方法(plus/diy.php)
  • 原文地址:https://www.cnblogs.com/zzhaolei/p/11067999.html
Copyright © 2011-2022 走看看