Linux下Jenkins与GitHub自动构建NetCore与部署

今天我们来谈谈NetCore在Linux底下的持续集成与部署。NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub。我们就跟着博文往下走吧。

1.Linux环境

在进行自动构建之前,我们需要一个可以运行的Linux环境,并保证环境安装了NetCoreSDK,Git,Jenkins等环境,那在这边就不多说环境的安装,提供相对应的安装教程,大家按照安装就可以,不过对Jenkins的安装,我会多啰嗦一句。

啰嗦的那一句
我在安装Jenkins成功的时候进入网页,网页会一直保持在下面图这个状态,没办法进入到开始页面,那解决办法是:

640?wx_fmt=jpeg

Jenkins等待

  1. 进入到Jenkins的工作目录/var/lib/jenkins/修改hudson.model.UpdateCenter.xml文件

  2. http://updates.jenkins-ci.org/update-center.json修改为http://mirror.xmission.com/jenkins/updates/update-center.json

  3. 重启下Jenkins

2.Jenkins自动构建

  • 定时构建
  1. chown jenkins /ftpfile -R  


  2. chmod 777 /ftpfile -R 


  1. dotnet restore 


  2. dotnet build 


  3. dotnet publish 


  4. 创建Jenkins项目
    640?wx_fmt=jpeg

  5. 配置好自定义工作目录
    640?wx_fmt=jpeg

  6. 填写源代码路径
    640?wx_fmt=jpeg

  7. 配置定时任务
    640?wx_fmt=jpeg

    字段*****
    含义分钟小时日期月份星期
    取值范围0-590-231-311-120-7






    示例




    每隔15分钟执行一次H/15****
    每隔2个小时执行一次HH/2***
    每隔3天执行一次HHH/3**
    每隔3天执行一次(每月的1-15号)HH1-15/3**
    每周1,3,5执行一次HH**1,3,5






    规则




    指定时间范围a-b



    指定时间间隔/



    指定变量取值a,b,c



  8. 配置构建命令
    640?wx_fmt=jpeg

  9. 查看构建,并运行NetCore
    注意:
    因为你建立的自定义工作目录,对于"jenkins"没有读写权限,所以可能就会导致构建失败,执行下面命令,给Jenkins赋予读写权限。

    640?wx_fmt=jpeg

触发构建
  1. 提交代码
    640?wx_fmt=jpeg

  2. 查看Jenkins
    640?wx_fmt=jpeg

  1. 切换成触发构建
    640?wx_fmt=jpeg

  2. 使用密文模式,并添加绑定,选择刚才添加的凭据
    640?wx_fmt=jpeg

  1. 添加GitHub服务器
    640?wx_fmt=jpeg
    2.添加GitHub的凭据,也就我们刚才拿到得accessToken
    640?wx_fmt=jpeg

    640?wx_fmt=jpeg

  1. 进入Settings页面,找到左边列表的Developer settings,点击进入,可以看到如下:
    640?wx_fmt=jpeg

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

  1. 在项目设置中找到webhook
    640?wx_fmt=jpeg

  2. 设置Jenkins的hook地址到刚才添加的webhook中,

    Jenkins的hook地址为:http://你的地址(端口)/github-webhook当然这个地址应该是外网可以访问的

    640?wx_fmt=jpeg

  1. 配置GitHub
    针对我们的项目,我们要在自己的项目内添加webhook,并配置好webhook的地址。

  2. Personal access tokens
    对于任何第三方访问GitHub的项目,是需要授权的,Jenkins也是一样的,所以我们需要先获取一个accessToken

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

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

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

3.NetCore部署

