Closed riven-blade closed 3 months ago
Hello @riven-blade I've updated the package cache path to /tmp in this PR https://github.com/kcl-lang/kcl-lang.io/pull/390 you can refer it to update the plugin config.
Thanks for the feedback.
It doesn't seem to work, it's still very slow.
@riven-blade Your configuration seems to rely on external packages, but it doesn't seem to have placed the cache in the corresponding location. Have you changed the configuration of argocd kcl plugin and restarted argocd?
Yes, I changed the cache and pkg paths according to the issuer, and restarted argocd
Yes, I changed the cache and pkg paths according to the issuer, and restarted argocd
Can you set this environment variable locally, run this configuration repeatedly locally, and tell me the time cost and show the ls /tmp
output? Besides, what's the kcl version in the kcllang/kcllang-cmp-plugin
image?
I have some ideas. I distinguish the stored files and pkg according to the angocd application. Each application is assigned a stored file, so that it should be able to be installed.
export KCL_CACHE_PATH="/tmp/kcl_cache.${ARGOCD_APP_NAME}.${ARGOCD_APP_NAMESPACE}"
export KCL_PKG_PATH="/tmp/kcl_pkg.${ARGOCD_APP_NAME}.${ARGOCD_APP_NAMESPACE}"
create_dir_if_not_exists() {
local dir_path=$1
if [ ! -d "$dir_path" ]; then
mkdir -p "$dir_path"
fi
}
create_dir_if_not_exists "$KCL_CACHE_PATH"
create_dir_if_not_exists "$KCL_PKG_PATH"
Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = Manifest generation error (cached): plugin sidecar failed. error generating manifests in cmp: rpc error: code = Unknown desc = error generating manifests: /home/argocd/generate.sh
failed exit status 1: EvaluationError failed to access the file '/tmp/_cmp_server/f48cbbfa-b6fb-445a-b94a-332cec8bdb83/kcl-tiangong/./datastore/staging/application-config.yaml': No such file or directory (os error 2)
The yaml file is referenced in the code, and the cache server has an absolute path.
base: tiangong.App {
configMap = {"application-config.yaml": "./datastore/staging/application-config.yaml"}
secret = {"application-secret.yaml": "./datastore/staging/application-secret.yaml"}
}
Hello, you can use the file.modpath()
function to get the path. For example
import file
base: tiangong.App {
configMap = {"application-config.yaml": file.modpath() + "datastore/staging/application-config.yaml"}
secret = {"application-secret.yaml": file.modpath() + "datastore/staging/application-secret.yaml"}
}
@riven-blade KCL caches external dependency package code and compilation cache, both of which are recorded in relative paths. If you are a custom YAML configuration file, please ensure that it exists within kcl. mod and use a path relative to kcl. mod in the code to read it. For example.
import file
base: tiangong.App {
configMap = {"application-config.yaml": file.modpath() + "datastore/staging/application-config.yaml"}
secret = {"application-secret.yaml": file.modpath() + "datastore/staging/application-secret.yaml"}
}
Hello @riven-blade
The file.modpath
maybe cached cross different KCL modules, which is a bug. And I will fix it latter. Thanks for the feedback.
General Question
argo logs time="2024-06-19T05:40:54Z" level=info msg="finished streaming call with code OK" grpc.code=OK grpc.method=GenerateManifest grpc.service=plugin.ConfigManagementPluginService grpc.start_time="2024-06-19T05:40:41Z" grpc.time_ms=13448.232 span.kind=server system=grpc time="2024-06-19T05:41:36Z" level=info msg="finished streaming call with code OK" grpc.code=OK grpc.method=MatchRepository grpc.service=plugin.ConfigManagementPluginService grpc.start_time="2024-06-19T05:41:23Z" grpc.time_ms=13530.473 span.kind=server system=grpc time="2024-06-19T05:41:50Z" level=info msg="finished streaming call with code OK" grpc.code=OK grpc.method=GetParametersAnnouncement grpc.service=plugin.ConfigManagementPluginService grpc.start_time="2024-06-19T05:41:36Z" grpc.time_ms=13499.884 span.kind=server system=grpc
Plug-in configuration
images: kcllang/kcllang-cmp-plugin
shell