首页 > 其他分享 >Azure Pipelines 监听文件改动时自动发布 .Net Core或者.Net Framework package到artifacts

Azure Pipelines 监听文件改动时自动发布 .Net Core或者.Net Framework package到artifacts

时间:2024-12-06 16:45:12浏览次数:7  
标签:inputs task Pipelines artifacts CommonLib guorj command build Net

示例项目:https://dev.azure.com/guorj/_git/PackDemo

因为一些需求,在代码有改动以后需要更新响应的package,以供其他项目来使用,但是每次手动打包比较麻烦,就想着给自动化了,可怜自动化出来这么久都没有用过。

代码托管在微软的Azure上,所以使用的是Azure Pipelines功能。

懒得细写了,包含了.net framework 和 .net core的自动编译打包功能,监听了csrpoj文件或者assembly.cs文件,因为不想每次提交都会发版本,只有这两个文件有改动才触发pipeline,最主要的想打包时要修改版本号。

该行语句指的是Self Host的Agent Pool,也可以使用微软提供的,个人账户默认每个月有1800分钟的编译时间。

pool:
  name: "vsts-agent-guorj-pc"

编译 .net framework 的 pipeline 脚本
https://dev.azure.com/guorj/_git/PackDemo?path=/Azure-Pipelines/azure-pipelines-DotNetLib.yml


trigger:
  branches:
    include:
      - main
  paths:
    include:
      - DotNetLib/Properties/AssemblyInfo.cs #DotNetLib/**
      - Azure-Pipelines/azure-pipelines-DotNetLib.yml

pool:
  name: "vsts-agent-guorj-pc"

variables:
  solutionPath: 'CommonLib.sln'
  projectPath: 'DotNetLib/DotNetLib.csproj'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1
  displayName: 'Use NuGet >=6.12.x'
  inputs:
    versionSpec: '>=6.12.x'

- task: NuGetCommand@2
  displayName: 'nuget restore'
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    #vstsFeed: 'PackDemo/PackDemoFeed'
    #includeNuGetOrg: false
    restoreSolution: $(projectPath)
    displayName: 'Restore NuGet Packages'

- task: NuGetCommand@2
  displayName: 'nuget pack'
  inputs:
    command: 'custom'
    arguments: 'pack -Build -Properties Configuration=$(buildConfiguration)  -OutputDirectory $(Build.ArtifactStagingDirectory) $(projectPath)'

- task: NuGetCommand@2
  displayName: 'nuget push'
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: 'PackDemo/PackDemoFeed'
    versioningScheme: 'off'
    allowPackageConflicts: true # Allow duplicates to be skipped

编译 .net core 项目的 pipeline 脚本
https://dev.azure.com/guorj/_git/PackDemo?path=/Azure-Pipelines/azure-pipelines-CommonLib.yml

trigger:
  branches:
    include:
      - main
  paths:
    include:
      - CommonLib/CommonLib.csproj # CommonLib/**

# # the build will run on a Microsoft hosted agent, using the lastest Windows VM Image
pool:
  name: "vsts-agent-guorj-pc"
#  vmImage: 'vsts-agent-guorj-pc'

# these variables are available throughout the build file
# just the build configuration is defined, in this case we are building Release packages
variables:
  buildConfiguration: 'Release'

#The build has 3 seperate tasks run under 1 step
steps:

- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    arguments: '--configuration $(buildConfiguration)'
    projects: 'CommonLib/CommonLib.csproj'

# The first task is the dotnet command build, pointing to our csproj file
- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    command: 'build'
    arguments: '--configuration $(buildConfiguration)'
    projects: 'CommonLib/CommonLib.csproj'

# The second task is dotnet pack command again pointing to the csproj file
# The nobuild means the project will not be compiled before running pack, because its already built in above step
- task: DotNetCoreCLI@2
  displayName: "dotnet pack"
  inputs:
    command: 'pack'
    arguments: '--configuration $(buildConfiguration)'
    packagesToPack: 'CommonLib/CommonLib.csproj'
    nobuild: true
    versioningScheme: 'off' # Required when command = pack. Allowed values: off, byPrereleaseNumber (Use the date and time), byEnvVar (Use an environment variable), byBuildNumber (Use the build number). Default value: off.

- task: NuGetCommand@2
  inputs: 
    command: 'push' 
    packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg' 
    nuGetFeedType: 'internal' 
    publishVstsFeed: 'PackDemo/PackDemoFeed'

