今天我们来谈谈 NetCore 在 Linux 底下的持续集成与部署. NetCore 我就不多介绍了, 持续集成用的是 Jenkins, 源代码管理器用的是 GitHub. 我们就跟着博文往下走吧.
1.Linux 环境
2.Jenkins 自动构建
定时构建
触发构建
3.NetCore 部署
4. 总结一下
1.Linux 环境
在进行自动构建之前, 我们需要一个可以运行的 Linux 环境, 并保证环境安装了 NetCoreSDK,Git,Jenkins 等环境, 那在这边就不多说环境的安装, 提供相对应的安装教程, 大家按照安装就可以, 不过对 Jenkins 的安装, 我会多啰嗦一句.
环境 | 地址 |
---|---|
NetCore | |
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 | H/3 | * | * |
每隔 3 天执行一次 (每月的 1-15 号) | H | H | 1-15/3 | * | * |
每周 1,3,5 执行一次 | H | H | * | * | 1,3,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://localhost:5000;
- 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 下吧.
来源: https://www.cnblogs.com/xuhuale/p/11062293.html