Azure Pipeline无法将.ispac部署至存储账户文件共享的问题
解决Azure Pipeline无法复制.ispac文件到Azure存储文件共享的问题
问题背景
使用Azure Pipeline时,无法将.ispac文件复制到Azure存储账户的文件共享中。目前通过Deploy SSIS任务可成功将.dtsx和.dtsConfig文件复制到文件共享,原因是bin目录下的Deployment文件夹存在SSISDeploymentManifest文件,内容如下:
<?xml version="1.0"?> <DTSDeploymentManifest GeneratedBy="" GeneratedFromProjectName="AzurePipelineDeploy" GeneratedDate="2024-01-31T09:41:37.7719773+01:00" AllowConfigurationChanges="true"> <Package>Package.dtsx</Package> <ConfigurationFile>Config.dtsConfig</ConfigurationFile> </DTSDeploymentManifest>
需同时复制bin目录下Development文件夹中的.ispac文件,但尝试的三种方法均失败:
- 复制Deploy SSIS任务并修改源路径后,报错:
PipelineDevOps\AzurePipelineDeploy\bin\Development\AzurePipelineDeploy.ispac isn't a valid file which ends with SSISDeploymentManifest - 将.ispac复制到Deployment文件夹,Pipeline忽略该文件,仅上传.dtsx和.dtsConfig文件
- 使用Azure CLI任务尝试时,报错:
The term 'PipelineDevOps/AzurePipelineDeploy/bin/Development' is not recognized as a name of a cmdlet, function, script file, or executable program.
解决方案
方法1:使用Azure文件复制任务(推荐)
绕过Deploy SSIS任务的限制,直接用Azure File Copy任务专门复制.ispac文件:
- 在Pipeline中添加
AzureFileCopy任务 - 关键配置参数:
- Source:填写.ispac文件的完整路径,例:
$(Build.SourcesDirectory)/AzurePipelineDeploy/bin/Development/AzurePipelineDeploy.ispac - Azure Subscription:选择关联目标存储账户的订阅
- Destination:选择
Azure File Share - Storage Account:输入目标存储账户名称
- File Share:输入目标文件共享名称
- Destination Folder:可选,填写文件共享内的目标子路径,留空则上传至根目录
- Source:填写.ispac文件的完整路径,例:
该任务专为Azure存储文件共享的文件传输设计,不受SSIS部署清单的约束。
方法2:修复Azure CLI任务的命令格式
之前的报错源于命令格式错误,正确使用az storage file upload命令上传文件,示例配置:
- 添加
AzureCLI任务 - 在Script框中输入正确命令(替换占位符为实际信息):
# 使用存储账户密钥 az storage file upload --account-name <你的存储账户名> --account-key <存储账户密钥> --share-name <文件共享名> --source "$(Build.SourcesDirectory)/AzurePipelineDeploy/bin/Development/AzurePipelineDeploy.ispac" --path <目标子路径>/AzurePipelineDeploy.ispac # 或更安全的SAS令牌方式 az storage file upload --account-name <你的存储账户名> --sas-token "<SAS令牌>" --share-name <文件共享名> --source "$(Build.SourcesDirectory)/AzurePipelineDeploy/bin/Development/AzurePipelineDeploy.ispac" --path <目标子路径>/AzurePipelineDeploy.ispac
注意:路径需用双引号包裹,避免空格或特殊字符导致解析失败。
方法3:扩展SSIS部署清单(不推荐)
若坚持使用Deploy SSIS任务,理论上可修改SSISDeploymentManifest文件添加.ispac引用,但由于.ispac属于项目部署包,并非清单支持的标准类型,大概率会被任务忽略,因此不建议采用此方法。
内容的提问来源于stack exchange,提问作者Azzurra137
相关产品推荐
相关产品推荐

