jenkins publish .net core application to linux server
最近学习Docker与Jenkins, 网上大部分都是关于Jenkins+Git+Docker进行持续远程部署, 我一直在考虑为什么Jenkins和Docker要绑定一块使用, 因为我想单独使用Jenkins进行本地构建然后远程部署, 那么这就开始行动.
准备Linux服务器
我在Azure创建了一台CentOS7服务器, 开放22端口供SSH使用, 并且开放了5000和5001端口.
安装DotNet Core
基于微软官方文档, SSH到服务器使用如下命令安装:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.0
配置Jenkins
Jenkins的安装请参考我的之前的一篇博文, 在此基础上, 我们安装如下插件:
- Publish over SSH
安装完成之后配置相关参数: Manage Jenkins -> Configure System 去配置SSH服务器的参数.
同时还需要添加环境变量允许本地执行dotnet, 首先输出本地所有环境变量:
echo $PATH
然后以输出内容为值, 以Path为键, 添加到Global properties -> Environment variables.
这里有个问题, 我是用密钥链接爆出了如下错误:
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@561b51aa]
网上说是因为密钥版本太高了, 重新产生一个低版本的密钥太麻烦, 没办法, 我只能去Azure设置了用户名和密码, 测试之后连接成功.
构建项目
- 新建一个Freestyle Project, 名字随便起, 然后确定进入配置页.
- 在Source Code Management选择git, 并且在Repository URL填入如下地址:
https://gitee.com/jerryqi/JenkinsTest.git
在Build Environment进行如下操作:
- 勾选Delete workspace before build starts
- 勾选Send files or execute commands over SSH after the build runs, 填写信息如下:
Key Value Name 默认选择了你之前配置的Server Source files JenkinsTest/bin/Release/netcoreapp3.0/publish/** Remove prefix JenkinsTest/bin/Release/netcoreapp3.0/publish Exec command dotnet JenkinsTest.dll 在build选项卡中的Add build step选择Excute shell, 并填入如下脚本:
dotnet publish -c Release
最后保存
至此所有工作都以完成, 点击Build Now, 等构建完成, 访问http://serverip:5000, 出现界面即大功告成.
导出配置文件
我们一般使用Jenkins-CLI来导出和导入, 这里我只介绍导出.
下载导出工具
在Jenkins上,打开Manage Jenkins,打开Jenkins-CLI, 点击get-job, 出现了如下提示:
java -jar jenkins-cli.jar -s http://localhost:8080/ get-job JOB
Dumps the job definition XML to stdout.
JOB : Name of the job
然后点击jenkins-cli.jar, 下载到本地. 这里我已经把它拷贝进了之前提到的开源项目里面, 因为我要在里面生成导出文件.
导出
根据以上提示, 我们可以使用如下命令导出我们的Job:
java -jar jenkins-cli.jar -s http://localhost:8080/ get-job JenkinsTest
修正
实际上上述导出是有一定问题的:
- 直接执行上述命令是会报错的:
ERROR: anonymous is missing the Overall/Read permission
很明显这是没有权限的错误, 我们的Jenkins登陆是需要用户名密码的, 所以这里导出时也需要用户名密码:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth username:password get-job JenkinsTest
当然如果使用密钥登陆的则使用如下命令:
java -jar jenkins-cli.jar -s http://localhost:8080/ -i path/to/key.rsa get-job JenkinsTest
具体请参考:https://www.jeffgeerling.com/blog/2018/fixing-jenkins-cli-error-anonymous-missing-overallread-permission
2. 导出到指定文件的问题:
通过上述命令运行确实是OK的, 但是结果输出到了控制台, 而我想让他产生一个xml文件, 因此修改命令如下:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth username:password get-job JenkinsTest - JenkinsTest.xml
至此大功告成, 产出文件也在上面的开源项目之中: https://gitee.com/jerryqi/JenkinsTest
jenkins publish .net core application to linux server的更多相关文章
- jenkins publish .net core application to linux server in docker
上一个Demo进行了单独的Jenkins远程部署, 本Demo将使用流行的Jenkins+Git+Docker进行持续部署. 准备Linux服务器 和上一篇Demo一样, 在Azure创建一台Cent ...
- 【asp.net core】Publish to a Linux-Ubuntu 14.04 Server Production Environment
Submary 又升级了,目录结构有变化了 . project.json and Visual Studio 2015 with .NET Core On March 7, 2017, the .NE ...
- ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
一.前言 最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...
- .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)
通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .N ...
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...
- ASP.NET Core MVC 在linux上的创建及发布
前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...
- ASP.Net Core 运行在Linux(Ubuntu)
这段时间一直在研究asp.net core部署到linux,今天终于成功了,这里分享一下我的部署过程. Linux Disibutaion:Ubuntu 14.04 Web Server:nginx. ...
- NET Core MVC 在linux上的创建及发布
NET Core MVC 在linux上的创建及发布 前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们 ...
随机推荐
- Python3文件
open()方法 Python open()方法永于打开一个文件,并返回文件对象,并对文件进行处理过程中都需要用到这个方法,如果该文件无法被打开,则抛出OSError 注意:使用open()方法一定要 ...
- bytearray 字符串转为字节
>>> str="hello world">>> x=bytearray(str)>>> xbytearray(b'hello ...
- shell脚本编程——生产实战案例
生产实战案例 在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要 ...
- 绕流振动UDF【转载】
宏DEFINE_GRID_MOTION用来移动任意边界和流体区域内的网格节点.它提供了对节点和网格最大限度的操作,可以将刚体运动.变形和相对运动等结合起来.但是使用此UDF时,每一个时间步都必须执行. ...
- .netFramework 升级NetCore 问题汇总及解决方案
升级版本: NetCore sdk 2.2.108 .AspNetCore 2.2.0.EFCore 2.2.6 所有程序引用均从NuGet上下载,并支持NetCore 问题: 问题1:No coer ...
- EasyTrader踩坑之旅总结
easytrader是用python写的可以调用主要券商完成自动化炒股的一个软件 ,但我用的是同花顺,在研究过程中,发现同花顺暂时调不通.后来搜索发现thstrade的源码作者说是easytrad ...
- 关于解决'\u'开头的字符串转中文的方法
如果字符串是”\u70ed\u95e8\u94ed\u6587\u63a8\u8350”这种形式的字符串: python3的解决办法:字符串.encode(‘utf-8’).decode(‘unico ...
- Java TreeSet,Collections使用
一.创建TreeSet实例 public static void main(String[] args) { TreeSet set = new TreeSet(); set.add("C& ...
- 场景图(Scene Graph)
场景(Scene) · GitBook https://docs.cocos.com/cocos2d-x/manual/zh/basic_concepts/scene.html 场景图(Scene G ...
- python : takes 0 positional arguments but 1 was given
def 的要加self, https://blog.csdn.net/u010269790/article/details/78834410