DevOps系列——Gogs和Jenkins的CI配置

Stella981
• 阅读 867

jenkins学习笔记

1. jenkins简单介绍

1.1. jenkins是什么

  • Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能

1.2. 大牛系统博客地址

2. 知识点

2.1. 用户和权限配置

2.2. jenkins的ssh认证

2.3. gogs提交代码触发jenkins构建

  • 输入gogs可以下载这个插件,不要输入gogs-webhook-plugins找不到
  • 在gogs项目的钩子中添加hook地址

DevOps系列——Gogs和Jenkins的CI配置

2.4. pipeline的使用

  • 首先在系统管理-系统设置中增大jenkins的构建进程数,因为jenkins中可能同时启动好几个构建任务

DevOps系列——Gogs和Jenkins的CI配置

  • 创建的时候使用Pipeline(流水线),pipeline可以执行一系列的操作

DevOps系列——Gogs和Jenkins的CI配置

  • 然后编写脚本,Pipeline Syntax中有脚本生成器
    • 注意stage之间一定要加空行,否则会报错

DevOps系列——Gogs和Jenkins的CI配置

  • 运行效果

DevOps系列——Gogs和Jenkins的CI配置

2.5. 发送邮件通知

  • 本文讲的是gogs和jenkins结合

2.5.1. 申请邮箱

  • 首先注册一个163的邮箱
  • 开启授权认证,输入授权密码,这个授权码代替登录密码,查看smtp服务器地址

DevOps系列——Gogs和Jenkins的CI配置

DevOps系列——Gogs和Jenkins的CI配置

2.5.2. 基本配置

DevOps系列——Gogs和Jenkins的CI配置

  • 设置发送邮件服务器信息

DevOps系列——Gogs和Jenkins的CI配置

DevOps系列——Gogs和Jenkins的CI配置

DevOps系列——Gogs和Jenkins的CI配置

  • 来一个可以复制的

    (本邮件是程序自动下发的,请勿回复!)

    项目名称:$PROJECT_NAME

    项目描述:${JOB_DESCRIPTION}

    构建编号:$BUILD_NUMBER

    构建状态:$BUILD_STATUS

    触发原因:${CAUSE}

    构建日志地址:${BUILD_URL}console

    构建地址:$BUILD_URL


    变更集:${JELLY_SCRIPT,template="html"}

  • 邮件配置的详细语法可以在下面的位置查看

    DevOps系列——Gogs和Jenkins的CI配置

2.5.3. jenkins脚本的改变

  • 在jenkins的配置文件中删除--restart always这样的自动重启命令,否则即使代码报错,任务也会算做构建成功,因为只是执行启动命令。

  • 在jenkins的配置文件中加-d有个重大问题

    • 不加上-d那么如果程序没有问题,jenkins的任务就退不出来了
    • 加上-d那么如果程序有问题,jenkins的任务也会算作成功
  • 解决办法就是改变脚本为以下方式

    • 中间需要暂停几秒,否则不能准确读取到容器的状态
    • 当然还有测试的时候才这样写,打版和发布都不用,这涉及到一整套docker策略

    echo "正在构建"
    && cd web-server
    && docker build -t pomelo-dev-client . \

    if [ "docker ps -f name=pomelo-dev-client -q" ]; then echo "stop and rm pomelo-dev-client" docker stop pomelo-dev-client docker rm pomelo-dev-client elif [ "docker ps -a -f name=pomelo-dev-client -q" ]; then echo "rm pomelo-dev-client" docker rm pomelo-dev-client else echo "pomelo-dev-client不存在" fi
    && docker run -d --name pomelo-dev-client -p 3001:3001 pomelo-dev-client
    && sleep 4 \

    if [ "docker ps -f name=pomelo-dev-client -q" ]; then echo "pomelo-dev-client 启动成功" elif [ "docker ps -a -f name=pomelo-dev-client -q" ]; then echo "rm pomelo-dev-client" docker rm pomelo-dev-client docker run --name pomelo-dev-client -p 3001:3001 pomelo-dev-client else echo "pomelo-dev-client不存在" fi \

2.5.4. 配置邮件触发器

  • 首先jenkins用户都要设置企业邮箱

DevOps系列——Gogs和Jenkins的CI配置

  • jenkins项目中设置触发器

DevOps系列——Gogs和Jenkins的CI配置

DevOps系列——Gogs和Jenkins的CI配置

  • 高级设置中可以设置触发时机,以下高级设置中的内容可以覆盖系统设置中的基本内容

DevOps系列——Gogs和Jenkins的CI配置

  • 本来想实现失败10次要给项目经理发邮件,可是Failure-x好像不起作用

2.5.5. 邮件效果

DevOps系列——Gogs和Jenkins的CI配置

2.5.6. 扩展阅读

2.6. jenkins定时自动构建

2.7. 扩展阅读

 免责说明

  • 本文档中的部分内容摘自网上的众多博客,仅作为自己知识的补充和整理,并分享给其他需要的coder,不会用于商用。
  • 因为很多博客的地址看完没有及时做保存,所以很多不会在这里标明出处,非常感谢各位大牛的分享,也希望大家理解。
  • 如果原文作者感觉不适,可以及时联系我shiguoqing999@163.com,我将及时删除争议部分内容

 追责声明

  • 如有大段引用超过全文50%的内容,请在文档结尾标明原文出处:龙马行空-石国庆-https://my.oschina.net/u/1416844/blog,否则将视为抄袭,予以法律追究,请各位尊重个人知识产权。

个人公众号

  • 大家可以关注我的公众号,我会举办线下代码操练活动

    DevOps系列——Gogs和Jenkins的CI配置

  • 本人提供所有前端知识的付费咨询服务,本咨询可提升企业核心竞争力
    • Html5和Css3系列
    • Vue全家桶系列
    • JS面向对象系列
    • 微信开发系列(完善中)
    • RN开发系列(完善中)
    • DevOps系列
  • 价格请邮箱联系:shiguoqing999@163.com,有愿意提供场地的公司也可以联系我,会有优惠
点赞
收藏
评论区
推荐文章
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
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之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 )
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
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
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之前把这