Подключаемому модулю AWS CodeBuild не удается найти проект сборки кода с помощью Jenkins Pipeline

Итак, я пытался запустить свои сборки Jenkins в кодовой сборке, используя плагин AWS CodeBuild. Что касается работы вольным стилем, я заполнил детали, и все прошло нормально.

Однако, когда я попробовал это с конвейером 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


person theabrar    schedule 31.10.2019    source источник
comment
Можете ли вы подтвердить правильность региона и имени проекта в разделе «Конфигурация проекта». Кажется, плагин не видит проект в ответ.   -  person shariqmaws    schedule 01.11.2019
comment
Итак, название региона и проекта взято из файла Jenkins, а не из конфигурации проекта. мы можем подтвердить, что регион совпадает с моими блоками кода выше, проект действительно возвращается при запуске aws codebuild list-projects, что может быть подтверждено в «выводе консоли:» выше.   -  person theabrar    schedule 01.11.2019


Ответы (2)


поэтому вы выполняете роль предположения, используя 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"
}               
person metalisticpain    schedule 05.11.2019

Вот мой рабочий конфиг. Работает, когда Jenkins передает роль CodeBuildWithJenkinsServiceRole в Codebuild:

withAWS(region: 'ap-southeast-2', role: 'CodeBuildWithJenkinsServiceRole', 
 roleAccount: '123456789123', externalId: '123-2c1a-4367-aa09-123') {
 awsCodeBuild projectName: 'Project1',
 sourceControlType: 'project',
 credentialsType: 'keys',
 awsAccessKey: env.AWS_ACCESS_KEY_ID,
 awsSecretKey: env.AWS_SECRET_ACCESS_KEY,
 awsSessionToken: env.AWS_SESSION_TOKEN,
 region: 'ap-southeast-2',
 envVariables: '[ { GITHUB_OWNER, test }, { GITHUB_REPO, testrepo } ]',
 artifactTypeOverride: 'S3', 
 artifactLocationOverride: 'artifacts',
 overrideArtifactName: 'True',
 buildSpecFile: buildspec
 }
person Razr    schedule 25.08.2020