广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >asp.net core + jenkins 实现自动化发布功能
  • 647
分享到

asp.net core + jenkins 实现自动化发布功能

2024-04-02 19:04:59 647人浏览 安东尼
摘要

目录一、安装jenkins二、安装gitee插件三、服务器相关编译环境配置四、新建自动构建任务由于部署个人博客系统的服务器只有2G内存,每次利用jenkins编译,发布的时候jenk

由于部署个人博客系统的服务器只有2G内存,每次利用jenkins编译,发布的时候jenkins老是挂,因此新买了一台轻量应用服务器,专门用于个人博客系统的持续发布任务,下面讲解如何利用jenkins实现系统的持续发布功能。

一、安装Jenkins

我这边服务器是linux Centos 7 ,使用ssh 登录云服务器后,输入以下命令安装jenkins.

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import Https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-11-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload
systemctl enable jenkins
sudo systemctl start jenkins

安装成功后,在浏览器中输入服务器 公网IP地址+8080端口访问

上图提示你需要从服务器上的initialAdminPassWord文件复制jenkins的初始登录密码进行输入,输入后点击继续。

然后选择 安装Jenkins推荐的插件,然后等待所有推荐插件安装完成.

安装完后,创建一个登录Jenkins的账号

访问地址配置用默认的就好(通过8080端口访问)。

二、安装Gitee插件

这边以我的个人博客代码为例子,因为目前我的个人博客代码是托管到码云上,因此这里利用Gitee插件来实现持续发布功能.

点击左侧 Dashboard->Manage Jenkins(系统管理) 菜单,并点击Manage Plugins(插件管理)

选择可选插件,然后输入Gitee,然后点 Download now and install after restart,

这个插件主要是用于接收gitee WEBHook通知(如:代码提交、PR等)并触发jenkins构建、

安装成功后,前往 Jenkins -> Manage Jenkins(系统管理) -> Configure System(系统配置) -> Gitee Configuration(Gitee配置) ,对插件进行配置。

添加一个新的证书令牌,按照如下配置,GiteeapiV5 私人令牌可以通过页面:https://gitee.com/profile/personal_access_tokens 生成,然后点击添加。

这个时候点击测试连接会发现报错,无法连上,https://gitee.com/oschina/Gitee-Jenkins-Plugin/issues/I4NQAJ 这里面提出了解决方案 , javax.ws.rs-api jar包可以在这里(https://repo1.Maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/)下载。

,需要注意的是:安装完相应jar包或者Jersey 2 API 插件后后记得重启jenkins才能生效。

mkdir -p /var/cache/jenkins/war/WEB-INF/lib
cd /var/cache/jenkins/war/WEB-INF/lib
wget https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.jar
 chmod a+x javax.ws.rs-api-2.1.1.jar
systemctl restart jenkins

按照以上方法试了后,我这边还是不行,可能是我那个流程没有操作对。

然后安装Jersey 2 API后,重启jenkins发现可行(我这边jenkins版本比较新)

三、服务器相关编译环境配置

安装.net core sdk.用于编译,我这边用的dotnet版本还是.Net Core 3.1,输入以下命令安装

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1

安装git

sudo yum install git

四、新建自动构建任务

进入 Dashboard->新建任务,输入任务名称,然后选择流水线。

General配置

配置构建触发器

配置流水线

点击Credentials 右下方的添加按钮,添加用于拉取代码用的身份验证凭据。

需要注意的是:如果使用git ssh 协议(也就是格式为git开头的仓储地址),则添加身份验证凭据的时候,凭据类型只支持:Username with password (用户名和密码验证)、SSH Username with private key(用户名和私钥验证),用户名就是gitee的登录账号。

创建身份验证凭据秘钥前,需要将服务器登录用户先切换到jenkins用户,不然以root用户创建的秘钥文件,将无法拉取代码(存在权限问题),切换到jenkins用户前,先执行以下命令,以便允许jenkins用户登录。

sudo usermod -s /bin/bash jenkins

切换到jenkins用户

sudo su - jenkins

在服务器上输入以下命令创建身份验证凭据私钥,-C 后面的参数可以是任意内容,但通常用邮箱账号。

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"

