达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
软件测试工程师
 当前位置:主页 > 高端课程 > 软件测试工程师 >

Linux下Jenkins与GitHub自动构建NetCore与部署

时间:2019-06-25  来源:未知  作者:广州达内培训

今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。

 

        • 1.Linux环境
        • 2.Jenkins自动构建
          • 定时构建
          • 触发构建
        • 3.NetCore部署
        • 4.总结一下

 

1.Linux环境

在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证环境安装了NetCoreSDK,Git,Jenkins等环境,那在这边就不多说环境的安装,提供相对应的安装教程,大家按照安装就可以,不过对Jenkins的安装,我会多啰嗦一句。

环境地址
NetCore https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
Git https://www.cnblogs.com/imyalost/p/8715688.html
Jenkins https://www.cnblogs.com/loveyouyou616/p/8714544.html
Supervisor https://www.cnblogs.com/miskis/p/6026452.html

啰嗦的那一句
我在安装Jenkins成功的时候进入网页,网页会一直保持在下面图这个状态,没办法进入到开始页面,那解决办法是:

 

Jenkins等待
Jenkins等待

 

  1. 进入到Jenkins的工作目录/var/lib/jenkins/修改hudson.model.UpdateCenter.xml文件
  2. http://updates.jenkins-ci.org/update-center.json修改为http://mirror.xmission.com/jenkins/updates/update-center.json
  3. 重启下Jenkins

2.Jenkins自动构建

  • 定时构建
    1. 创建Jenkins项目
      创建Jenkins项目

    2. 配置好自定义工作目录
      自定义工作目录

    3. 填写源代码路径
      填写源代码路径

    4. 配置定时任务
      配置定时任务

      字段*****
      含义 分钟 小时 日期 月份 星期
      取值范围 0-59 0-23 1-31 1-12 0-7
                 
      示例          
      每隔15分钟执行一次 H/15 * * * *
      每隔2个小时执行一次 H H/2 * * *
      每隔3天执行一次 H H H/3 * *
      每隔3天执行一次(每月的1-15号) H H 1-15/3 * *
      每周1,3,5执行一次 H H * * 1,3,5
                 
      规则          
      指定时间范围 a-b        
      指定时间间隔 /        
      指定变量取值 a,b,c        
    5. 配置构建命令
      配置构建命令

      1. dotnet restore 
      2. dotnet build 
      3. dotnet publish 
    6. 查看构建,并运行NetCore
      注意:
      因为你建立的自定义工作目录,对于"jenkins"没有读写权限,所以可能就会导致构建失败,执行下面命令,给Jenkins赋予读写权限。

      1. chown jenkins /ftpfile -R  
      2. chmod 777 /ftpfile -R 

      查看构建,并运行NetCore1

      查看构建,并运行NetCore2

      查看构建,并运行NetCore4

  • 触发构建
    1. 配置GitHub
      针对我们的项目,我们要在自己的项目内添加webhook,并配置好webhook的地址。

      1. 在项目设置中找到webhook
        webhook位置

      2. 设置Jenkins的hook地址到刚才添加的webhook中,

        Jenkins的hook地址为:http://你的地址(端口)/github-webhook当然这个地址应该是外网可以访问的

        设置hook地址中

    2. Personal access tokens
      对于任何第三方访问GitHub的项目,是需要授权的,Jenkins也是一样的,所以我们需要先获取一个accessToken

      1. 进入Settings页面,找到左边列表的Developer settings,点击进入,可以看到如下:
        Personal access tokens页面
      2. 点击生成,然后勾选,,保存即可,就可以获得token,顺便说下,token要记下来,不然关闭页面就看不到了。
        生成token
    3. Jenkins配置
      上面的配置完成之后,我们需要返回Jenkins,进行再次设置。为Jenkins添加GitHub服务器。

      1. 添加GitHub服务器
        添加GitHub服务器
        2.添加GitHub的凭据,也就我们刚才拿到得accessToken
        添加凭据1

        添加凭据2
    4. Jenkins任务配置
      因为我们已经将触发构建的前置步骤都做完了,那接着我们就要去修改之前的定时构建的配置了

      1. 切换成触发构建
        切换成触发构建
      2. 使用密文模式,并添加绑定,选择刚才添加的凭据
        使用密文模式,并添加绑定,选择刚才添加的凭据
    5. 修改代码,上传GitHub
      终于我们将之前的定时构建改成了触发构建,也就是我们每次Push代码都会触发构建,接下来我们试下。

      1. 提交代码
        提交代码
      2. 查看Jenkins
        查看Jenkins

3.NetCore部署

终于的终于,我们把构建这个步骤做好了,那么接下来当然就是要部署我们网站咯。

  • 运行NetCore
    运行NetCore最简单了,我们只需要在发布后的目录运行dotnet ***.dll就可以了,当然,前提,你要装CoreSDK。
    运行NetCore

  • nginx托管
    虽然说上面那样已经运行起来,但是由于我们的环境在腾旭云上,要访问可以用nginx进行方向代理下,下面就简单贴下配置就可以了。

    1. server { 
    2. listen 80; 
    3. location / { 
    4. proxy_pass http://localhost:5000; 
    5. proxy_http_version 1.1; 
    6. proxy_set_header Upgrade $http_upgrade; 
    7. proxy_set_header Connection keep-alive; 
    8. proxy_set_header Host $host; 
    9. proxy_cache_bypass $http_upgrade; 


  • 守护进程
    我们已经知道要运行Core,需要使用命令在控制台运行,但是一旦退出了,Core自然就退出了,所以我们在Linux底下需要一个类似IIS的,来托管我们运行Core的进程,守护进程,让其在后台运行,自动重启等等功能,这个就是supervisor

    supervisors是C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。

    安装教程可以参考开始表格supervisor的链接,同样怎么对于怎么对Core进行守护进程,文章内也有讲,一步一步按照教程来就可以了。不过我这边还是会讲下我在使用supervisor中遇到的坑。

    1. 一开始,我百度了挺多的,发现百度中的文章,对于supervisor的日志文件,很多都说在/etc/log/supervisor/supervisord.log这个文件内,但其实我去找的时候,发现并没有,查看配置文档,发现默认是在tmp中,我不知道是centeros 的版本问题,还是supervisor版本问题。

    2. 还有一个就是,在根据教程走完,配置后,要进行启动时,可能会出现Unlinking stale socket /tmp/supervisor.sock 这个错误,我们只需要解锁下就可以了unlink /tmp/supervisor.sock

4.总结一下

该篇文章简单介绍了下Linux下Jenkins与GitHub自动构建NetCore与部署,很多细点我可能没讲出来,我把大大的教程贴出来,按照教程走起,就可以了,这也是我实践过了的,肯定可以用的,非常感谢大大们,然后呢,我也想抛砖引玉下,在我Jenkins构建时有两个问题,不知道谁可以帮我解答下。

  1. 比如我们的解决方案文件.sln并没有在git项目的根目录下,我们要指定需要构建的解决方案呢?

  2. 还有一个就是,在命令dotnet publish我们怎么指定发布到另一个文件夹内呢,我知道有个参数-o|--output <OUTPUT_DIRECTORY>,我试了下,发现不行 dotnet publish -o /ftpfile/netCore/netCoreJenkins/JenkinsNetCore,会有以下的错误。

最后的最后,我的下一篇文章是《Linux下Jenkins与GitHub自动构建Node项目(Vue)》,期待0.5下吧。




上一篇:SVN 创建发行版/分支版的步骤
下一篇:测试工程师如何使用 CODING 进行测试管理

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载