翻过那座山——Jenkins编译发布web程序(.net framework web application)

本文主要是介绍翻过那座山——Jenkins编译发布web程序(.net framework web application),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创
  • 📢作者格言:新的征程,我们面对的不是技术而是人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !

序言

当一根根白发慢慢的爬到我的头上的时候,我敲击键盘的手,也没有20年前那么麻利而迅速了。人谁能摆脱岁月的杀猪刀,而这把杀猪刀对码农来说,看起来格外的锋利。

还记得第一次面对电脑时的兴奋劲吗?还记得第一次玩电脑游戏时的开心吗?

是啊,时光飞逝,那个属于你我他的青葱岁月,终将离我们而去。而我们依然需要在滚滚红尘中努力走好自己的路,作为码农,依然需要双手敲击键盘,码下多年后回头不忍目睹的一行行代码…

1. 那个自动化,你别走

每次看到同事们,辛苦的编译和发布代码,我都忍不住默默打开我的电脑,远程到服务器上,静静的安装最古老而又最勤恳可靠的Jenkins。

多年之前,我已经习惯了打开Jenkins的丑陋界面,打开我的项目,然后点击Build。

而多年之后,我又一次面对Jenkins,这次竟然是闪闪发光的老头。
在这里插入图片描述
时间到底做了什么?

是不是每次点击Build的时候,我们都双手合十,在心中静静的祷告,祈求上天怜悯,让我们一次通过编译和发布?

我不知道是什么原因,不过这也不是我们Care的点。

2. 怎么编译.Net framework的项目?

在这里插入图片描述

  1. 编译.net framework的项目,最简单而直接的命令就是msbuild了。
  2. 那么怎么拥有msbuild呢?最简单的方法就是安装ms visual studio,应该不会有更简单而不易出错的办法了吧!
  3. 怎么使用nuget?我的建议是直接下载nuget,放在系统盘里,这样每个地方都可以调用它了。
  4. 怎么编译具体的.net framework项目呢?让我们先描述以下步骤吧,先使用nuget复原所有的项目包,然后调用msbuild进行编译,然后打包输出,让我们show下代码。
# 以下都是powershell脚本
nuget.exe restore SCPlatformApiServer.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild "abc.sln" /t:Build /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnlyif ($LastExitCode -eq 0){echo "build 通过!"
}
else{echo '失败!'exit 1
}

机智如我,使用LastExitCode来判断执行是否成功。

那么,真正的问题来了,怎么编译一个.net framework 的web项目呢?

3. 怎么编译.Net framework的Web项目?

这个问题,如果细细追究确实非常复杂。

web项目不仅仅包含编译的bin下的目录文件,它还包含网页/js/资源/global.asax/webconfig等一系列的文件,我们采用上述方案编译后,立即获得了一个bin目录。

除此之外,并没有其他程序,如果直接分发,则iis都拉不起来这个web程序。

这里,我们必须请求大神DeployOnBuild,搜索微软网站,可以找到类似的介绍。

当然,它有个前提条件,请检查你的web项目的项目文件,看看是否包含如下语句:

 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /><Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v17.0\WebApplications\Microsoft.WebApplication.targets"  Condition="true"/>

如果没有,那么手工补上去也是可以的。

好了,有了这个发布的支撑,我们可以开心的玩了。

# 以下都是powershell脚本
nuget.exe restore abc.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild ".abc/abc.csproj" /p:DeployOnBuild=true -restore /p:OutDir="$ENV:WORKSPACE/Bin" /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnly
if ($LastExitCode -eq 0){echo "build 通过!"
}
else{echo '失败!'exit 1
}

忽略里面的/p:OutDir参数吧,这个目录只有dll,真不行。

然后看看我的打包脚本吧。

# 以下都是powershell脚本
$outdir="$ENV:WORKSPACE/Bin/_PublishedWebsites/SCPlatformApiServer/"
Compress-Archive -Path "$outdir" -DestinationPath "$ENV:WORKSPACE/abc$ENV:BUILD_NUMBER.zip"
Write-Output "修改和打包结束."

打包的内容如下:
在这里插入图片描述
复制到网站目录,即可运行!
在这里插入图片描述

每当你做成一件事情的时候,心中总会升起一股暖流,也许这就是我们努力的理由!

结语

Jenkins是个非常好的工具,不过自从用了gitlab的ci后,这个用途越来越少了。

👓都看到这了,还在乎点个赞吗?

👓都点赞了,还在乎一个收藏吗?

👓都收藏了,还在乎一个评论吗?

这篇关于翻过那座山——Jenkins编译发布web程序(.net framework web application)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394771

相关文章

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增