标签:inputs,task,Pipelines,artifacts,CommonLib,guorj,command,build,Net
From: https://www.cnblogs.com/grj1046/p/18591081

相关文章

  • .netcore-实现列表数据导出PDF功能
    安装Nuget包QuestPDF核心代码publicstaticstringExportPdf(List<LogLoginListDto>list){TextStyletitleStyle=TextStyle.Default.FontSize(36).SemiBold().FontColor(Colors.Blue.Medium);stringfileName=string.Concat("LogLogin-",DateT......
  • RFC 3161 是由 IETF(Internet Engineering Task Force)发布的一项标准,定义了数字时间戳
    RFC3161标准:时间戳协议概述RFC3161是由IETF(InternetEngineeringTaskForce)发布的一项标准,定义了数字时间戳协议(DigitalTimestampingProtocol)。其主要目的是为数字签名提供独立的时间戳服务,确保签名在特定时间内有效,即使签名的证书过期或撤销。该协议的核心功能是为文件......
  • Java和.Net互相使用RSA加密时的问题和处理方法
    前言我们产品是使用JAVA语言开发的,有个供第三方获取Token的接口,过程大概就是第三方先调一个注册接口,获取一个RSA公钥,然后用通过公钥加密后的一些认证信息调用获取Token的接口,如果信息无误,则发放Token。前段时间就遇到了对方是使用.Net进行开发的系统,在第一步获取公钥时没用问题,......
  • YOLOv8车牌识别系统 深度学习 LPRNet算法 pytorch 大数据 毕业设计(源码)✅
    YOLOv8车牌识别系统深度学习LPRNet算法pytorch大数据毕业设计(源码)✅1、项目介绍技术栈:Python3.8YOLOv8深度学习LPRNet算法pytorch2、项目界面(1)上传图片进行车牌识别(2)上传图片进行车牌识别2(3)多车牌号码进行车牌识别(4)上传视频进行车牌识别实时检测(5)连接......
  • Profinet IO从站数据 转 opc ua项目案例
    目录1案例说明2VFBOX网关工作原理3准备工作4使用PRONETA软件获取PROFINETIO从站的配置信息5设置网关采集PROFINETIO从站设备数据6启动OPCUA协议转发采集的数据7选择槽号和数据地址8选择子槽号9案例总结1案例说明设置网关采集ProfinetIO从站......
  • 第64篇 Kubernetes的简单介绍
    1.什么是KubernetesKubernetes是⼀个开源的容器编排引擎,可以⽤来管理容器化的应⽤,包括容器的⾃动化的部署、扩容、缩容、升级、回滚等等,它是Google在2014年开源的⼀个项⽬,它的前身是Google内部的Borg系统。2.为什么要使用Kubernetes在Kubernetes出现之前,我们⼀般都是使⽤Docker......
  • YOLOv8车牌识别系统 深度学习 LPRNet算法 pytorch 大数据 毕业设计(源码)✅
    YOLOv8车牌识别系统深度学习LPRNet算法pytorch大数据毕业设计(源码)✅1、项目介绍技术栈:Python3.8YOLOv8深度学习LPRNet算法pytorch2、项目界面(1)上传图片进行车牌识别(2)上传图片进行车牌识别2(3)多车牌号码进行车牌识别(4)上传视频进行车牌识别实时检测(5)连接......
  • JAVA实现客户端通过服务端对话(NET)
    通过使用java.net实现客户端向服务端发送信息内容以及发送目标地址ID,服务端通过寻找对应ID转发给目标客户端。代码仅供参考,其中有很多地方仍需要优化,比如:ID无法注册、没有添加密码、代码优化不够等问题java版本:17服务端代码:importjava.io.IOException;importjava.io.Pri......
  • Linux下部署.Net 应用程序和Web应用程序
    发布应用:选择对应的平台版本进行保存发布。上传应用程序,进入发布的文件,压缩文件,在地址栏运行命令行(cmd),使用scp上传文件到对应的服务器。scppublish.ziproot@xxx.xxx.xxx.xxx:/var/wwwroot解压缩文件unzippublish.zipsudoyuminstallzipunzip#安装zip解压工具......
  • c#和 .net 类似于 java 和spring吗?
    是的,C#和.NET确实与Java和Spring有一些类似之处,它们在各自的生态系统中提供类似的功能和架构支持。以下是它们的对应关系和差异点:C#和Java的比较语言层面C#是一种由微软开发的现代化编程语言,语法风格与Java非常相似(两者都受C/C++的影响)。Java是一种跨......