上传 CodeBuild 构件 *如果*它们存在
Upload CodeBuild artifacts *if* they exist
我有一个简单的 CodeBuild 规范,它定义了测试后要上传的工件 运行:
artifacts:
files:
- cypress/**/*.png
discard-paths: yes
仅当测试操作失败(捕获失败测试屏幕的屏幕截图)并成功上传到 S3 时才会生成这些工件。
在测试成功的情况下,不会生成 .png
个文件,CodeBuild 操作失败:
[Container] 2018/09/21 20:06:34 Expanding cypress/**/*.png
[Container] 2018/09/21 20:06:34 Phase complete: UPLOAD_ARTIFACTS Success: false
[Container] 2018/09/21 20:06:34 Phase context status code: CLIENT_ERROR Message: no matching artifact paths found
如果 buildspec 中存在文件,是否可以有条件地上传文件?
或者我可以使用 s3 cli
——在这种情况下,我需要一种方法来轻松访问存储桶名称和工件密钥。
为了解决这个问题,如果构建成功,我将创建一个与 glob 模式匹配的占位符文件:
post_build:
commands:
- if [ -z "$CODEBUILD_BUILD_SUCCEEDING" ]; then echo "Build failing, no need to create placeholder image"; else touch cypress/0.png; fi
artifacts:
files:
- cypress/**/*.png
discard-paths: yes
如果有人仍在寻找基于 tgk 答案的解决方案。
在我的 cas 中,我只想在 master ENV 中上传工件,所以除了 master 之外,我创建了一个占位符并上传到 TMP 文件夹中。
post_build:
commands:
#creating a fake file to workaround fail upload in non prod build
- |
if [ "$ENV" = "master" ]; then
export FOLDERNAME=myapp-$(date +%Y-%m-%d).$((BUILD_NUMBER))
else
touch myapp/0.tmp;
export FOLDERNAME="TMP"
fi
artifacts:
files:
- myapp/build/outputs/apk/prod/release/*.apk
- myapp/*.tmp
discard-paths: yes
name: $FOLDERNAME
我有一个简单的 CodeBuild 规范,它定义了测试后要上传的工件 运行:
artifacts:
files:
- cypress/**/*.png
discard-paths: yes
仅当测试操作失败(捕获失败测试屏幕的屏幕截图)并成功上传到 S3 时才会生成这些工件。
在测试成功的情况下,不会生成 .png
个文件,CodeBuild 操作失败:
[Container] 2018/09/21 20:06:34 Expanding cypress/**/*.png
[Container] 2018/09/21 20:06:34 Phase complete: UPLOAD_ARTIFACTS Success: false
[Container] 2018/09/21 20:06:34 Phase context status code: CLIENT_ERROR Message: no matching artifact paths found
如果 buildspec 中存在文件,是否可以有条件地上传文件?
或者我可以使用 s3 cli
——在这种情况下,我需要一种方法来轻松访问存储桶名称和工件密钥。
为了解决这个问题,如果构建成功,我将创建一个与 glob 模式匹配的占位符文件:
post_build:
commands:
- if [ -z "$CODEBUILD_BUILD_SUCCEEDING" ]; then echo "Build failing, no need to create placeholder image"; else touch cypress/0.png; fi
artifacts:
files:
- cypress/**/*.png
discard-paths: yes
如果有人仍在寻找基于 tgk 答案的解决方案。 在我的 cas 中,我只想在 master ENV 中上传工件,所以除了 master 之外,我创建了一个占位符并上传到 TMP 文件夹中。
post_build:
commands:
#creating a fake file to workaround fail upload in non prod build
- |
if [ "$ENV" = "master" ]; then
export FOLDERNAME=myapp-$(date +%Y-%m-%d).$((BUILD_NUMBER))
else
touch myapp/0.tmp;
export FOLDERNAME="TMP"
fi
artifacts:
files:
- myapp/build/outputs/apk/prod/release/*.apk
- myapp/*.tmp
discard-paths: yes
name: $FOLDERNAME