私はAWS CodeBuildのローカルキャッシュを動作させるように努めてきましたが、私の人生の中で、最も基本的なキャッシュすら動作させることができません。ここで説明するように、私の最終的な目標は、Gradleアーティファクトをキャッシュすることです。
しかし、それを機能させることができなかったため、ビルドをインクリメント/root/foo
するファイルcounter.txt
を含むディレクトリをキャッシュするという、さらに簡単なテストを試しました。私が期待するのは、後続のビルドを互いに数分以内に実行すると、ログに「2」、「3」などが表示されることです。しかし実際には、シンボリックリンクが確立されているにもかかわらず、次のビルドでは前のcounter.txt
ファイルが表示されないため、何かが非常に壊れているように見えます。
ローカルキャッシュが実際にCodeBuildで機能していることを誰かが確認できますか?現在機能が壊れているのではないかと思い始めています!それとも私はそれが何をすることになっているのか完全に誤解していますか?
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
java: corretto8
build:
commands:
- pwd
- ls -l /root/
- ls -l /root/foo/
- ./cache-test.sh
- ls -l /root/
- ls -l /root/foo/
cache:
paths:
- '/root/foo/*'
cache-test.sh:
#!/bin/bash
if [ -d "/root/foo" ]; then
C=$(cat /root/foo/count.txt)
C=$((C + 1))
echo "*********************************"
echo "*********************************"
echo "Incrementing counter to $C"
echo $C > /root/foo/count.txt
echo "*********************************"
echo "*********************************"
else
mkdir /root/foo
echo "*********************************"
echo "*********************************"
echo "File not found, starting count at 1"
echo "*********************************"
echo "*********************************"
echo 1 > /root/foo/count.txt
fi
CodeBuild出力:(すばやく連続して実行した場合でも同じ出力)
[Container] 2019/11/10 22:35:08 Waiting for agent ping
[Container] 2019/11/10 22:35:10 Waiting for DOWNLOAD_SOURCE
[Container] 2019/11/10 22:35:10 Phase is DOWNLOAD_SOURCE
[Container] 2019/11/10 22:35:10 CODEBUILD_SRC_DIR=/codebuild/output/src905503483/src
[Container] 2019/11/10 22:35:10 YAML location is /codebuild/output/src905503483/src/buildspec.yml
[Container] 2019/11/10 22:35:10 No commands found for phase name: INSTALL
[Container] 2019/11/10 22:35:10 Processing environment variables
[Container] 2019/11/10 22:35:10 Moving to directory /codebuild/output/src905503483/src
[Container] 2019/11/10 22:35:10 MkdirAll: /codebuild/local-cache/custom/de68c9f22ae028d4e4dfb0d11bbb481053d28b1373db0d6a56ebee0416bf13b2/root/foo
[Container] 2019/11/10 22:35:10 Symlinking: /root/foo => /codebuild/local-cache/custom/de68c9f22ae028d4e4dfb0d11bbb481053d28b1373db0d6a56ebee0416bf13b2/root/foo
[Container] 2019/11/10 22:35:10 Registering with agent
[Container] 2019/11/10 22:35:10 Phases found in YAML: 2
[Container] 2019/11/10 22:35:10 BUILD: 6 commands
[Container] 2019/11/10 22:35:10 INSTALL: 0 commands
[Container] 2019/11/10 22:35:10 Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
[Container] 2019/11/10 22:35:10 Phase context status code: Message:
[Container] 2019/11/10 22:35:11 Entering phase INSTALL
[Container] 2019/11/10 22:35:11 Running command echo "Installing corretto(OpenJDK) version 8 ..."
Installing corretto(OpenJDK) version 8 ...
[Container] 2019/11/10 22:35:11 Running command export JAVA_HOME="$JAVA_8_HOME"
[Container] 2019/11/10 22:35:11 Running command export JRE_HOME="$JRE_8_HOME"
[Container] 2019/11/10 22:35:11 Running command export JDK_HOME="$JDK_8_HOME"
[Container] 2019/11/10 22:35:11 Running command for tool_path in "$JAVA_8_HOME"/bin/* "$JRE_8_HOME"/bin/*;
do tool=`basename "$tool_path"`;
if [ $tool != 'java-rmi.cgi' ];
then
rm -f /usr/bin/$tool /var/lib/alternatives/$tool \
&& update-alternatives --install /usr/bin/$tool $tool $tool_path 20000;
fi;
done
[Container] 2019/11/10 22:35:11 Phase complete: INSTALL State: SUCCEEDED
[Container] 2019/11/10 22:35:11 Phase context status code: Message:
[Container] 2019/11/10 22:35:11 Entering phase PRE_BUILD
[Container] 2019/11/10 22:35:11 Phase complete: PRE_BUILD State: SUCCEEDED
[Container] 2019/11/10 22:35:11 Phase context status code: Message:
[Container] 2019/11/10 22:35:11 Entering phase BUILD
[Container] 2019/11/10 22:35:11 Running command pwd
/codebuild/output/src905503483/src
[Container] 2019/11/10 22:35:11 Running command ls -l /root/
total 4
lrwxrwxrwx 1 root root 103 Nov 10 22:35 foo -> /codebuild/local-cache/custom/de68c9f22ae028d4e4dfb0d11bbb481053d28b1373db0d6a56ebee0416bf13b2/root/foo
[Container] 2019/11/10 22:35:11 Running command ls -l /root/foo/
total 0
[Container] 2019/11/10 22:35:11 Running command ./cache-test.sh
cat: /root/foo/count.txt: No such file or directory
*********************************
*********************************
Incrementing counter to 1
*********************************
*********************************
[Container] 2019/11/10 22:35:11 Running command ls -l /root/
total 4
lrwxrwxrwx 1 root root 103 Nov 10 22:35 foo -> /codebuild/local-cache/custom/de68c9f22ae028d4e4dfb0d11bbb481053d28b1373db0d6a56ebee0416bf13b2/root/foo
[Container] 2019/11/10 22:35:11 Running command ls -l /root/foo/
total 4
-rw-r--r-- 1 root root 2 Nov 10 22:35 count.txt
[Container] 2019/11/10 22:35:11 Phase complete: BUILD State: SUCCEEDED
[Container] 2019/11/10 22:35:11 Phase context status code: Message:
[Container] 2019/11/10 22:35:11 Entering phase POST_BUILD
[Container] 2019/11/10 22:35:11 Phase complete: POST_BUILD State: SUCCEEDED
[Container] 2019/11/10 22:35:11 Phase context status code: Message:
CodeBuildプロジェクトJSON:
{
"projects": [
{
"name": "test-project",
"arn": "arn:aws:codebuild:us-east-2:xxx:project/xxx",
"source": {
"type": "CODEPIPELINE",
"insecureSsl": false
},
"secondarySourceVersions": [],
"artifacts": {
"type": "CODEPIPELINE",
"name": "test-project",
"packaging": "NONE",
"encryptionDisabled": false
},
"secondaryArtifacts": [],
"cache": {
"type": "LOCAL",
"modes": [
"LOCAL_SOURCE_CACHE",
"LOCAL_CUSTOM_CACHE"
]
},
"environment": {
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/amazonlinux2-x86_64-standard:1.0",
"computeType": "BUILD_GENERAL1_SMALL",
"environmentVariables": [],
"privilegedMode": false,
"imagePullCredentialsType": "CODEBUILD"
},
"serviceRole": "arn:aws:iam::xxx:role/service-role/xxx",
"timeoutInMinutes": 60,
"queuedTimeoutInMinutes": 480,
"encryptionKey": "arn:aws:kms:us-east-2:xxx:alias/aws/s3",
"tags": [],
"created": 1573364156.631,
"lastModified": 1573423155.674,
"badge": {
"badgeEnabled": false
},
"logsConfig": {
"cloudWatchLogs": {
"status": "ENABLED",
"groupName": "xxx",
"streamName": "xxx"
},
"s3Logs": {
"status": "DISABLED",
"encryptionDisabled": false
}
}
}
],
"projectsNotFound": []
}