我可以从jenkins触发我的AWS管道,但我不想创建buildspec.yaml,而是使用已经适用于jenkins的管道脚本。
答案 0 :(得分:1)
为了使用Codebuild,您需要为Codebuild项目提供buildspec.yaml文件以及源代码,或将命令合并到实际项目中。
但是,我认为您有兴趣在Jenkins管道中创建buildspec.yaml文件。
下面是Jenkinsfile中一个阶段的片段,它创建一个构建规范文件,用于构建docker镜像,然后将工作区的内容发送到codebuild项目。这使用Codebuild的插件。
stage('Build - Non Prod'){
String nonProductionBuildSpec = """
version: 0.1
phases:
pre_build:
commands:
- \$(aws ecr get-login --registry-ids <number> --region us-east-1)
build:
commands:
- docker build -t ces-sample-docker .
- docker tag $NAME:$TAG <account-number>.dkr.ecr.us-east-1.amazonaws.com/$NAME:$TAG
post_build:
commands:
- docker push <account-number>.dkr.ecr.us-east-1.amazonaws.com/$NAME:$TAG
""".replace("\t"," ")
writeFile file: 'buildspec.yml', text: nonProductionBuildSpec
//Send checked out files to AWS
awsCodeBuild projectName: "<codebuild-projectname>",region: "us-east-1", sourceControlType: "jenkins"
}
我希望这会让你知道什么是可能的。
祝你好运! 帕特里克答案 1 :(得分:0)
您需要为希望AWS CodeBuild运行的命令编写一个buildspec。如果你使用Jenkins的CodeBuild插件,可以将它添加到Jenkins管道中,并使用CodeBuild作为Jenkins构建从属来执行buildspec中的命令。
在此处查看更多详情:https://docs.aws.amazon.com/codebuild/latest/userguide/jenkins-plugin.html
答案 2 :(得分:0)
@hynespm-出色的榜样伴侣。
这是另一个基于您的人,但是具有stripIndent()和“ withAWS”来切换角色:
#!/usr/bin/env groovy
def cbResult = null
pipeline {
.
.
.
script {
echo ("app_version TestwithAWS value : " + "${app_version}")
String buildspec = """\
version: 0.2
env:
parameter-store:
TOKEN: /some/token
phases:
pre_build:
commands:
- echo "List files...."
- ls -l
- echo "TOKEN is ':' \${TOKEN}"
build:
commands:
- echo "build':' Do something here..."
- echo "\${CODEBUILD_SRC_DIR}"
- ls -l "\${CODEBUILD_SRC_DIR}"
post_build:
commands:
- pwd
- echo "postbuild':' Done..."
""".stripIndent()
withAWS(region: 'ap-southeast-2', role: 'CodeBuildWithJenkinsRole', roleAccount: '123456789123', externalId: '123456-2c1a-4367-aa09-7654321') {
sh 'aws ssm get-parameter --name "/some/token"'
try {
cbResult = awsCodeBuild projectName: 'project-lambda',
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, special }, { GITHUB_REPO, project-lambda } ]',
artifactTypeOverride: 'S3',
artifactLocationOverride: 'special-artifacts',
overrideArtifactName: 'True',
buildSpecFile: buildspec
} catch (Exception cbEx) {
cbResult = cbEx.getCodeBuildResult()
}
}
} //script
.
.
.
}