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