因此,我试图使用AWS CodeBuild插件在codebuild上运行我的Jenkins构建。做自由泳的工作时,我填写了细节,效果很好。
但是,当我在Jenkins管道上尝试它时,它找不到代码构建项目。
管道:
steps {
withAWS(credentials: "AWS_ID", region: "$AWS_DEFAULT_REGION") {
sh 'aws codebuild list-projects'
awsCodeBuild credentialsId: "CodeBuild_AWS_ID",
credentialsType: "jenkins",
projectName: 'newCodeBuildProject',
region: "us-west-2",
sourceControlType: "project",
sourceLocationOverride: "https://github.com/me/myrepo",
sourceTypeOverride: "GITHUB",
sourceVersion: "mybranch"
}
控制台输出:
12:38:50 Constructing AWS CredentialsSetting AWS region eu-west-2
[Pipeline] {
[Pipeline] sh
12:38:51 + aws codebuild list-projects
12:38:53 {
12:38:53 "projects": [
12:38:53 "newCodeBuildProject"
12:38:53 ]
12:38:53 }
[Pipeline] awsCodeBuild
12:38:53 [AWS CodeBuild Plugin] Using given AWS access and secret key for authorization (provided from Jenkins credentials CodeBuild_AWS_ID)
12:38:54 [AWS CodeBuild Plugin] Project newCodeBuildProject does not exist.
并且它在控制台中引发了以下错误:
CodeBuildException
at CodeBuildStep$CodeBuildExecution.run(CodeBuildStep.java:624)
at CodeBuildStep$CodeBuildExecution.run(CodeBuildStep.java:578)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
at hudson.security.ACL.impersonate(ACL.java:290)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
[去年有一个类似的问题,但它已经解决。 https://github.com/awslabs/aws-codebuild-jenkins-plugin/issues/66
所以您正在使用withAWS
做一个承担角色,但随后您指定的代码构建插件要使用jenkins身份凭证存储区中相同的凭据(您曾经执行过承担角色)。我们需要使用在承担角色成功时获得的信誉。
因此,我们将指导代码构建使用特定的键,而这些键由AWS提供为env.VARS
steps {
withAWS(credentials: "AWS_ID", region: "$AWS_DEFAULT_REGION") {
sh 'aws codebuild list-projects'
awsCodeBuild credentialsType: 'keys',
awsAccessKey: env.AWS_ACCESS_KEY_ID,
awsSecretKey: env.AWS_SECRET_ACCESS_KEY,
projectName: 'newCodeBuildProject',
region: "us-west-2",
sourceControlType: "project",
sourceLocationOverride: "https://github.com/me/myrepo",
sourceTypeOverride: "GITHUB",
sourceVersion: "mybranch"
}