今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。
?
-
-
-
- 1.Linux环境
-
2.Jenkins自动构建
- 3.NetCore部署
- 4.总结一下
?
1.Linux环境
在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证环境安装了NetCoreSDK
,Git
,.28); color: #2c3e50; border-radius: 4px; padding-top: 2px; padding-right: 4px; padding-bottom: 2px; padding-left: 4px; border: 0; font-size: 90%;">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
的工作目录/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
2.Jenkins自动构建
-
定时构建
-
创建Jenkins项目

-
配置好自定义工作目录

-
填写源代码路径

-
配置定时任务

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

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



-
触发构建
-
配置GitHub
针对我们的项目,我们要在自己的项目内添加webhook
,并配置好webhook
的地址。
-
在项目设置中找到webhook

-
设置Jenkins的hook地址到刚才添加的webhook
中,
Jenkins的hook地址为:http://你的地址(端口)/github-webhook
,当然这个地址应该是外网可以访问的

-
Personal access tokens
对于任何第三方访问GitHub的项目,是需要授权的,Jenkins也是一样的,所以我们需要先获取一个accessToken
- 进入
Settings
页面,找到左边列表的Developer settings
,点击进入,可以看到如下:

- 点击生成,然后勾选
,
,保存即可,就可以获得token,顺便说下,token要记下来,不然关闭页面就看不到了。

-
Jenkins配置
上面的配置完成之后,我们需要返回Jenkins,进行再次设置。为Jenkins添加GitHub服务器。
- 添加GitHub服务器

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


-
Jenkins任务配置
因为我们已经将触发构建的前置步骤都做完了,那接着我们就要去修改之前的定时构建的配置了
- 切换成触发构建

- 使用密文模式,并添加绑定,选择刚才添加的凭据

-
修改代码,上传GitHub
终于我们将之前的定时构建改成了触发构建,也就是我们每次Push代码都会触发构建,接下来我们试下。
- 提交代码

- 查看Jenkins

3.NetCore部署
终于的终于,我们把构建这个步骤做好了,那么接下来当然就是要部署我们网站咯。
-
运行NetCore
运行NetCore最简单了,我们只需要在发布后的目录运行dotnet ***.dll
就可以了,当然,前提,你要装CoreSDK。

-
nginx托管
虽然说上面那样已经运行起来,但是由于我们的环境在腾旭云上,要访问可以用nginx进行方向代理下,下面就简单贴下配置就可以了。
- server {?
- listen 80;?
- location / {?
- proxy_pass http:?
- proxy_http_version 1.1;?
- proxy_set_header Upgrade $http_upgrade;?
- proxy_set_header Connection keep-alive;?
- proxy_set_header Host $host;?
- proxy_cache_bypass $http_upgrade;?
- }?
- }?
-
守护进程
我们已经知道要运行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

4.总结一下
该篇文章简单介绍了下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下吧。