nuget包也要自动化部署了,想想确实挺好,在实施过程中我们要解决的问题有版本自动控制,nuget自动打包,nuget自动上传到服务端等。

一 参数化构建

二 环境变量的k/v参数,存储类库的初始版本,当根目录version.txt生成后,这个k/v就不需要了

 

三 这个构建跳转到哪台节点服务器

四 使用ps插件,完成version.txt的建立和更新

$initVersion=[Environment]::GetEnvironmentVariable("${env:projectName}")

#版本文件目录
$VersionFileDirectory="${env:WORKSPACE}/NugetServices/${env:projectName}"
#版本文件名字
$VersionFileName="version.txt" #版本文件路径
$VersionFilePath="$VersionFileDirectory\$VersionFileName" #初始版本变量值 1.0.0.0
$InitVersionValue=""; #版本长度1.0.0.0 =4
$VersionLength=3 Function UpdateVersion($vvalue,$vlength,$vfilepath)
{
$content=$(Get-Content -Path $vfilepath) if([string]::IsNullOrEmpty($content))
{
Write-Host "version file don't exist ,creating version file......"
SetVersion $vvalue $vlength $vfilepath
}
else
{
$versionvalue=$([string]$content)
Write-Host "old version: $versionvalue"
$versionvalues=$([int]([string]$versionvalue).Replace(".",""))
$versionvalues=$(($versionvalues+1).ToString())
SetVersion $versionvalues $vlength $vfilepath
}
} #设置版本值,版本名,版本值,版本长度,版本文件路径
Function SetVersion($vvalue,$vlength,$vfilepath)
{
if(-Not (Test-Path -Path $vfilepath))
{
$null=New-Item -Path $vfilepath -ItemType File -Force
}
$value=GetVersion $vvalue $vlength
Set-Content -Path $vfilepath -Value "$value"
} Function GetVersion($value,$versionlength)
{
$value=[string]$value
$versionlength=[int]$versionlength $versionvalue="";
$num=$value.Length-$versionlength+1
for($i=0;$i -lt $versionlength;$i++)
{
if($i -eq 0)
{
$versionvalue= $value.Substring(0,$num)+"."
}
else
{
$index=$i+$num-1
$versionvalue=$versionvalue+$value[$index]+"."
}
}
$result=$versionvalue.Trim(".");
Write-Host "new version: $result"
return $result;
} if(-Not(Test-Path -Path $VersionFilePath))
{
SetVersion $initVersion $VersionLength $VersionFilePath
}
else {
UpdateVersion $InitVersionValue $VersionLength $VersionFilePath
}

五 使用cmd,完成.net core项目的发布和打包,注意如果是frameworks项目,需要使用nuget.exec 完成这个功能。

NGUET方法:(nuget pack NugetServices/Pilipa.Utility -version 2.1.3)
path "C:\Program Files\dotnet"
cd "NugetServices/%projectName%"
set /p version=<version.txt
dotnet restore --configfile ../../NuGet.Config
dotnet build
dotnet pack -o nugets /p:version=%version%
dotnet nuget push nugets/%projectName%.%version%.nupkg -k abc123 -s https://nugetserver.i-counting.cn/

好了,以上就是我在nuget打包实现自动化部署的过程!

感谢阅读!

 
 

Jenkins~powershell+cmd发布nuget包包的更多相关文章

  1. Jenkins+Harbor+Docker发布

    使用Jenkins发布Docke 需要准备的,docker,jenkins,Harbor docker安装 安装依赖: # yum install -y yum-utils device-mapper ...

  2. 流程自动化RPA,Power Automate Desktop系列 - DotNet Core打包并发布Nuget Package

    一.背景 DotNet Core通常基于Nuget来实现包管理,如果你想要把自己的实现共享给其他人,通常我们需要把本地项目打包好,然后发布到对应的Nuget Server上,以便于其他人可以查找.安装 ...

  3. windows右键菜单自动打包发布nuget,没有CI/CD一样方便!

    构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法.没有CI/CD?来试试使用windows右键菜单吧 先看右键效果图 有时候我们可能没有CI/CD ...

  4. Jenkins 2.26 发布,可扩展的持续集成引擎

    Jenkins 2.26 发布了.Jenkins 主要用于持续.自动地构建/测试软件项目,如CruiseControl与DamageControl,监控一些定时执行的任务.更新内容: Allow Co ...

  5. [Xamarin.Android] 发布NuGet套件

    [Xamarin.Android] 发布NuGet套件 前言 在Xamarin中,可以将自己开发的项目包装成为NuGet套件发布至NuGet Server,来提供其他开发人员使用.本篇介绍如何封装并发 ...

  6. 利用 Azure Devops 创建和发布 Nuget 包

    利用 Azure Devops 创建和发布 Nuget 包 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任 ...

  7. Jenkins指定tag发布到k8s环境

    Jenkins指定tag发布到k8s环境 1.Jenkins配置一个Pipeline 工程 首先要安装插件:https://www.cnblogs.com/Dev0ps/p/9125232.html ...

  8. Jenkins+tomcat自动发布的热部署/重启及遇到的坑解决办法

    一.背景 公司的项目一直手动maven打包.上传服务器.关闭/开启tomcat,整个流程下来耗时耗力,虽然可以将所有流程通过shell脚本一次性解决,但如果可以通过idea的Jenkins插件一键自动 ...

  9. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

随机推荐

  1. ARM汇编程序中的伪指令

    转自http://blog.chinaunix.net/uid-13701930-id-336459.html 4.1 ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助 ...

  2. android屏幕适配,生成不同分辨率的dimen.xml文件

    一.在项目下新建moudle,选择Java Library 二.DimenUtils类 public class DimenUtils { //文件保存的路径 是在该项目下根路径下创建 比如该项目创建 ...

  3. thinkphp里数据嵌套循环

    做thinkphp时要用到循环里面嵌套循环的,并第二个循环是和外面的有关联的. thinkphp官网给出的文档为: <volist name="list" id=" ...

  4. JFrog Artifactory

    是一款二进制存储管理工具,用来管理构建构建工具(如:gradle.maven.nuget.docker等等)等所依赖的二进制仓库,以方便管理第三方库和发布目标版本库,从而提高软件开发效率. 为DevO ...

  5. PXE-cobbler 无人值守装机------续

    上篇学习了cobbler pxe 安装的大致流程以及采用默认分区方式安装centos7系统. 这里深入学习ks文件的具体参数 . ks.cfg文件又叫kickstart.cfg文件,主要被用于linu ...

  6. 牛客网提高组模拟赛第七场 T3 洞穴(附bitset介绍)

    就是DP. 我们可以很简单的想到要枚举中间点,进行边数的转移. 但是因为边长数据范围很大,所以我们考虑log的倍增. 状态设计为\(dp[i][j][k]\),为从节点\(i\)走\(2^k\)步能否 ...

  7. 【OCP-052】新版052最新题库及答案整理-第14题

    14.Which command is used to display files that no longer conform to the backup retention policy? A) ...

  8. kvm虚拟机静态迁移

    1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移. (1)虚拟主机各自使用本地存储存放虚拟机磁盘文件 本文实现基于本地磁盘存储虚拟机磁盘文件的迁移方式, ...

  9. ios 相机 自定义 相片的截取

    前段时间公司需要做一个身份识别的功能,而系统相机无法满足要求,so自己自定义了. 上代码: .h文件 #import <UIKit/UIKit.h> #import <AVFound ...

  10. C# - 图片操作和Base64处理

    旋转 (1)按角度旋转 /// <summary> /// 根据角度旋转图标 /// </summary> /// <param name="img" ...