Jenkins发布ASP.NET CORE到Azure

首先需要获得Azure上App-service 的porfile. 登录portal 选到app,点击Get publish pofile

 

将得到一个 ****.PublishSettings,注意这个文件还不是最后真正用于发布的配置,还需要做如下操作,得到一个真正的发布配置,

在VS 中打开项目,点击发布,导入配置

在导入配置后,在这个目录下(项目web的路径\Properties\PublishProfiles),能获得真正的  pubxml 结尾的,配置文件

打开PublishSettings文件(注意不是pubxml )在里面找到userPWD,复制密码

测试这个文件是否能用,直接在CMD 里面,Password  里面填 刚才复制的那个密码

dotnet publish XX/XX.csproj /p:PublishProfile="XX.pubxml" /p:Password=XXX

正常情况就能发布到azure 了,

简单Jenkins 任务就使用一下代码就行了

dotnet restore
dotnet build --configuration "Release"
dotnet publish XXX/xxxx.csproj /p:PublishProfile="xxxxxx- Web Deploy.pubxml" /p:Password=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

有几个问题需要注意下:

1.使用 Jenkins 拉取代码以后,需要把pubxml 复制到项目web的路径\Properties\PublishProfiles 这路径下面,.net core 发布不能指定配置文件位置,我也不清楚为什么这么死板,所以需要提前把配置文件 放到服务器某个位置,让Jenkins 可以复制

bat("copy /y \"${filePath}\" \"${destination}\"");

  

2.根据微软Best practice,机密信息应该放到 KeyVault 里面,而KeyVault 的名称应该配置到app-servcie 的环境变量里面,不应该通过appsetting.json来管理这个配置,万一使用这个蠢做法,可以用下面这个来改不同环境的配置

def void UpdateKeyVaultName(String prefix) {
    String appsettingJsonPath = "${env.WORKSPACE}\\XXXXXX\\appsettings.json";
	echo appsettingJsonPath;
	String keyVaultName = "${prefix}-XXXX";
	echo keyVaultName;
	withEnv(["VAR_KeyVault=$keyVaultName","VAR_JsonPath=$appsettingJsonPath"])
	{
		powershell '''
		$jsonPath = $env:VAR_JsonPath
		$appsettings = Get-Content $jsonPath | ConvertFrom-Json
		$appsettings.KeyVault = $env:VAR_KeyVault
		$appsettings | ConvertTo-Json | set-content $jsonPath
		'''
	}	
}

  

 

转载于:https://www.cnblogs.com/MindSharing/p/11376175.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值