生成后,服务器上输入以下命令读取公钥内容,然后将公钥内容复制到gitee指定项目的 管理->部署公钥管理->添加公钥中添加指定公钥,

cat ~/.ssh/id_ed25519.pub

gitee上添加公钥后,在服务器上执行以下命令

ssh -T git@gitee.com

通过执行以下命令读取ssh身份验证私钥内容,并输入到 jenkins 身份验证凭据的以下位置。

cat ~/.ssh/id_ed25519

添加身份验证凭据后,按照下图配置。

在jenkins 服务器上执行以下命令,创建ssh 身份认证秘钥,并将公钥复制到应用服务器上,以便在编译成功后,直接复制dll到应用服务器上,而无需输入应用服务的登录密码,需要注意的是,创建秘钥前,先切换到jenkins用户账号。

sudo su - jenkins
ssh-keygen -t rsa

以下命令表示将jenkins所在服务器生成的公钥复制到应用服务器(因为~/.ssh/目录下已经有其他的秘钥,因此这边指定复制哪一个公钥)

ssh-copy-id -i ~/.ssh/id_rsa.pub root@115.159.114.65 -p 1200

以上两个命令执行成功后,可以创建一个文本文件进行测试,看下是否能无需输入密码就可以复制文件到应用服务器。

cd ~
touch test.txt
echo "测试内容" >> test.txt

以下命令用于将jenkins服务器上用户主目录下的test.txt文件复制到应用服务器上用户主目录。

# -P 表示应用服务器的ssh登录端口(如果不是22,必须指定),-i 后面跟的是jekins服务器上生成的私钥文件。
scp -P 1200 -i ~/.ssh/id_rsa ~/test.txt root@115.159.114.65:~

在项目的解决方案文件(.sln)同级目录下新建名称为jenkinsfile的文件,并输入以下脚本内容

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
              echo '开始拉取代码'
              sh 'git pull origin dev:dev'
              echo '切换到本地dev分支'
              sh 'git checkout dev'
              
              echo '当前工作目录及文件列表如下'
              sh 'pwd'
              sh 'ls -al'
              
              dir("${WORKSPACE}/BlogSys") {
                 echo '开始编译博客前端站点'
                 sh 'dotnet publish ./BlogSys.csproj -c Release -r linux-x64 --no-restore'
              }
              //WORKSPACE表示存放代码的根目录。
              dir("${WORKSPACE}/BlogSysManagement"){
                echo '开始编译博客后台站点'
                sh 'dotnet publish ./BlogSysManagement.csproj -c Release -r linux-x64 --no-restore'
              }
            }
        }
        stage('deploy')
        {
            steps {
              echo '开始发布流程,当前工作目录如下'
              sh 'pwd'
             
              echo '开始发布个人博客前端系统'
              echo '停止前端站点'
              sh 'ssh -i ~/.ssh/id_rsa root@115.159.114.65 -p 1200 -T "systemctl stop blogsys"'
              //dir函数里面要用环境变量记得用双引号,该函数用于改变当前目录,dir函数块里面包含的所有相对路径都是相对于dir指定的目录。
              dir("${WORKSPACE}/BlogSys/bin/Release/netcoreapp3.1/linux-x64/publish/"){
                    //-i 用于指定ssh传输身份验证私钥,-r表示复制目录下的所有文件及子目录以及子目录下的所有文件,也可以将这个文件夹打包压缩后再传输。
                    sh 'scp -P 1200 -i ~/.ssh/id_rsa -r ./ root@115.159.114.65:/var/www/blogsys' 
              }
              echo '重启前端站点'
              //这里不能使用-t 选项,应该使用-T 或 -tt 代理,否则无法正确执行。
              sh 'ssh -i ~/.ssh/id_rsa root@115.159.114.65 -p 1200 -T "systemctl restart blogsys"'
              
              echo '开始发布个人博客后台管理系统'
              echo '停止后台站点'
              sh 'ssh -i ~/.ssh/id_rsa root@115.159.114.65 -p 1200 -tt "systemctl stop blogsysmgr"'
              dir("${WORKSPACE}/BlogSysManagement/bin/Release/netcoreapp3.1/linux-x64/publish/"){
                      sh 'scp -P 1200 -i ~/.ssh/id_rsa -r ./ root@115.159.114.65:/var/www/blogsysmgr' 
              }
              echo '重启后台站点'
              sh 'ssh -i ~/.ssh/id_rsa root@115.159.114.65 -p 1200 -tt "systemctl restart blogsysmgr"'
     
              echo '系统发布成功'
            }
        }
    }
}

