最近学习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设置了用户名和密码, 测试之后连接成功.

构建项目

  1. 新建一个Freestyle Project, 名字随便起, 然后确定进入配置页.
  2. 在Source Code Management选择git, 并且在Repository URL填入如下地址:
https://gitee.com/jerryqi/JenkinsTest.git
  1. 在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
  2. 在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

修正

实际上上述导出是有一定问题的:

  1. 直接执行上述命令是会报错的:
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的更多相关文章

  1. jenkins publish .net core application to linux server in docker

    上一个Demo进行了单独的Jenkins远程部署, 本Demo将使用流行的Jenkins+Git+Docker进行持续部署. 准备Linux服务器 和上一篇Demo一样, 在Azure创建一台Cent ...

  2. 【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 ...

  3. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路

    一.前言  最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...

  4. .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)

    通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .N ...

  5. .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)

    在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...

  6. ASP.NET Core MVC 在linux上的创建及发布

    前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...

  7. ASP.NET Core 发布至Linux生产环境 Ubuntu 系统

    ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...

  8. ASP.Net Core 运行在Linux(Ubuntu)

    这段时间一直在研究asp.net core部署到linux,今天终于成功了,这里分享一下我的部署过程. Linux Disibutaion:Ubuntu 14.04 Web Server:nginx. ...

  9. NET Core MVC 在linux上的创建及发布

    NET Core MVC 在linux上的创建及发布 前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们 ...

随机推荐

  1. 如何修复GitKraken Inotify Limit Error\idea erro - 升级Ubuntu / Linux inotify限制

    GitKraken是一个非常优秀的Git客户端.如果您是软件开发人员,那么您绝对应该试试GitKraken.今天我去了我的一个存储库做了一些提交,但是GitKraken告诉我它已经得到了Inotify ...

  2. C# 使用配置文件配置应用

    使用配置文件配置应用 .NET Framework 通过配置文件为开发人员和管理员提供了对应应用程序运行方式的控制权和灵活性.配置文件可以按需要更改的XML文件.管理员能够控制应用程序可以访问哪些受保 ...

  3. Oracle中查询走索引的情况

    1.对返回的行无任何限定条件,即没有where子句 2.未对数据表与任何索引主列相对应的行限定条件例如:在City-State-Zip列创建了三列复合索引,那么仅对State列限定条件不能使用这个索引 ...

  4. ubuntu之路——day10.5 可避免偏差

    可避免偏差: 总结一下就是当贝叶斯最优误差接近于训练误差的时候,比如下面的例子B,我们不会说我们的训练误差是8%,我们会说我可避免偏差是0.5%.

  5. vue 错误提问示例

    > 表格显示数据,选中其中一条数据进行编辑,弹出层编辑,发现修改数据时,表格中的数据同步变化.编辑成功之后,还会返回原本没修改之前的数据. > 传对象给子组件,子组件的值污染父组件.

  6. python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective

    本文链接:https://blog.csdn.net/qq_27261889/article/details/80720359 # usr/bin/env python # coding: utf- ...

  7. GIS地理处理工具案例教程-成本距离

    GIS地理处理工具案例教程-成本距离 关键词:最短路径,成本路径,最佳路径,最优路径,路径分析,选线分析 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq ...

  8. 008 BOM

    一:说明 1.说明 浏览器对象模型 2.顶级对象 浏览器中的顶级对象是window 页面中的顶级对象是document 因此: 变量属于window的,函数也是window的. 就可以使用window ...

  9. Android Support v4、v7、v13、v14、v17的区别和应用场景

    Android Support v4.v7.v13.v14.v17的区别和应用场景   本文链接:https://blog.csdn.net/Aquarius_Seven/article/detail ...

  10. openresty开发系列28--openresty中操作mysql

    openresty开发系列28--openresty中操作mysql Mysql客户端   应用中最常使用的就是数据库了,尤其mysql数据库,那openresty lua如何操作mysql呢?   ...