如何在Jenkins中调用AWSCodeDeployPublisher的getVersionFileName()方法?
在Jenkins Pipeline中获取AWS CodeDeploy上传的S3文件URI
要调用AWSCodeDeployPublisher插件的getVersionFileName()方法获取上传的ZIP文件名,进而拼接出S3 URI,核心是捕获插件执行后的返回对象,再调用对应方法。具体实现如下:
1. 捕获插件执行结果对象
在Pipeline中执行awsCodeDeployPublisher步骤时,将其赋值给一个变量,该变量即为插件返回的结果对象,包含插件提供的各类方法:
def codeDeployResult = awsCodeDeployPublisher( applicationName: '你的应用名称', deploymentGroupName: '你的部署组名称', region: 'AWS区域(如us-east-1)', // 保留你原有配置中的其他必要参数 )
2. 调用getVersionFileName()获取文件名
通过结果对象调用方法获取上传的临时ZIP文件名:
def versionZipName = codeDeployResult.getVersionFileName()
3. 拼接完整S3 URI
结合你的S3存储桶名称,拼接出完整的S3资源URI:
def s3BucketName = '你的S3存储桶名称' def s3Uri = "s3://${s3BucketName}/${versionZipName}" echo "上传的文件S3 URI: ${s3Uri}"
声明式Pipeline中的适配
如果使用声明式Pipeline,需要将上述逻辑包裹在script块中(声明式不支持直接调用对象方法),示例:
pipeline { agent any stages { stage('CodeDeploy部署') { steps { script { def codeDeployResult = awsCodeDeployPublisher( applicationName: 'your-app', deploymentGroupName: 'your-deployment-group', region: 'us-east-1' ) def versionZipName = codeDeployResult.getVersionFileName() def s3Uri = "s3://your-bucket/${versionZipName}" echo "S3 URI: ${s3Uri}" // 可选:生成预签名URL(需确保Jenkins节点已配置AWS凭证) def presignedUrl = sh( script: "aws s3 presign ${s3Uri} --expires-in 3600", returnStdout: true ).trim() echo "预签名URL: ${presignedUrl}" } } } } }
注意事项
- 确保使用的AWSCodeDeployPublisher插件版本支持返回结果对象,旧版本可能无此特性,需升级插件至最新稳定版。
- 若插件配置中已指定存储桶,部分版本的插件可能提供
getBucket()方法直接获取桶名,可替代手动定义桶名:def s3BucketName = codeDeployResult.getBucket()
内容的提问来源于stack exchange,提问作者Vlad Stratulat
相关产品推荐
相关产品推荐