完成以上步骤后就可以开始测试构建啦.

gitee+jenkins 实现代码自动发布流程大概的流程总结起来就是:提交代码到gitee->gitee通过Webhook钩子通知jenkins gitee插件->gitee插件触发构建(Gitee API V5 Token验证)->git插件拉取代码(通过SSH Username with Private key身份验证方式)->执行编译脚本->发布到应用服务器,另外需要注意的是 jenkins 默认是以jenkins用户来执行的,因此需要开通jenkins用户能执行bash的权限,以及创建git插件身份验证秘钥的时候一定要以jenkins用户登录去创建,否则要拉取代码的时候会出现权限问题。

参考:

https://www.jenkins.io/doc/book/installing/linux/

https://gitee.com/help/articles/4193

https://gitee.com/oschina/Gitee-Jenkins-Plugin/issues/I4NQAJ

https://gitee.com/oschina/Gitee-Jenkins-Plugin/issues/I27J6U?from=project-issue

https://stackoverflow.com/questions/60184012/jenkins-does-not-show-configured-git-credentials

https://gitee.com/help/articles/4181

https://www.cnblogs.com/zinan/p/14106186.html

https://stackoverflow.com/questions/21434064/how-to-become-a-jenkins-user

https://stackoverflow.com/questions/7114990/pseudo-terminal-will-not-be-allocated-because-stdin-is-not-a-terminal

https://www.cyberciti.biz/faq/force-ssh-client-to-use-given-private-key-identity-file/

https://unix.stackexchange.com/questions/494483/specifying-an-identityfile-with-ssh

到此这篇关于asp.net core + jenkins 实现自动化发布的文章就介绍到这了,更多相关asp.net core  jenkins自动化发布内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: asp.net core + jenkins 实现自动化发布功能

