aws-codebuild - AWS 代码构建 - 缓存的 DOWNLOAD_SOURCE 耗时太长
问题描述
我正在尝试提高我在 CodeBuild 上的一个项目的构建速度。该项目使用 Github 源提供程序并启用了本地类型的源缓存。
我第一次运行构建需要 103 秒。由于源缓存,我在第一个完成后立即再次运行它,预计它会在几秒钟内运行,但花了 60 秒。
我在这里缺少什么?缓存不工作吗?如果它有效,为什么第二次运行需要那么长时间?
谢谢
项目详情:
{
"projectsNotFound": [],
"projects": [
{
"environment": {
"computeType": "BUILD_GENERAL1_LARGE",
"imagePullCredentialsType": "SERVICE_ROLE",
"privilegedMode": true,
"image": "111669150171.dkr.ecr.us-east-1.amazonaws.com/***********/ep-build-env:latest",
"environmentVariables": [
{
"type": "PLAINTEXT",
"name": "NEXUS_URI",
"value": "http://***************"
},
{
"type": "PLAINTEXT",
"name": "REGISTRY",
"value": "111669150171.dkr.ecr.us-east-1.amazonaws.com/*********"
}
],
"type": "LINUX_CONTAINER"
},
"timeoutInMinutes": 60,
"name": "StorefrontApi",
"serviceRole": "arn:aws:iam::111669150171:role/CodeBuild-ECRReadOnly",
"tags": [],
"artifacts": {
"type": "NO_ARTIFACTS"
},
"lastModified": 1571227097.581,
"cache": {
"type": "LOCAL",
"modes": [
"LOCAL_DOCKER_LAYER_CACHE",
"LOCAL_SOURCE_CACHE",
"LOCAL_CUSTOM_CACHE"
]
},
"vpcConfig": {
"subnets": [
"subnet-fd7f958b"
],
"vpcId": "vpc-71e3f414",
"securityGroupIds": [
"sg-19b65e6c",
"sg-9e28e9f9"
]
},
"created": 1571082681.262,
"sourceVersion": "refs/heads/ep-mysql",
"source": {
"buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - env\n - cd extensions\n - mvn --settings $CODEBUILD_SRC_DIR_DEVOPS_WINE/pipelines/storefront/build-war/settings.xml --projects storefront/ext-storefront-webapp -am -DskipAllTests clean install\n\nartifacts:\n secondary-artifacts:\n storefront-war:\n base-directory: $CODEBUILD_SRC_DIR/extensions/storefront/ext-storefront-webapp/target\n files:\n - \"*.war\"\n\ncache:\n paths:\n - '/root/.m2/**/*'\n - '/root/.npm/**/*'",
"insecureSsl": false,
"gitSubmodulesConfig": {
"fetchSubmodules": false
},
"location": "https://github.com/*****************.git",
"gitCloneDepth": 1,
"type": "GITHUB",
"reportBuildStatus": false
},
"badge": {
"badgeEnabled": false
},
"queuedTimeoutInMinutes": 480,
"secondaryArtifacts": [],
"logsConfig": {
"s3Logs": {
"status": "DISABLED",
"encryptionDisabled": false
},
"cloudWatchLogs": {
"status": "ENABLED"
}
},
"secondarySources": [
{
"insecureSsl": false,
"gitSubmodulesConfig": {
"fetchSubmodules": false
},
"location": "https://github.com/*****************.git",
"sourceIdentifier": "DEVOPS_WINE",
"gitCloneDepth": 1,
"type": "GITHUB",
"reportBuildStatus": false
}
],
"encryptionKey": "arn:aws:kms:us-east-1:111669150171:alias/aws/s3",
"arn": "arn:aws:codebuild:us-east-1:111669150171:project/StorefrontApi",
"secondarySourceVersions": [
{
"sourceVersion": "refs/heads/staging",
"sourceIdentifier": "DEVOPS_WINE"
}
]
}
]
}
解决方案
显然,在撰写本文时,CodeBuild 并未使用本机git
客户端从 GitHub 获取源代码。我了解 CodeBuild 内部团队有一个内部功能请求,要求从他们使用的任何东西转移到本机git
客户端以提高性能。
您的存储库是否通过更改在其历史记录中有大量大文件?您可以将此答案用于运行命令以分析您的存储库。
如果您的历史记录中有很多大文件并且可以删除它们,那么您可以使用BFG Repo Cleaner之类的工具来重写历史记录。那应该加快这个DOWNLOAD_SOURCE
阶段。
此外,如果您有 AWS 的专门支持计划,您应该联系您的 TAM 以支持功能请求,以便迁移到本地git
以进行 GitHub 源下载。
推荐阅读
- elasticsearch - Elasticsearch 中的边缘 n-gram 建议和“开始于”关键字
- php - 在 URL PHP 中传递 ID
- python - AWS IoT:策略中的资源导致 AWS IoT PublishIn 状态:AUTHORIZATION_ERROR
- c# - 向文本框添加边框时的重载 [CS0121]
- ocr - 为什么 pytesseract 无法识别此图像?
- android-studio - E/AccessibilityBridge: VirtualView node must not be the root node. (Flutter)
- c# - 带有 UWP 项目的 Dotfuscator(不是 Xamarin UWP)
- asp.net - 如何在哨兵上记录未处理的异常?
- ios - SwiftUI Core Data 无法在 WatchOS Target 上获取
- c# - unity 刚体在 boxcollider2d 边缘被推开