创建任务

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

Jenkins+Python+GitLab持续集成的更多相关文章

  1. Jenkins+Python自动化测试持续集成详细教程

    ​ Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.由于是基于java开发因此它也依赖jav ...

  2. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  3. Jenkins Gitlab持续集成打包平台搭建

    http://www.cnblogs.com/skyseraph/p/5695021.html 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的 ...

  4. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署

    前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...

  5. ASP.NET Core & Docker & Jenkins 零基础持续集成实战

    原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...

  6. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  7. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  8. jenkins + Git 搭建持续集成环境

    持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前 ...

  9. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

随机推荐

  1. WPF 3D Transparency Depth-Order Sorting

    原文:WPF 3D Transparency Depth-Order Sorting   Just a quick post here - When making WPF 3D apps, trans ...

  2. cocos2d-x 源代码分析 总文件夹

    这篇博客用来整理与cocos2d-x相关的工作,仅仅要有新的分析.扩展或者改动,都会更改此文章. 祝大家愉快~ 1.源代码分析 1.CCScrollView源代码分析 http://blog.csdn ...

  3. 基于WPF实现双色球

    原文:基于WPF实现双色球 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/82959625 ...

  4. Spring框架:Spring安全

    在传统的Web发展,安全码被分散在各个模块,这样方便管理,有时你可能会错过一个地方导致安全漏洞.为了解决这个问题,它的发明Spring Security.它是业务逻辑的有关安全代码的作用全部转移到一个 ...

  5. oracle_set运营商

     oracle_set运营商 ①UNION/UNION ALL UNION 运算符返回的结果集,并设置两个查询.对于这两组重复部分的.重复数据删除 例: select id,name from t ...

  6. corefx 源码学习:NetworkStream.ReadAsync 是如何从 Socket 异步读取数据的

    最近遇到 NetworkStream.ReadAsync 在 Linux 上高并发读取数据的问题,由此激发了阅读 corefx 中 System.Net.Sockets 实现源码(基于 corefx ...

  7. C#正则表达式的完全匹配、部分匹配及忽略大小写的问题

    原文:C#正则表达式的完全匹配.部分匹配及忽略大小写的问题 问题的提出 根据用户给定表达式,里面含有各种数学函数,如求绝对值,三角函数,平方.开方等,分别以类似ABS(表达式),Sin(表达式),AS ...

  8. Post ,Get 请求

    http://blog.csdn.net/pan_junbiao/article/details/9155497

  9. Win10《芒果TV》更新v3.8.40青春版:优化推送策略、新增缓存清理

    芒果TV暑期重磅活动-青春芒果节拉开帷幕,炫酷的3D视觉大秀.王牌IP互动体验馆.众星云集的青春炙燥夜晚会.神秘的芒果吉祥物发布,Win10版<芒果TV>全平台同步更新青春版v3.8.40 ...

  10. C语言实现的CRC16/CCITT-FALSE校验码函数

    要求:输入字符串“00 AA FF CC AA 01 00” 得到校验码“79B1” 方法1: // ConsoleApplication1.cpp: 定义控制台应用程序的入口点. // #inclu ...