本文链接: https://www.lsjlt.com/news/145568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • asp.net core + jenkins 实现自动化发布功能
    目录一、安装Jenkins二、安装Gitee插件三、服务器相关编译环境配置四、新建自动构建任务由于部署个人博客系统的服务器只有2G内存,每次利用jenkins编译,发布的时候jenk...
    99+
    2022-11-13
  • ASP.NET Core中使用MialKit实现邮件发送功能
    具体代码如下所示: # 导包   首先我们需要导入 MailKit NuGet包,NuGet安装包命令在下方拓展介绍中。 # 引用命名空间 using MailKit.Net...
    99+
    2022-06-07
    net ASP.NET core 邮件 ASP
  • jenkins配置golang 代码工程自动发布的实现方法
    目录前沿一、在jenkins宿主机上配置go环境;1、安装go;2、配置环境变量3、验证环境是否可用二、jenkis上配置项目1、jks上新建项目2、“源码管理&rdqu...
    99+
    2022-11-11
  • Vue如何实现自动触发功能
    目录实现自动触发功能自定义指令实现自动点击事件1.若是没有v-for循环2.若是有v-for循环实现自动触发功能 今天在项目中遇到一个问题,就是当页面加载的时候,我希望某个元素通过点...
    99+
    2022-11-13
  • android AccessibilityService无障碍功能开发,实现自动化测试
    android AccessibilityService无障碍功能开发,实现自动化测试,这里使用抖音为例子,仅供技术研究学习使用。 使用方法 安装好APP后,需要打开无障碍功能,打开后,在次打开抖音APP,随便找一个直播间,上下滑动切换直接...
    99+
    2023-09-13
    android android studio java
  • android实现微信朋友圈发布动态功能
    本文实例为大家分享了android仿微信朋友圈发布动态功能的具体代码,供大家参考,具体内容如下 效果图: 本文概述 用到的开源库:仿照微信的图片选择器,Luban压缩图片,g...
    99+
    2022-06-06
    朋友圈 动态 Android
  • Python实现直播弹幕自动发送功能
    目录前言发送请求循环发弹幕最后看看效果怎么样前言 今天制作的这一款能在B站能指定直播间、自动发弹幕的功能的脚本,因为没做那么多的功能,所以代码很简单,适合刚入门的同学学习 先打开一个...
    99+
    2022-11-13
  • Python一行代码实现自动发邮件功能
    1. 用Python每天给女神发送舔狗问候 用Python自动发送最基本的邮件(主题+收件人) 知识点 邮件结构 以263企业邮为例 ...
    99+
    2022-11-12
  • 如何通过Oracle实现自动发邮件功能
    在内网项目、外网项目中多有 需要自动监控发邮件提醒的功能,因为邮件功能最便捷、便宜、不用开接口,不用接口费用。现 提供 我在一个内网项目中的使用案例: 案例背景: 在有限的资源下,能够自动给下级单位发布 数据考核评分(自动评分)和...
    99+
    2019-09-17
    如何通过Oracle实现自动发邮件功能
  • python实现自动化办公邮件合并功能
    经常使用word办公的小伙伴们经常会遇到邮件合并的任务,通常会将数量有限的表格中的信息通过word的邮件合并功能,自动生成word文档,操作熟练的技术员通常不到十分钟就可以合并几十份邮件。那么如果遇到成千上万份的邮件...
    99+
    2022-06-02
    python邮件合并 python 自动化办公
  • 使用auto.js实现自动化每日打卡功能
    使用auto.js实现自动化每日打卡 疫情原因,需要在家每天定时打卡,每天刚起床的时候避免不了出现注意力不集中或者是看不到app,点不到按钮什么的(我瞎说的)。 所以,就想搞一个自动...
    99+
    2022-11-12
  • Python怎么实现直播弹幕自动发送功能
    这篇文章主要讲解了“Python怎么实现直播弹幕自动发送功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现直播弹幕自动发送功能”吧!前言先打开一个直播间按F12打开开发者...
    99+
    2023-06-29
  • Python+selenium 自动化快手短视频发布的实现过程
    第一章:效果展示 ① 效果展示 ② 素材展示 一个为视频,另一个为像素大小不小于视频的封面。 第二章:实现过程 ① 调用已启用的浏览器 通过调用已启用的浏览器,可以实现直接跳过每...
    99+
    2022-11-12
  • node脚本实现自动化签到和抽奖功能
    目录一、前言二、准备三、脚本工程搭建四、代码编写&运行五、总结以及想说的话六、相关源码和借鉴的博客一、前言   掘金自从推出签到活动后,就不断的完善这个功...
    99+
    2022-11-12
  • Angular中怎么实现自动化功能请求流程
    Angular中怎么实现自动化功能请求流程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Angular 宣布将在接下来的几周内...
    99+
    2022-10-19
  • Python一行代码如何实现自动发邮件功能
    这篇文章主要介绍了Python一行代码如何实现自动发邮件功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 用Python每天给女神发送舔狗问候用Python自动发送最基...
    99+
    2023-06-15
  • 教你用vbs实现微信自动发送消息功能
    目录前言1、微信自动回复消息2、vbs脚本运行方式总结前言 最近对电脑或手机自动进行某些操作很感兴趣,于是去看了一下有关手机电脑微信自动回复消息相关的东西,发现很多恶搞代码不仅可以通...
    99+
    2022-11-13
  • Android实现收到新短信后自动发邮件功能
    本文实例为大家分享了Android实现收到新短信后自动发邮件的具体代码,供大家参考,具体内容如下 开发环境 Android Studio 3.2.1首先,既然跟读短信和发邮件有...
    99+
    2022-06-07
    自动 邮件 Android
  • 怎么用vbs实现微信自动发送消息功能
    这篇文章主要介绍了怎么用vbs实现微信自动发送消息功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vbs实现微信自动发送消息功能文章都会有所收获,下面我们一起来看看吧。1、微信自动回复消息微信,作为日前...
    99+
    2023-06-30
  • python怎么实现自动化办公邮件合并功能
    本篇内容主要讲解“python怎么实现自动化办公邮件合并功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么实现自动化办公邮件合并功能”吧!经常使用word办公的小伙伴们经常会遇到...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作