今天咱们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就很少介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。咱们就跟着博文往下走吧。javascript
在进行自动构建以前,咱们须要一个能够运行的Linux环境,并保证环境安装了NetCoreSDK
,Git
,Jenkins
等环境,那在这边就很少说环境的安装,提供相对应的安装教程,你们按照安装就能够,不过对Jenkins
的安装,我会多啰嗦一句。html
啰嗦的那一句:
我在安装Jenkins
成功的时候进入网页,网页会一直保持在下面图这个状态,没办法进入到开始页面,那解决办法是:java
Jenkins
的工做目录/var/lib/jenkins/
修改hudson.model.UpdateCenter.xml
文件http://updates.jenkins-ci.org/update-center.json
修改成http://mirror.xmission.com/jenkins/updates/update-center.json
Jenkins
建立Jenkins项目
linux
配置好自定义工做目录
nginx
填写源代码路径
git
配置定时任务
github
字段 | * | * | * | * | * |
---|---|---|---|---|---|
含义 | 分钟 | 小时 | 日期 | 月份 | 星期 |
取值范围 | 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 |
配置构建命令
web
查看构建,并运行NetCore
注意:
由于你创建的自定义工做目录,对于"jenkins"没有读写权限,因此可能就会致使构建失败,执行下面命令,给Jenkins赋予读写权限。json
配置GitHub
针对咱们的项目,咱们要在本身的项目内添加webhook
,并配置好webhook
的地址。centos
在项目设置中找到webhook
设置Jenkins的hook地址到刚才添加的webhook
中,
Jenkins的hook地址为:
http://你的地址(端口)/github-webhook
,固然这个地址应该是外网能够访问的
Personal access tokens
对于任何第三方访问GitHub的项目,是须要受权的,Jenkins也是同样的,因此咱们须要先获取一个accessToken
Settings
页面,找到左边列表的Developer settings
,点击进入,能够看到以下:,
,保存便可,就能够得到token,顺便说下,token要记下来,否则关闭页面就看不到了。Jenkins配置
上面的配置完成以后,咱们须要返回Jenkins,进行再次设置。为Jenkins添加GitHub服务器。
Jenkins任务配置
由于咱们已经将触发构建的前置步骤都作完了,那接着咱们就要去修改以前的定时构建的配置了
修改代码,上传GitHub
终于咱们将以前的定时构建改为了触发构建,也就是咱们每次Push代码都会触发构建,接下来咱们试下。
终于的终于,咱们把构建这个步骤作好了,那么接下来固然就是要部署咱们网站咯。
运行NetCore
运行NetCore最简单了,咱们只须要在发布后的目录运行dotnet ***.dll
就能够了,固然,前提,你要装CoreSDK。
nginx托管
虽说上面那样已经运行起来,可是因为咱们的环境在腾旭云上,要访问能够用nginx进行方向代理下,下面就简单贴下配置就能够了。
守护进程
咱们已经知道要运行Core,须要使用命令在控制台运行,可是一旦退出了,Core天然就退出了,因此咱们在Linux底下须要一个相似IIS的,来托管咱们运行Core的进程,守护进程,让其在后台运行,自动重启等等功能,这个就是supervisor
supervisors是C/S架构的进程控制系统,可以使用户在类UNIX系统中监控、管理进程。经常使用于管理与某个用户或项目相关的进程。
安装教程能够参考开始表格supervisor的连接,一样怎么对于怎么对Core进行守护进程,文章内也有讲,一步一步按照教程来就能够了。不过我这边仍是会讲下我在使用supervisor中遇到的坑。
一开始,我百度了挺多的,发现百度中的文章,对于supervisor的日志文件,不少都说在/etc/log/supervisor/supervisord.log
这个文件内,但其实我去找的时候,发现并无,查看配置文档,发现默认是在tmp
中,我不知道是centeros 的版本问题,仍是supervisor版本问题。
还有一个就是,在根据教程走完,配置后,要进行启动时,可能会出现Unlinking stale socket /tmp/supervisor.sock
这个错误,咱们只须要解锁下就能够了unlink /tmp/supervisor.sock
该篇文章简单介绍了下Linux下Jenkins与GitHub自动构建NetCore与部署
,不少细点我可能没讲出来,我把大大的教程贴出来,按照教程走起,就能够了,这也是我实践过了的,确定能够用的,很是感谢大大们,而后呢,我也想抛砖引玉下,在我Jenkins构建时有两个问题,不知道谁能够帮我解答下。
好比咱们的解决方案文件.sln
并无在git项目的根目录下,咱们要指定须要构建的解决方案呢?
还有一个就是,在命令dotnet publish
咱们怎么指定发布到另外一个文件夹内呢,我知道有个参数-o|--output <OUTPUT_DIRECTORY>
,我试了下,发现不行 dotnet publish -o /ftpfile/netCore/netCoreJenkins/JenkinsNetCore
,会有如下的错误。
最后的最后,个人下一篇文章是《Linux下Jenkins与GitHub自动构建Node项目(Vue)》,期待0.5下吧。