Плагину AWS CodeBuild не удается найти проект codebuild с помощью Jenkins Pipeline - PullRequest
0 голосов
/ 31 октября 2019

Итак, я пытался запустить свои сборки Jenkins на codebuild с помощью плагина AWS CodeBuild. Работая вольным стилем, я заполнял детали, и все работало нормально.

Однако, когда я попробовал его с конвейером Jenkins, он не смог найти проект codebuild.

Конвейер:

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

1 Ответ

0 голосов
/ 06 ноября 2019

так что вы выполняете предполагаемую роль, используя withAWS, а затем ваш указанный плагин codebuild будет использовать те же кредиты из хранилища учетных данных jenkins (которые вы использовали для выполнения предполагаемой роли). Вместо этого нам нужно использовать кредиты, которые мы получили, когда предполагаемая роль успешна.

Поэтому мы дадим команду codebuild использовать определенные ключи, которые с помощью 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"
}               
...