Linux下Jenkins与GitHub自动构建NetCore与部署
今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。
1.Linux环境
在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证环境安装了NetCoreSDK,Git,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自动构建
定时构建
创建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
- dotnet restore
查看构建,并运行NetCore
注意:
因为你建立的自定义工作目录,对于"jenkins"没有读写权限,所以可能就会导致构建失败,执行下面命令,给Jenkins赋予读写权限。- chown jenkins /ftpfile -R
- chmod 777 /ftpfile -R



- chown jenkins /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

- 添加GitHub服务器
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;
- }
- }
- server {
守护进程
我们已经知道要运行Core,需要使用命令在控制台运行,但是一旦退出了,Core自然就退出了,所以我们在Linux底下需要一个类似IIS的,来托管我们运行Core的进程,守护进程,让其在后台运行,自动重启等等功能,这个就是supervisorsupervisors是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下吧。
Linux下Jenkins与GitHub自动构建NetCore与部署的更多相关文章
- Linux下Jenkins与GitHub自动构建Node项目(Vue)
根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...
- Linux下Jenkins+git+gradle持续集成环境搭建
Linux下Jenkins+git+gradle持续集成环境搭建 来源:IT165收集 发布日期:2014-08-22 21:45:50 我来说两句(0)收藏本文 一.项目介绍 和 linux ...
- Linux下Git和GitHub使用方法总结
来源:Linux下Git和GitHub使用方法总结 1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 到G ...
- 【Jenkins】linux下Jenkins集成ant进行编译并发送结果
三个文章吧: 1 如何使用ant编译执行jmeter测试用例,并生成html报告 2 如何在Linux下搭建jenkins环境. 3 如何在Linux下搭建的jenkins中执行ant构建运行,并发送 ...
- linux下通过脚本实现自动重启程序的方法
无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美 ...
- Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解
Linux下Tomcat catalina.out自动归档 如果 catalina.out 日志达到 2GB 大小的时候,Tomcat 因为缓存问题,便没有办法继续输出日志了. 为了避免这种情况,你 ...
- windows/Linux下设置ASP.Net Core开发环境并部署应用
10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...
- 向github项目push代码后,Jenkins实现其自动构建
配置Jenkins(添加Github服务器) 1.进入[系统管理] --> [系统设置] ,找到[Github] 2.添加Github服务器 这里需要github提供一个密钥文本,我们去gith ...
- Jenkins Vue项目自动构建以及构建后续操作
Jenkins在linux上的安装教程:http://www.ityouknow.com/springboot/2017/11/11/springboot-jenkins.html 另外,关于在win ...
随机推荐
- 洛谷P5159 WD与矩阵
题目背景 WD整日沉浸在矩阵中,无法自拔-- 题目描述 WD特别喜欢矩阵,尤其是\(01\)矩阵. 一天,CX给了WD一个巨大的\(n\)行\(m\)列的\(01\)矩阵,WD发现这个矩阵每行.每列的 ...
- php类内方法使用类外变量和类外函数
如果要调用另一个类的属性和方法,直接实例化后调用就可以 但是要使用的变量和函数是独立的,不在本类或其他类里面,这时调用就要用下面的方法(本例是在同一个php文件里,如果不再同一个类文件可以requir ...
- js 为对象添加和删除属性
对于一个普通的js对象: var obj = { name:"mary", age:21 } 如果我们要对它添加新属性的话可以使用下列方式: obj.address = " ...
- C++11随机数发生器
前言 一直知道所谓的"随机数"都是伪随机,事实上也是满足某种规则生成的.有些程序测试时通常需要一个随机数源,但在新标准出现之前,C++都是依赖简单的C库函数rand来生成随机数的. ...
- BZOJ 3673 可持久化并查集 by zky && BZOJ 3674 可持久化并查集加强版 可持久化线段树
既然有了可持久化数组,就有可持久化并查集.. 由于上课讲过说是只能按秩合并(但是我也不确定...),所以就先写了按秩合并,相当于是维护fa[]和rk[] getf就是在这棵树中找,直到找到一个点的fa ...
- jQuery Plugin Poshy Tip 使用 统一提示信息
项目到了后期,发现前端的提示信息不统一,解决思路如下: 1.回顾系统中tip出现的场景:表单验证提示信息.数据列表中随填随显 2.确定问题域:多条提示信息层叠.信息显示风格不统一 3.结论:找出一款合 ...
- python模块之datetime方法详细介绍
datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...
- LeetCode 136 Single Number 数组中除一个数外其他数都出现两次,找出只出现一次的数
Given an array of integers, every element appears twice except for one. Find that single one. class ...
- 牛客网练习赛26B(简单的dp)
题目链接:https://www.nowcoder.com/acm/contest/180/B 链接:https://www.nowcoder.com/acm/contest/180/B来源:牛客网 ...
- Sum vs XOR
https://www.hackerrank.com/contests/hourrank-13/challenges/arthur-and-coprimes 要求找出所有x <= n x + ...