终于的终于,我们把构建这个步骤做好了,那么接下来当然就是要部署我们网站咯。

  • 运行NetCore
    运行NetCore最简单了,我们只需要在发布后的目录运行dotnet ***.dll就可以了,当然,前提,你要装CoreSDK。
    640?wx_fmt=jpeg

  • nginx托管
    虽然说上面那样已经运行起来,但是由于我们的环境在腾旭云上,要访问可以用nginx进行方向代理下,下面就简单贴下配置就可以了。

  1. server { 


  2. listen 80


  3. location / { 


  4. proxy_pass http: 


  5. proxy_http_version 1.1


  6. proxy_set_header Upgrade $http_upgrade; 


  7. proxy_set_header Connection keep-alive; 


  8. proxy_set_header Host $host; 


  9. proxy_cache_bypass $http_upgrade; 






守护进程
我们已经知道要运行Core,需要使用命令在控制台运行,但是一旦退出了,Core自然就退出了,所以我们在Linux底下需要一个类似IIS的,来托管我们运行Core的进程,守护进程,让其在后台运行,自动重启等等功能,这个就是supervisor

supervisors是C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。

安装教程可以参考开始表格supervisor的链接,同样怎么对于怎么对Core进行守护进程,文章内也有讲,一步一步按照教程来就可以了。不过我这边还是会讲下我在使用supervisor中遇到的坑。

640?wx_fmt=jpeg

  1. 一开始,我百度了挺多的,发现百度中的文章,对于supervisor的日志文件,很多都说在/etc/log/supervisor/supervisord.log这个文件内,但其实我去找的时候,发现并没有,查看配置文档,发现默认是在tmp中,我不知道是centeros 的版本问题,还是supervisor版本问题。

  2. 还有一个就是,在根据教程走完,配置后,要进行启动时,可能会出现Unlinking stale socket /tmp/supervisor.sock 这个错误,我们只需要解锁下就可以了unlink /tmp/supervisor.sock

4.总结一下

该篇文章简单介绍了下Linux下Jenkins与GitHub自动构建NetCore与部署,很多细点我可能没讲出来,我把大大的教程贴出来,按照教程走起,就可以了,这也是我实践过了的,肯定可以用的,非常感谢大大们,然后呢,我也想抛砖引玉下,在我Jenkins构建时有两个问题,不知道谁可以帮我解答下。

  1. 比如我们的解决方案文件.sln并没有在git项目的根目录下,我们要指定需要构建的解决方案呢?

  2. 还有一个就是,在命令dotnet publish我们怎么指定发布到另一个文件夹内呢,我知道有个参数-o|--output <OUTPUT_DIRECTORY>,我试了下,发现不行 dotnet publish -o /ftpfile/netCore/netCoreJenkins/JenkinsNetCore,会有以下的错误。

    640?wx_fmt=jpeg

最后的最后,我的下一篇文章是《Linux下Jenkins与GitHub自动构建Node项目(Vue)》,期待0.5下吧。

原文地址:https://www.cnblogs.com/xuhuale/p/11062293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[牛客] Tree-换根dp(预防加法取模导致等0)

链接&#xff1a;https://ac.nowcoder.com/acm/problem/19782 题目&#xff1a;修修去年种下了一棵树&#xff0c;现在它已经有n个结点了。 修修非常擅长数数&#xff0c;他很快就数出了包含每个点的连通点集的数量。 澜澜也想知道答案&#xff0c;但他不会数数…

Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

cf传送门 P3643 [APIO2016]划艇 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数&#xff0c;求aaa数组不增的概率。 思路&#xff1a; 这里贴了两个链接&#xff0c;因为这俩题是极其相似的&#xff0…

容器化之后如何节省云端成本?(二十七)

如何节约云端成本&#xff1f;上云在大部分情况下就是为了降低成本&#xff0c;在这方面&#xff0c;主流的容器服务基本上都能够有效地降低成本——不仅能够高效自动化的管理和控制容器&#xff0c;极大地降低了DevOps的维护成本&#xff0c;而且不需支付Kubernetes Master节点…

2020牛客多校第1场H-Minimum-cost Flow-最小费用流

https://ac.nowcoder.com/acm/contest/5666/H 题目大意&#xff1a;给出了每一条边的费用&#xff0c;有q个询问&#xff0c;问当每一条边的容量为u/v时&#xff0c;通过1流量的最小费用是多少。 思路&#xff1a;很明显这道题只能跑一次费用流&#xff0c;那我们跑一次全部边…

Codeforces Round #717 (Div. 2) D. Cut 倍增

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定长度为nnn的序列&#xff0c;有qqq个询问&#xff0c;每次询问一个区间&#xff0c;输出至少将这个区间分成多少个连续区间才能使每个区间内的数互质。 思路&#xff1a; 首先要判断互质&#xff0c;这…

kubernetes高级之创建只读文件系统以及只读asp.net core容器

使用docker创建只读文件系统容器化部署对应用的运维带来了极大的方便,同时也带来一些新的安全问题需要考虑.比如黑客入侵到容器内,对容器内的系统级别或者应用级别文件进行修改,会造成难以估量的损失.(比如修改hosts文件导致dns解析异常,修改web资源导致网站被嵌入广告,后端逻辑…

2020牛客多校第1场I-1 or 2一般图最大匹配带花树

链接&#xff1a;https://ac.nowcoder.com/acm/contest/5666/I Bobo has a graph with n vertices and m edges where the i-th edge is between the vertices ai​ and bi​. Find out whether is possible for him to choose some of the edges such that the i-th vertex is…

Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个不规则的网络格子&#xff0c;有nnn列&#xff0c;每列有aia_iai​个格子&#xff0c;让你将121212的多米诺骨牌无重叠的放进去&#xff0c;问最多能放多少个。 思路&#xff1a; 首先如果点数小的话…

点分治入门

点分治就是树上的分治&#xff0c;也就是处理把分治强行搬到树上的毒瘤问题。 算法流程 引入&#xff1a;[国家集训队]聪聪可可 &#xff08;各大OJ搜索即可&#xff09; 题意&#xff1a;给一棵树&#xff0c;随机选两个点&#xff08;可以相同&#xff09;&#xff0c;求距…

P2495 [SDOI2011]消耗战-虚树+树形dp

https://www.luogu.com.cn/problem/P2495 虚树&#xff1a;当我们在解决树形dp的问题的时候&#xff0c;题目中会给出一些询问&#xff0c;询问涉及的关键节点不多&#xff0c;并保证总的点数规模的时候&#xff0c;我们就可以使用虚数&#xff0c;如果每次询问都对整个树进行…

DDD中的聚合和UML中的聚合以及组合的关系

UML&#xff1a;聚合关系&#xff1a;成员对象是整体的一部分&#xff0c;但是成员对象可以脱离整体对象独立存在。如汽车&#xff08;Car&#xff09;与引擎&#xff08;Engine&#xff09;、轮胎&#xff08;Wheel&#xff09;、车灯&#xff08;Light&#xff09;之间的关系…

Network 黑暗爆炸 - 3732 倍增lca || Kruskal重构树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 两点间最长边最小值一定是最小生成树上两点间的最大值&#xff0c;这个比较容易证&#xff0c;就不多说了。 知道这个结论后&#xff0c; 我们直接跑一个KruskalKruskalKruskal建树&#x…

Manacher入门

写在前面 manachermanachermanacher比想象中好理解得多 至少它给了我学习字符串的信心 能干啥 manachermanachermanacher&#xff0c;中文马拉车&#xff08;您别说&#xff0c;这名字还挺形象&#xff09;&#xff0c;主要用于计算字符串每一个位置为对称中心的回文串长度&a…

HDU.6761.Minimum Index(Lyndon分解)

题目大意&#xff1a;给一个字符串&#xff0c;求字符串的所有前缀的最小后缀&#xff1b; 思路&#xff1a;主要还是要理解Lyndon串的算法的整一个过程 参考&#xff1a;搬运来自 #include <iostream> #include <cstdio> #include <fstream> #include <…

C#规范整理·异常与自定义异常

这里会列举在C#中处理CLR异常方面的规范&#xff0c;帮助大家构建和开发一个运行良好和可靠的应用系统。前言迄今为止&#xff0c;CLR异常机制让人关注最多的一点就是“效率”问题。其实&#xff0c;这里存在认识上的误区&#xff0c;因为正常控制流程下的代码运行并不会出现问…

Codeforces Round #619 (Div. 2) D. Time to Run 矩阵回路构造

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个n∗mn*mn∗m的矩阵&#xff0c;每两个相邻点之间有个双向边&#xff0c;问你能不能走满kkk步&#xff0c;每一步走的边不同&#xff0c;但是点可以相同&#xff0c;换句话说就是走的边不能再走了。输…

HDU - 6756 Finding a MEX-分块思想

https://vjudge.net/problem/HDU-6756 题目大意&#xff1a;给你一个无向图&#xff0c;每个点有权值a&#xff0c;将f&#xff08;u&#xff09;定义为对u的邻居的集合求mex&#xff1b; 有两个操作&#xff1a; 1&#xff1a;将u的权值修改为x 2&#xff1a;查询f&#x…

中高级数论 [欧拉函数线性筛,二次剩余]

欧拉函数线性筛 对于素数ppp, φ(p∗i){p−1i1p∗φ(i)p∣i(p−1)∗φ(i)p∤i\varphi (p*i) \begin{cases} p-1& i1\\ p*\varphi(i)& p \mid i\\ (p-1)*\varphi(i) & p \nmid i \end{cases}φ(p∗i)⎩⎪⎨⎪⎧​p−1p∗φ(i)(p−1)∗φ(i)​i1p∣ip∤i​ 证明&am…

C#中await/async闲说

自从C#5.0增加异步编程之后&#xff0c;异步编程越来越简单&#xff0c;async和await用的地方越来越多&#xff0c;越来越好用&#xff0c;只要用异步的地方都是一连串的异步&#xff0c;如果想要异步编程的时候&#xff0c;需要从底层开始编写&#xff0c;这样后边使用的时候就…

Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑到最大面积是由四种颜色构成的&#xff0c;且四种颜色可以从中心扩展出去&#xff0c;所以我们分别维护四种颜色的二维前缀和&#xff0c;O(1)O(1)O(1)计算矩阵内颜色的个数。现在我们…