Linux下Jenkins与GitHub自动构建NetCore与部署
今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。
1.Linux环境
在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证环境安装了NetCoreSDK
,Git
,Jenkins
等环境,那在这边就不多说环境的安装,提供相对应的安装教程,大家按照安装就可以,不过对Jenkins
的安装,我会多啰嗦一句。
啰嗦的那一句:
我在安装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自动构建
定时构建
chown jenkins /ftpfile -R
chmod 777 /ftpfile -R
dotnet restore
dotnet build
dotnet publish
创建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 配置构建命令
查看构建,并运行NetCore
注意:
因为你建立的自定义工作目录,对于"jenkins"没有读写权限,所以可能就会导致构建失败,执行下面命令,给Jenkins赋予读写权限。
触发构建
提交代码
查看Jenkins
切换成触发构建
使用密文模式,并添加绑定,选择刚才添加的凭据
添加GitHub服务器
2.添加GitHub的凭据,也就我们刚才拿到得accessToken
进入
Settings
页面,找到左边列表的Developer settings
,点击进入,可以看到如下:
点击生成,然后勾选
,
,保存即可,就可以获得token,顺便说下,token要记下来,不然关闭页面就看不到了。
在项目设置中找到
webhook
设置Jenkins的hook地址到刚才添加的
webhook
中,Jenkins的hook地址为:
http://你的地址(端口)/github-webhook
,当然这个地址应该是外网可以访问的
配置GitHub
针对我们的项目,我们要在自己的项目内添加webhook
,并配置好webhook
的地址。Personal access tokens
对于任何第三方访问GitHub的项目,是需要授权的,Jenkins也是一样的,所以我们需要先获取一个accessToken
Jenkins配置
上面的配置完成之后,我们需要返回Jenkins,进行再次设置。为Jenkins添加GitHub服务器。Jenkins任务配置
因为我们已经将触发构建的前置步骤都做完了,那接着我们就要去修改之前的定时构建的配置了修改代码,上传GitHub
终于我们将之前的定时构建改成了触发构建,也就是我们每次Push代码都会触发构建,接下来我们试下。
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下吧。
原文地址:https://www.cnblogs.com/xuhuale/p/11062293.html
Linux下Jenkins与GitHub自动构建NetCore与部署相关推荐
- linux 程序定时重启tomcat,linux下实现tomcat定时自动重启
tomcat自带的脚本中没有提供直接restart的模式,但是有start和shutdown两种模式.要实现restart模式,实际上只需要判断是否已经启动tomcat,若已经启动则限制性shutdo ...
- linux ant 编译,【Jenkins】linux下Jenkins集成ant进行编译并发送结果
三个文章吧: 1 如何使用ant编译执行jmeter测试用例,并生成html报告 2 如何在Linux下搭建jenkins环境. 3 如何在Linux下搭建的jenkins中执行ant构建运行,并发送 ...
- Linux下Git和GitHub使用方法总结(Ubuntu16.04)
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 创建GitHub帐号 第三步: 生成 ...
- 在linux下搭建git环境,在linux下搭建git github开发环境
在linux下搭建git github开发环境 github git linux 1.安装git sudo apt-getinstall git 2.Generating SSH keys 2.1.g ...
- linux下git和github搭建使用教程
一:linux下git和github搭建 1.注册gihub账号: github官网:https://github.com/自行创建即可. 登录,create repository新建仓库一个测试库t ...
- gitlab+jenkins 利用webhook自动构建代码
每次代码push后,还要去手动点jenkins构建,感觉这一步挺多余的,想省掉这一步.google了下,有很多种方式,这次采用gitlab的webhook来触发jenkins,实现自动构建. 版本 系 ...
- linux查看并口设备,如何在LINUX下实现硬件的自动检测(下)
本文是<如何在LINUX下实现硬件的自动检测>一文的下部分,作者将继续向我们讲述如何自动检测另外几种总线类型硬件设备. 5 .USB设备的自动检测 5.1 USB设备检测的一般过程 USB ...
- linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...
- linux自动重启电脑脚本,linux下通过脚本实现自动重启程序的方法
烈火建站学院(LieHuo.Net)转载无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过 ...
最新文章
- Linux下安装Python-3.3.2【转】
- Android零基础入门第77节:Activity任务栈和启动模式
- 最简单的一个java驱动jdbc链接mysql数据库
- python中变量名后的逗号_Python中逗号的三种作用实例分析
- if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...
- Docker学习总结(59)——DockerFIile相关知识点再总结
- 文件类型总结 MIME
- 集备二Linux部署之FTP
- java操作mysql实例 让代码跑起来
- 软件测试基础—易用性测试
- 微信小程序图片上传以及剪切(image-cropper的简单使用)
- python 菜鸟教程 xml-【读书】Django教程(菜鸟教程)
- 什么是负载均衡器 负载均衡器的功能
- 小米9刷鸿蒙,小米手机怎么刷机 小米9刷第三方ROM方法【详解】
- 拼图游戏 java_Java实现拼图游戏
- ORACLE一次大量数据删除导致问题的处理
- 复杂网络分析 08网络节点重要性
- android颜体_颜体楷书结构的四大特征与特点
- 神经网络论文研究-图像处理方向4-geoglenet
- Centos7系统下部署Gitlab+Jenkins+Docker 实现自动化部署项目
热门文章
- php编译 ftp,无需重新编译php加入ftp扩展的解决方法
- 计算机二级高级应用这么难,计算机二级考试越来越难的实锤!真实数据告诉你到底难在哪里?...
- 虚拟化记录--No.1
- Start vm by command line
- WSUS2.0数据导入、导出(备份、还原)
- poj-1980 Unit Fraction Partition **
- 更改windows2003远程最大连接数
- 对症下药教你清除电脑中的木马
- 叮,您有一份ML.NET 速查手册请查收!
- .NET6之MiniAPI(十一):本地化