需求- 将拉取请求合并到分支时,我希望 CodeBuild 构建最新分支的提交,而不是拉取请求。我正在使用 CloudFormation,这是触发器片段:
Triggers:
Webhook: true
FilterGroups:
- - Type: EVENT
Pattern: PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED
- Type: BASE_REF
Pattern: !Sub "refs/heads/${GithubBranchName}$"
ExcludeMatchedPattern: false
Run Code Online (Sandbox Code Playgroud)
我尝试在同一个 CodeBuild 项目中添加 PULL_REQUEST_MERGED,但它构建了 PR。
我还尝试仅使用 PULL_REQUEST_MERGED 创建一个新的 CodeBuild 项目,并调整了 BASE_REF 和 HEAD_REF,但仍然没有运气,构建了拉取请求,而不是分支。
即使我使用的是 CloudFormation,请随时回复并参考 AWS 控制台的屏幕截图。
有可能吗?
git github amazon-web-services aws-cloudformation aws-codebuild
我有一个出现此错误的 CodeBuild 服务
UNAUTHORIZED_OPERATION_DELETE_NETWORK_INTERFACE:服务角色无权执行 ec2:DeleteNetworkInterface
我正在使用的服务角色具有 的必要权限ec2:DeleteNetworkInterface,但它被全局拒绝策略阻止 - 直到最近这一切都很好,因为之前 CodeBuild 一直使用DeleteNetworkInterface该--dry-run标志运行。它只是检查我是否拥有权限而不是实际执行它。这是期望的行为,因为它不应该删除任何网络接口。这已经工作了几个月了。
但是,现在它失败了,因为--dry-run不再设置标志。我真的很困惑为什么,因为管道尚未更新并且到目前为止运行良好。
我们还发现了工作命令序列与失败命令序列之间的这些差异:
** Working sequence: "DescribeVpcs" is presented
DescribeSubnets
DescribeVpcs
DescribeNetworkInterfaces
DeleteNetworkInterface (Client.DryRunOperation)
** Failed sequence: DescribeVpcs is missed
DescribeSubnets
DescribeNetworkInterfaces
DeleteNetworkInterface (Client.UnauthorizedOperation)
Run Code Online (Sandbox Code Playgroud)
我已检查我的服务角色是否具有上述所有权限。
有人能指出我可能的原因吗?我真的很感激。谢谢。
由于 AWS CodeBuild 似乎不支持 git LFS(大型文件系统),我尝试安装它:
version: 0.2
phases:
install:
commands:
- apt-get install -y bash curl
- curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
- apt-get install -y git-lfs
pre_build:
commands:
- echo Downloading LFS files
- git lfs pull
build:
commands:
- echo Build started on `date`
post_build:
commands:
- echo Build completed on `date`
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,我收到以下错误(重命名的存储库地址):
[Container] 2020/06/18 16:02:17 Running command git lfs pull
fatal: could not read Password for 'https://username@bitbucket.org': No such device or address
batch response: Git credentials …Run Code Online (Sandbox Code Playgroud) 我们正在构建我们的项目,我们必须使用 AWS CLI v2 来部署我们的项目。
我们使用的运行时版本是这个:
phases:
install:
runtime-versions:
nodejs: 12.x
Run Code Online (Sandbox Code Playgroud)
是否有我们可以使用的安装了 AWS CLI v2 的官方 AWS CodeBuild Nodejs 映像,或者我们是否需要创建自己的映像。对于上述运行时,是否有一种优雅的方式升级到 v2?
这看起来可行,但将来可能不太稳定:
# uninstall awscli version 1
- pip3 uninstall -y awscli
# install awscli version 2
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- unzip awscliv2.zip
- ./aws/install
Run Code Online (Sandbox Code Playgroud) 当在 AWS CodeComimit 中创建或更新拉取请求时,我使用 AWS Lambda 函数在 AWS CodeBuild 中启动构建,效果良好。
但是,我希望能够阻止将该拉取请求合并到存储库的主分支中,直到该 PR 的最新构建成功完成。
有谁知道是否有一种方法可以在AWS中完成?例如,合并按钮被禁用或不可用,比如没有获得足够的批准者?
我尝试同时在多个 lambda 中部署和更新代码,但是当推送到我的分支并部署 CodeBuild 时,出现以下错误:
调用UpdateFunctionCode操作时发生错误(InvalidParameterValueException):解压大小必须小于350198字节
[容器] 2021/04/24 00:09:31 命令未成功退出 aws lambda update-function-code --function-name my_lambda_03 --zip-file fileb://my_lambda_03.zip 退出状态 254 [容器] 2021 /04/24 00:09:31 阶段完成:POST_BUILD 状态:FAILED [Container] 2021/04/24 00:09:31 阶段上下文状态代码:COMMAND_EXECUTION_ERROR 消息:执行命令时出错:aws lambda update-function-code - -函数名称 my_lambda_03 --zip 文件 fileb://my_lambda_03.zip。原因:退出状态254
这是buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
python: 3.x
commands:
- echo "Installing dependencies..."
build:
commands:
- echo "Zipping all my functions....."
- cd my_lambda_01/
- zip -r9 ../my_lambda_01.zip .
- cd ..
- cd my_lambda_02/
- zip -r9 ../my_lambda_02.zip . …Run Code Online (Sandbox Code Playgroud) 我的 CDK 堆栈使用以下 CodeBuild 项目定义了 CodePipeline:
\nproject_build = codebuild.Project(self, "ProjectBuild",\n project_name = "Build",\n source = github_source,\n environment = codebuild.BuildEnvironment(\n build_image = codebuild.LinuxBuildImage.AMAZON_LINUX_2_2,\n privileged = True),\n environment_variables = { \xe2\x80\xa6 },\n build_spec = codebuild.BuildSpec.from_source_filename("cdk/buildspec/build.yml"))\nRun Code Online (Sandbox Code Playgroud)\n我正在使用 Amazon Linux 2 映像,并且想要在其上安装 PostgreSQL,因此我制作了这个简单的构建规范测试文件:
\nversion: 0.2\n\nphases: \n install:\n commands:\n - amazon-linux-extras install postgresql13\n build: \n commands:\n - echo "foo"\nRun Code Online (Sandbox Code Playgroud)\n这是作业引发的错误:
\n[Container] 2021/10/12 16:50:32 Entering phase INSTALL\n[Container] 2021/10/12 16:50:32 Running command amazon-linux-extras\n/root/.pyenv/versions/3.8.10/bin/python: No module named amazon_linux_extras\n\n[Container] 2021/10/12 16:50:34 Command did not …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-codepipeline aws-codebuild amazon-linux aws-cdk
这是 codebuild 使用的 buildspec.yml 文件:
version: 0.2
env:
shell: bash
phases:
install:
runtime-versions:
nodejs: 14
pre_build:
commands:
- echo Installing source NPM dependencies...
- npm install -g aws-cdk
- npm install -g typescript
- npm install
- npm run build
build:
commands:
- cdk --version
- cdk ls
- cdk synth
post_build:
Run Code Online (Sandbox Code Playgroud)
/usr/local/bin/cdk -> /usr/local/lib/node_modules/aws-cdk/bin/cdk npm 警告 notsup 不支持 aws-cdk@2.9.0 引擎:想要:{"node":">= 14.15.0"}(当前:{"node":"12.22.2","npm":"6.14.13"})npm WARN notsup 与您的node/npm 版本不兼容:aws-cdk@2.9.0
最后cdk ls失败
感谢任何帮助,因为我已经尝试删除 node-modules 和 package-lock.json。
我正在尝试在AWS服务器中安装Android环境.这里是buildspec.yml文件,其中包含用于安装Android SDK,NDK和gradlew以生成android构建的命令集.SDK和NDK for Android已成功下载并安装在AWS Ubuntu系统上.即使我可以看到成功构建的./gradlew构建日志.
buildspec.yml
version: 0.1
phases:
install:
commands:
- echo Nothing to do in the install phase...
- sudo apt-get -y install wget
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
- wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
- tar zxvf android-sdk_r24.4.1-linux.tgz
- mkdir -p android-sdk-linux/licenses
- cp android-sdk-license ./android-sdk-linux/licenses/
- echo sdk.dir='pwd'/android-sdk-linux > local.properties
- wget https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
- unzip android-ndk-r13b-linux-x86_64.zip
- export ANDROID_NDK_HOME=`pwd`/android-ndk-r13b
- export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_NDK_HOME}
- echo "sdk.dir=$ANDROID_HOME" > local.properties …Run Code Online (Sandbox Code Playgroud) aws-codebuild ×10
aws-cdk ×2
aws-lambda ×2
amazon-iam ×1
amazon-linux ×1
android ×1
buildspec ×1
devops ×1
docker-image ×1
git ×1
github ×1
jq ×1
node.js ×1