Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installing KubeSphere Devops System fails #6058

Open
roadfox opened this issue Mar 6, 2024 · 6 comments
Open

Installing KubeSphere Devops System fails #6058

roadfox opened this issue Mar 6, 2024 · 6 comments

Comments

@roadfox
Copy link

roadfox commented Mar 6, 2024

What's your question
Enabling the Devops system fails

Environment: OS & Hardware Information
Kubesphere 3.4.1

Error logs or message (Attach logs or screenshot)

"playbook": "/kubesphere/playbooks/devops.yaml",
    "playbook_uuid": "91b9a80f-980b-4522-9a0a-0e1ac2153b92",
    "remote_addr": "127.0.0.1",
    "res": {
      "changed": false,
      "msg": "All items completed",
      "results": [
        {
          "_ansible_item_label": {
            "file": "ks-devops-values.yaml",
            "path": "ks-devops"
          },
          "_ansible_no_log": false,
          "ansible_loop_var": "item",
          "changed": false,
          "failed": true,
          "item": {
            "file": "ks-devops-values.yaml",
            "path": "ks-devops"
          },
          "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'jenkinsMemoryReq'"
        },

Installer Version

Enabled after Install, according to: https://kubesphere.io/docs/v3.4/pluggable-components/devops/

I think the documentation should also mention the needed config variables and the ansible script should have proper defaults
As this error pbroke access to the Kubesphere UI

@pixiake
Copy link
Contributor

pixiake commented Mar 6, 2024

https://github.com/kubesphere/ks-installer/blob/v3.4.1/deploy/cluster-configuration.yaml

@roadfox It seems that jenkinsMemoryReq is missing in the config. You can refer to this configuration file .

@roadfox
Copy link
Author

roadfox commented Mar 6, 2024

@pixiake thanks for that link.

@roadfox
Copy link
Author

roadfox commented Mar 6, 2024

after cleaning up everithing with:

helm uninstall -n kubesphere-devops-system devops

kubectl patch -n kubesphere-system cc ks-installer --type=json -p='[{"op": "remove", "path": "/status/devops"}]'

kubectl patch -n kubesphere-system cc ks-installer --type=json -p='[{"op": "replace", "path": "/spec/devops/enabled", "value": false}]'

and

# Remove all resources related with DevOps

for devops_crd in $(kubectl get crd -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep "devops.kubesphere.io"); do

    for ns in $(kubectl get ns -ojsonpath='{.items..metadata.name}'); do

        for devops_res in $(kubectl get $devops_crd -n $ns -oname); do

            kubectl patch $devops_res -n $ns -p '{"metadata":{"finalizers":[]}}' --type=merge

        done

    done

done

# Remove all DevOps CRDs

kubectl get crd -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep "devops.kubesphere.io" | xargs -I crd_name kubectl delete crd crd_name

# Remove DevOps namespace

kubectl delete namespace kubesphere-devops-system

and enabling again i get now the following error message:

Task 'devops' failed:
******************************************************************************************************************************************************
{
  "counter": 144,
  "created": "2024-03-06T12:17:26.562519",
  "end_line": 174,
  "event": "runner_on_failed",
  "event_data": {
    "duration": 275.250047,
    "end": "2024-03-06T12:17:26.562252",
    "event_loop": null,
    "host": "localhost",
    "ignore_errors": null,
    "play": "localhost",
    "play_pattern": "localhost",
    "play_uuid": "7a6b163c-8d17-2b55-529a-000000000005",
    "playbook": "/kubesphere/playbooks/devops.yaml",
    "playbook_uuid": "ad344816-1152-4db0-922c-9552196b172e",
    "remote_addr": "127.0.0.1",
    "res": {
      "_ansible_no_log": false,
      "attempts": 3,
      "changed": true,
      "cmd": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\n\nks_devops_chart_version=0.2.2\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\n\n# Create or update CRDs manually\ntar xzvf $ks_devops_chart -C $charts_folder\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\n\n# Waiting for CRD to complete the upgrade\nsleep 10\n\n# Import the templates seperately due the potential webhook issues\nrm -rf s2i-templates\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\templates.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\n\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\n\n/usr/local/bin/kubectl apply -f s2i-templates\\templates.yaml\n",
      "delta": "0:00:18.800408",
      "end": "2024-03-06 12:17:26.512795",
      "invocation": {
        "module_args": {
          "_raw_params": "# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\n\nks_devops_chart_version=0.2.2\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\n\n# Create or update CRDs manually\ntar xzvf $ks_devops_chart -C $charts_folder\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\n\n# Waiting for CRD to complete the upgrade\nsleep 10\n\n# Import the templates seperately due the potential webhook issues\nrm -rf s2i-templates\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\templates.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\n\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\n\n/usr/local/bin/kubectl apply -f s2i-templates\\templates.yaml\n",
          "_uses_shell": true,
          "argv": null,
          "chdir": null,
          "creates": null,
          "executable": "/bin/bash",
          "removes": null,
          "stdin": null,
          "stdin_add_newline": true,
          "strip_empty_ends": true,
          "warn": true
        }
      },
      "msg": "non-zero return code",
      "rc": 1,
      "start": "2024-03-06 12:17:07.712387",
      "stderr": "Error: UPGRADE FAILED: cannot patch \"binary\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:25Z is after 2024-02-14T06:08:48Z\nWarning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\nWarning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\nWarning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\nWarning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\nWarning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\nError from server (InternalError): error when applying patch:\n{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u6784\u5efa\u5668\u6a21\u7248\\\",\\\"descriptionEN\\\":\\\"This is a builder template for binary build\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-binary-container\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"binary\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"binary\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"binary\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/s2i-binary:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/s2i-binary:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for binary build\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling binary,\\\",\\\"key\\\":\\\"ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/binary.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}\nto:\nResource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"\nName: \"binary\", Namespace: \"\"\nfor: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\nError from server (InternalError): error when applying patch:\n{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Java \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\",\\\"descriptionEN\\\":\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\"far jars\\\\\\\").\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"jar\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"java\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"java\\\",\\\"containerInfo\\\":[{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/java-8-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/java-8-runtime:v3.2.0\\\"},{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/java-11-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/java-11-runtime:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/java-8-centos7:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\"far jars\\\\\\\")\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\",\\\"key\\\":\\\"MAVEN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\",\\\"key\\\":\\\"MAVEN_ARGS_APPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\",\\\"key\\\":\\\"MAVEN_MIRROR_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\",\\\"key\\\":\\\"MAVEN_CLEAR_REPO\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\",\\\"key\\\":\\\"ARTIFACT_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\",\\\"key\\\":\\\"ARTIFACT_COPY_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\",\\\"key\\\":\\\"JAVA_APP_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\",\\\"key\\\":\\\"JAVA_LIB_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"options to add when calling java\\\",\\\"key\\\":\\\"JAVA_OPTIONS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"a number \\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\u003e 8 will be removed. For versions \\\\u003e= 10 no explicit memory limit is calculated since Java \\\\u003e= 10 has support for container limits.\\\",\\\"key\\\":\\\"JAVA_MAJOR_VERSION\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\",\\\"key\\\":\\\"JAVA_MAX_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\",\\\"key\\\":\\\"JAVA_INIT_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\",\\\"key\\\":\\\"JAVA_MAX_CORE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"set this to get some diagnostics information to standard out when things are happening\\\",\\\"key\\\":\\\"JAVA_DIAGNOSTICS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\",\\\"key\\\":\\\"JAVA_MAIN_CLASS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\",\\\"key\\\":\\\"JAVA_APP_JAR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Name to use for the process\\\",\\\"key\\\":\\\"JAVA_APP_NAME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\",\\\"key\\\":\\\"JAVA_CLASSPATH\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set remote debugging will be switched on\\\",\\\"key\\\":\\\"JAVA_DEBUG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set enables suspend mode in remote debugging\\\",\\\"key\\\":\\\"JAVA_DEBUG_SUSPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Port used for remote debugging. Default: 5005\\\",\\\"key\\\":\\\"JAVA_DEBUG_PORT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\",\\\"key\\\":\\\"NO_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/java.png\\\",\\\"version\\\":\\\"0.0.2\\\"}}\\n\"}}}\nto:\nResource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"\nName: \"java\", Namespace: \"\"\nfor: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\nError from server (InternalError): error when applying patch:\n{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Nodejs \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Node.js \u662f\u57fa\u4e8e Chrome \u7684 JavaScript \u8fd0\u884c\u65f6\u6784\u5efa\u7684\u5e73\u53f0\uff0c\u53ef\u8f7b\u677e\u6784\u5efa\u5feb\u901f\uff0c\u53ef\u6269\u5c55\u7684\u7f51\u7edc\u5e94\u7528\u7a0b\u5e8f\u3002\\\",\\\"descriptionEN\\\":\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-nodejs-container\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"nodejs\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"nodejs\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\",\\\"description\\\":\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"NodeJS runtime mode (default: \\\\\\\"production\\\\\\\")\\\",\\\"key\\\":\\\"NODE_ENV\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"When set to \\\\\\\"true\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\"false\\\\\\\"). Setting DEV_MODE to \\\\\\\"true\\\\\\\" will change the NODE_ENV default to \\\\\\\"development\\\\\\\" (if not explicitly set).\\\",\\\"key\\\":\\\"DEV_MODE\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\"start\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\",\\\"key\\\":\\\"NPM_RUN\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use an npm proxy during assembly\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use an npm proxy during assembly\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use a custom NPM registry mirror to download packages during the build process\\\",\\\"key\\\":\\\"NPM_MIRROR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to use \\\\\\\"yarn install\\\\\\\" get dependencies\\\",\\\"key\\\":\\\"YARN_ENABLED\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"\\\\\\\"yarn install\\\\\\\" args\\\",\\\"key\\\":\\\"YARN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/nodejs.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}\nto:\nResource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"\nName: \"nodejs\", Namespace: \"\"\nfor: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\nError from server (InternalError): error when applying patch:\n{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Python \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Python \u662f\u4e00\u79cd\u6613\u4e8e\u5b66\u4e60\uff0c\u529f\u80fd\u5f3a\u5927\u7684\u7f16\u7a0b\u8bed\u8a00\u3002 \u5b83\u5177\u6709\u9ad8\u6548\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\u548c\u7b80\u5355\u4f46\u6709\u6548\u7684\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u65b9\u6cd5\u3002\\\",\\\"descriptionEN\\\":\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-python-container\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"python\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"python\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/python-36-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-35-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-34-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-27-centos7:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/python-36-centos7:v3.2.0\\\",\\\"description\\\":\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\",\\\"key\\\":\\\"APP_SCRIPT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\",\\\"key\\\":\\\"APP_FILE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\",\\\"key\\\":\\\"APP_MODULE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\",\\\"key\\\":\\\"APP_HOME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to a valid Python file with a Gunicorn configuration file.\\\",\\\"key\\\":\\\"APP_CONFIG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\",\\\"key\\\":\\\"DISABLE_COLLECTSTATIC\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\",\\\"key\\\":\\\"DISABLE_SETUP_PY_PROCESSING\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\",\\\"key\\\":\\\"ENABLE_PIPENV\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\",\\\"key\\\":\\\"PIP_INDEX_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\",\\\"key\\\":\\\"UPGRADE_PIP_TO_LATEST\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\",\\\"key\\\":\\\"WEB_CONCURRENCY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/python.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}\nto:\nResource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"\nName: \"python\", Namespace: \"\"\nfor: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\nError from server (InternalError): error when applying patch:\n{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Tomcat \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\uff0c\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\",\\\"descriptionEN\\\":\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"war\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"tomcat\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"java\\\",\\\"containerInfo\\\":[{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\"},{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\",\\\"key\\\":\\\"MAVEN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\",\\\"key\\\":\\\"MAVEN_ARGS_APPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\",\\\"key\\\":\\\"MAVEN_MIRROR_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\",\\\"key\\\":\\\"MAVEN_CLEAR_REPO\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\",\\\"key\\\":\\\"ARTIFACT_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\",\\\"key\\\":\\\"ARTIFACT_COPY_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\",\\\"key\\\":\\\"JAVA_APP_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\",\\\"key\\\":\\\"JAVA_LIB_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"options to add when calling java\\\",\\\"key\\\":\\\"JAVA_OPTIONS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"a number \\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\u003e 8 will be removed. For versions \\\\u003e= 10 no explicit memory limit is calculated since Java \\\\u003e= 10 has support for container limits.\\\",\\\"key\\\":\\\"JAVA_MAJOR_VERSION\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\",\\\"key\\\":\\\"JAVA_MAX_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\",\\\"key\\\":\\\"JAVA_INIT_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\",\\\"key\\\":\\\"JAVA_MAX_CORE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"set this to get some diagnostics information to standard out when things are happening\\\",\\\"key\\\":\\\"JAVA_DIAGNOSTICS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\",\\\"key\\\":\\\"JAVA_MAIN_CLASS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\",\\\"key\\\":\\\"JAVA_APP_JAR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Name to use for the process\\\",\\\"key\\\":\\\"JAVA_APP_NAME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\",\\\"key\\\":\\\"JAVA_CLASSPATH\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set remote debugging will be switched on\\\",\\\"key\\\":\\\"JAVA_DEBUG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set enables suspend mode in remote debugging\\\",\\\"key\\\":\\\"JAVA_DEBUG_SUSPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Port used for remote debugging. Default: 5005\\\",\\\"key\\\":\\\"JAVA_DEBUG_PORT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\",\\\"key\\\":\\\"NO_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/tomcat.png\\\",\\\"version\\\":\\\"0.0.2\\\"}}\\n\"}}}\nto:\nResource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"\nName: \"tomcat\", Namespace: \"\"\nfor: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z",
      "stderr_lines": [
        "Error: UPGRADE FAILED: cannot patch \"binary\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:25Z is after 2024-02-14T06:08:48Z",
        "Warning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        "Warning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        "Warning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        "Warning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        "Warning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.",
        "Error from server (InternalError): error when applying patch:",
        "{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u6784\u5efa\u5668\u6a21\u7248\\\",\\\"descriptionEN\\\":\\\"This is a builder template for binary build\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-binary-container\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"binary\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"binary\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"binary\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/s2i-binary:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/s2i-binary:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for binary build\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling binary,\\\",\\\"key\\\":\\\"ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/binary.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}",
        "to:",
        "Resource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"",
        "Name: \"binary\", Namespace: \"\"",
        "for: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z",
        "Error from server (InternalError): error when applying patch:",
        "{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Java \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\",\\\"descriptionEN\\\":\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\"far jars\\\\\\\").\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"jar\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"java\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"java\\\",\\\"containerInfo\\\":[{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/java-8-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/java-8-runtime:v3.2.0\\\"},{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/java-11-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/java-11-runtime:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/java-8-centos7:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\"far jars\\\\\\\")\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\",\\\"key\\\":\\\"MAVEN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\",\\\"key\\\":\\\"MAVEN_ARGS_APPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\",\\\"key\\\":\\\"MAVEN_MIRROR_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\",\\\"key\\\":\\\"MAVEN_CLEAR_REPO\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\",\\\"key\\\":\\\"ARTIFACT_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\",\\\"key\\\":\\\"ARTIFACT_COPY_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\",\\\"key\\\":\\\"JAVA_APP_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\",\\\"key\\\":\\\"JAVA_LIB_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"options to add when calling java\\\",\\\"key\\\":\\\"JAVA_OPTIONS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"a number \\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\u003e 8 will be removed. For versions \\\\u003e= 10 no explicit memory limit is calculated since Java \\\\u003e= 10 has support for container limits.\\\",\\\"key\\\":\\\"JAVA_MAJOR_VERSION\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\",\\\"key\\\":\\\"JAVA_MAX_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\",\\\"key\\\":\\\"JAVA_INIT_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\",\\\"key\\\":\\\"JAVA_MAX_CORE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"set this to get some diagnostics information to standard out when things are happening\\\",\\\"key\\\":\\\"JAVA_DIAGNOSTICS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\",\\\"key\\\":\\\"JAVA_MAIN_CLASS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\",\\\"key\\\":\\\"JAVA_APP_JAR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Name to use for the process\\\",\\\"key\\\":\\\"JAVA_APP_NAME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\",\\\"key\\\":\\\"JAVA_CLASSPATH\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set remote debugging will be switched on\\\",\\\"key\\\":\\\"JAVA_DEBUG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set enables suspend mode in remote debugging\\\",\\\"key\\\":\\\"JAVA_DEBUG_SUSPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Port used for remote debugging. Default: 5005\\\",\\\"key\\\":\\\"JAVA_DEBUG_PORT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\",\\\"key\\\":\\\"NO_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/java.png\\\",\\\"version\\\":\\\"0.0.2\\\"}}\\n\"}}}",
        "to:",
        "Resource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"",
        "Name: \"java\", Namespace: \"\"",
        "for: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z",
        "Error from server (InternalError): error when applying patch:",
        "{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Nodejs \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Node.js \u662f\u57fa\u4e8e Chrome \u7684 JavaScript \u8fd0\u884c\u65f6\u6784\u5efa\u7684\u5e73\u53f0\uff0c\u53ef\u8f7b\u677e\u6784\u5efa\u5feb\u901f\uff0c\u53ef\u6269\u5c55\u7684\u7f51\u7edc\u5e94\u7528\u7a0b\u5e8f\u3002\\\",\\\"descriptionEN\\\":\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-nodejs-container\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"nodejs\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"nodejs\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\",\\\"description\\\":\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"NodeJS runtime mode (default: \\\\\\\"production\\\\\\\")\\\",\\\"key\\\":\\\"NODE_ENV\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"When set to \\\\\\\"true\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\"false\\\\\\\"). Setting DEV_MODE to \\\\\\\"true\\\\\\\" will change the NODE_ENV default to \\\\\\\"development\\\\\\\" (if not explicitly set).\\\",\\\"key\\\":\\\"DEV_MODE\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\"start\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\",\\\"key\\\":\\\"NPM_RUN\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use an npm proxy during assembly\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use an npm proxy during assembly\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Use a custom NPM registry mirror to download packages during the build process\\\",\\\"key\\\":\\\"NPM_MIRROR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to use \\\\\\\"yarn install\\\\\\\" get dependencies\\\",\\\"key\\\":\\\"YARN_ENABLED\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"\\\\\\\"yarn install\\\\\\\" args\\\",\\\"key\\\":\\\"YARN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/nodejs.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}",
        "to:",
        "Resource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"",
        "Name: \"nodejs\", Namespace: \"\"",
        "for: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z",
        "Error from server (InternalError): error when applying patch:",
        "{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Python \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Python \u662f\u4e00\u79cd\u6613\u4e8e\u5b66\u4e60\uff0c\u529f\u80fd\u5f3a\u5927\u7684\u7f16\u7a0b\u8bed\u8a00\u3002 \u5b83\u5177\u6709\u9ad8\u6548\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\u548c\u7b80\u5355\u4f46\u6709\u6548\u7684\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u65b9\u6cd5\u3002\\\",\\\"descriptionEN\\\":\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-python-container\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"python\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"python\\\",\\\"containerInfo\\\":[{\\\"builderImage\\\":\\\"kubesphere/python-36-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-35-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-34-centos7:v3.2.0\\\"},{\\\"builderImage\\\":\\\"kubesphere/python-27-centos7:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/python-36-centos7:v3.2.0\\\",\\\"description\\\":\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\",\\\"key\\\":\\\"APP_SCRIPT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\",\\\"key\\\":\\\"APP_FILE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\",\\\"key\\\":\\\"APP_MODULE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\",\\\"key\\\":\\\"APP_HOME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to a valid Python file with a Gunicorn configuration file.\\\",\\\"key\\\":\\\"APP_CONFIG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\",\\\"key\\\":\\\"DISABLE_COLLECTSTATIC\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\",\\\"key\\\":\\\"DISABLE_SETUP_PY_PROCESSING\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\",\\\"key\\\":\\\"ENABLE_PIPENV\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\",\\\"key\\\":\\\"PIP_INDEX_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\",\\\"key\\\":\\\"UPGRADE_PIP_TO_LATEST\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\",\\\"key\\\":\\\"WEB_CONCURRENCY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/python.png\\\",\\\"version\\\":\\\"0.0.1\\\"}}\\n\"}}}",
        "to:",
        "Resource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"",
        "Name: \"python\", Namespace: \"\"",
        "for: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z",
        "Error from server (InternalError): error when applying patch:",
        "{\"metadata\":{\"annotations\":{\"kubectl.kubernetes.io/last-applied-configuration\":\"{\\\"apiVersion\\\":\\\"devops.kubesphere.io/v1alpha1\\\",\\\"kind\\\":\\\"S2iBuilderTemplate\\\",\\\"metadata\\\":{\\\"annotations\\\":{\\\"descriptionCN\\\":\\\"Tomcat \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\uff0c\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\",\\\"descriptionEN\\\":\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\",\\\"devops.kubesphere.io/s2i-template-url\\\":\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\",\\\"helm.sh/hook\\\":\\\"pre-install\\\"},\\\"labels\\\":{\\\"binary-type.kubesphere.io\\\":\\\"war\\\",\\\"builder-type.kubesphere.io/b2i\\\":\\\"b2i\\\",\\\"builder-type.kubesphere.io/s2i\\\":\\\"s2i\\\",\\\"controller-tools.k8s.io\\\":\\\"1.0\\\"},\\\"name\\\":\\\"tomcat\\\"},\\\"spec\\\":{\\\"codeFramework\\\":\\\"java\\\",\\\"containerInfo\\\":[{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\"},{\\\"buildVolumes\\\":[\\\"s2i_java_cache:/tmp/artifacts\\\"],\\\"builderImage\\\":\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\",\\\"runtimeArtifacts\\\":[{\\\"source\\\":\\\"/deployments\\\"}],\\\"runtimeImage\\\":\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\"}],\\\"defaultBaseImage\\\":\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\",\\\"description\\\":\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\",\\\"environment\\\":[{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\",\\\"key\\\":\\\"MAVEN_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\",\\\"key\\\":\\\"MAVEN_ARGS_APPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\",\\\"key\\\":\\\"MAVEN_MIRROR_URL\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\",\\\"key\\\":\\\"MAVEN_CLEAR_REPO\\\",\\\"required\\\":false,\\\"type\\\":\\\"boolean\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\",\\\"key\\\":\\\"ARTIFACT_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\",\\\"key\\\":\\\"ARTIFACT_COPY_ARGS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\",\\\"key\\\":\\\"JAVA_APP_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\",\\\"key\\\":\\\"JAVA_LIB_DIR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"options to add when calling java\\\",\\\"key\\\":\\\"JAVA_OPTIONS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"a number \\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\u003e 8 will be removed. For versions \\\\u003e= 10 no explicit memory limit is calculated since Java \\\\u003e= 10 has support for container limits.\\\",\\\"key\\\":\\\"JAVA_MAJOR_VERSION\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\",\\\"key\\\":\\\"JAVA_MAX_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\",\\\"key\\\":\\\"JAVA_INIT_MEM_RATIO\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\",\\\"key\\\":\\\"JAVA_MAX_CORE\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"set this to get some diagnostics information to standard out when things are happening\\\",\\\"key\\\":\\\"JAVA_DIAGNOSTICS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\",\\\"key\\\":\\\"JAVA_MAIN_CLASS\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\",\\\"key\\\":\\\"JAVA_APP_JAR\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Name to use for the process\\\",\\\"key\\\":\\\"JAVA_APP_NAME\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\",\\\"key\\\":\\\"JAVA_CLASSPATH\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set remote debugging will be switched on\\\",\\\"key\\\":\\\"JAVA_DEBUG\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"If set enables suspend mode in remote debugging\\\",\\\"key\\\":\\\"JAVA_DEBUG_SUSPEND\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"Port used for remote debugging. Default: 5005\\\",\\\"key\\\":\\\"JAVA_DEBUG_PORT\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTP_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\",\\\"key\\\":\\\"HTTPS_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"},{\\\"defaultValue\\\":\\\"\\\",\\\"description\\\":\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\",\\\"key\\\":\\\"NO_PROXY\\\",\\\"required\\\":false,\\\"type\\\":\\\"string\\\"}],\\\"iconPath\\\":\\\"assets/tomcat.png\\\",\\\"version\\\":\\\"0.0.2\\\"}}\\n\"}}}",
        "to:",
        "Resource: \"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\", GroupVersionKind: \"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\"",
        "Name: \"tomcat\", Namespace: \"\"",
        "for: \"s2i-templatestemplates.yaml\": Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z"
      ],
      "stdout": "ks-devops/Chart.yaml\nks-devops/values.yaml\nks-devops/templates/NOTES.txt\nks-devops/templates/_helpers.tpl\nks-devops/templates/cluster-step-templates.yaml\nks-devops/templates/cluster-template-ci.yaml\nks-devops/templates/cluster-template-cicd.yaml\nks-devops/templates/cluster-template-golang.yaml\nks-devops/templates/cluster-template-maven.yaml\nks-devops/templates/cluster-template-nodejs.yaml\nks-devops/templates/config.yaml\nks-devops/templates/cronjob-gc.yaml\nks-devops/templates/deployment-apiserver.yaml\nks-devops/templates/deployment-controller.yaml\nks-devops/templates/jenkins-agent-config.yaml\nks-devops/templates/service-apiserver.yaml\nks-devops/templates/serviceaccount.yaml\nks-devops/templates/tests/test-connection.yaml\nks-devops/.helmignore\nks-devops/README.md\nks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml\nks-devops/crds/devops.kubesphere.io_clustertemplates.yaml\nks-devops/crds/devops.kubesphere.io_devopsprojects.yaml\nks-devops/crds/devops.kubesphere.io_gitrepositories.yaml\nks-devops/crds/devops.kubesphere.io_pipelineruns.yaml\nks-devops/crds/devops.kubesphere.io_pipelines.yaml\nks-devops/crds/devops.kubesphere.io_templates.yaml\nks-devops/crds/gitops.kubesphere.io_applications.yaml\nks-devops/charts/jenkins/Chart.yaml\nks-devops/charts/jenkins/values.yaml\nks-devops/charts/jenkins/templates/NOTES.txt\nks-devops/charts/jenkins/templates/_helpers.tpl\nks-devops/charts/jenkins/templates/config.yaml\nks-devops/charts/jenkins/templates/home-pvc.yaml\nks-devops/charts/jenkins/templates/jenkins-agent-config.yaml\nks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml\nks-devops/charts/jenkins/templates/jenkins-casc-config.yml\nks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml\nks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml\nks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml\nks-devops/charts/jenkins/templates/jenkins-master-svc.yaml\nks-devops/charts/jenkins/templates/jenkins-test.yaml\nks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml\nks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml\nks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml\nks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml\nks-devops/charts/jenkins/templates/jobs.yaml\nks-devops/charts/jenkins/templates/prometheus-prometheusrule.yaml\nks-devops/charts/jenkins/templates/prometheus-servicemonitor.yaml\nks-devops/charts/jenkins/templates/rbac.yaml\nks-devops/charts/jenkins/templates/secret.yaml\nks-devops/charts/jenkins/templates/service-account.yaml\nks-devops/charts/jenkins/.helmignore\nks-devops/charts/jenkins/README.md\nks-devops/charts/s2i/Chart.yaml\nks-devops/charts/s2i/values.yaml\nks-devops/charts/s2i/templates/NOTES.txt\nks-devops/charts/s2i/templates/_helpers.tpl\nks-devops/charts/s2i/templates/binary.yaml\nks-devops/charts/s2i/templates/java.yaml\nks-devops/charts/s2i/templates/nodejs.yaml\nks-devops/charts/s2i/templates/operator.yaml\nks-devops/charts/s2i/templates/prometheus-servicemonitor.yaml\nks-devops/charts/s2i/templates/python.yaml\nks-devops/charts/s2i/templates/tests/.gitkeep\nks-devops/charts/s2i/templates/tomcat.yaml\nks-devops/charts/s2i/.helmignore\nks-devops/charts/s2i/README.md\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibinaries.yaml\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuilders.yaml\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuildertemplates.yaml\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2iruns.yaml\ncustomresourcedefinition.apiextensions.k8s.io/clustersteptemplates.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/clustertemplates.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/devopsprojects.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/gitrepositories.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/pipelineruns.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/pipelines.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/templates.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/applications.gitops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/s2ibinaries.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuilders.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuildertemplates.devops.kubesphere.io configured\ncustomresourcedefinition.apiextensions.k8s.io/s2iruns.devops.kubesphere.io configured",
      "stdout_lines": [
        "ks-devops/Chart.yaml",
        "ks-devops/values.yaml",
        "ks-devops/templates/NOTES.txt",
        "ks-devops/templates/_helpers.tpl",
        "ks-devops/templates/cluster-step-templates.yaml",
        "ks-devops/templates/cluster-template-ci.yaml",
        "ks-devops/templates/cluster-template-cicd.yaml",
        "ks-devops/templates/cluster-template-golang.yaml",
        "ks-devops/templates/cluster-template-maven.yaml",
        "ks-devops/templates/cluster-template-nodejs.yaml",
        "ks-devops/templates/config.yaml",
        "ks-devops/templates/cronjob-gc.yaml",
        "ks-devops/templates/deployment-apiserver.yaml",
        "ks-devops/templates/deployment-controller.yaml",
        "ks-devops/templates/jenkins-agent-config.yaml",
        "ks-devops/templates/service-apiserver.yaml",
        "ks-devops/templates/serviceaccount.yaml",
        "ks-devops/templates/tests/test-connection.yaml",
        "ks-devops/.helmignore",
        "ks-devops/README.md",
        "ks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml",
        "ks-devops/crds/devops.kubesphere.io_clustertemplates.yaml",
        "ks-devops/crds/devops.kubesphere.io_devopsprojects.yaml",
        "ks-devops/crds/devops.kubesphere.io_gitrepositories.yaml",
        "ks-devops/crds/devops.kubesphere.io_pipelineruns.yaml",
        "ks-devops/crds/devops.kubesphere.io_pipelines.yaml",
        "ks-devops/crds/devops.kubesphere.io_templates.yaml",
        "ks-devops/crds/gitops.kubesphere.io_applications.yaml",
        "ks-devops/charts/jenkins/Chart.yaml",
        "ks-devops/charts/jenkins/values.yaml",
        "ks-devops/charts/jenkins/templates/NOTES.txt",
        "ks-devops/charts/jenkins/templates/_helpers.tpl",
        "ks-devops/charts/jenkins/templates/config.yaml",
        "ks-devops/charts/jenkins/templates/home-pvc.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-agent-config.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-casc-config.yml",
        "ks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-master-svc.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-test.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml",
        "ks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml",
        "ks-devops/charts/jenkins/templates/jobs.yaml",
        "ks-devops/charts/jenkins/templates/prometheus-prometheusrule.yaml",
        "ks-devops/charts/jenkins/templates/prometheus-servicemonitor.yaml",
        "ks-devops/charts/jenkins/templates/rbac.yaml",
        "ks-devops/charts/jenkins/templates/secret.yaml",
        "ks-devops/charts/jenkins/templates/service-account.yaml",
        "ks-devops/charts/jenkins/.helmignore",
        "ks-devops/charts/jenkins/README.md",
        "ks-devops/charts/s2i/Chart.yaml",
        "ks-devops/charts/s2i/values.yaml",
        "ks-devops/charts/s2i/templates/NOTES.txt",
        "ks-devops/charts/s2i/templates/_helpers.tpl",
        "ks-devops/charts/s2i/templates/binary.yaml",
        "ks-devops/charts/s2i/templates/java.yaml",
        "ks-devops/charts/s2i/templates/nodejs.yaml",
        "ks-devops/charts/s2i/templates/operator.yaml",
        "ks-devops/charts/s2i/templates/prometheus-servicemonitor.yaml",
        "ks-devops/charts/s2i/templates/python.yaml",
        "ks-devops/charts/s2i/templates/tests/.gitkeep",
        "ks-devops/charts/s2i/templates/tomcat.yaml",
        "ks-devops/charts/s2i/.helmignore",
        "ks-devops/charts/s2i/README.md",
        "ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibinaries.yaml",
        "ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuilders.yaml",
        "ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuildertemplates.yaml",
        "ks-devops/charts/s2i/crds/devops.kubesphere.io_s2iruns.yaml",
        "customresourcedefinition.apiextensions.k8s.io/clustersteptemplates.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/clustertemplates.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/devopsprojects.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/gitrepositories.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/pipelineruns.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/pipelines.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/templates.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/applications.gitops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/s2ibinaries.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/s2ibuilders.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/s2ibuildertemplates.devops.kubesphere.io configured",
        "customresourcedefinition.apiextensions.k8s.io/s2iruns.devops.kubesphere.io configured"
      ]
    },
    "resolved_action": "command",
    "role": "ks-devops",
    "start": "2024-03-06T12:12:51.312205",
    "task": "ks-devops | Upgrading or installing ks-devops",
    "task_action": "command",
    "task_args": "",
    "task_path": "/kubesphere/installer/roles/ks-devops/tasks/main.yaml:191",
    "task_uuid": "7a6b163c-8d17-2b55-529a-000000000042",
    "uuid": "a1c23ee9-6de8-4aad-9eaa-dac48edb582a"
  },
  "parent_uuid": "7a6b163c-8d17-2b55-529a-000000000042",
  "pid": 22808,
  "runner_ident": "devops",
  "start_line": 173,
  "stdout": "fatal: [localhost]: FAILED! => {\"attempts\": 3, \"changed\": true, \"cmd\": \"# Delete Job migrate because 'helm upgrade' will try to update immutable fields of Job, which is not allowed.\\n/usr/local/bin/kubectl delete job -n kubesphere-devops-system migrate --ignore-not-found\\n\\nks_devops_chart_version=0.2.2\\ncharts_folder=/kubesphere/kubesphere/ks-devops/charts\\nks_devops_chart=$charts_folder/ks-devops-$ks_devops_chart_version.tgz\\n\\n# Create or update CRDs manually\\ntar xzvf $ks_devops_chart -C $charts_folder\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/crds\\n/usr/local/bin/kubectl apply -f $charts_folder/ks-devops/charts/s2i/crds\\n\\n# Waiting for CRD to complete the upgrade\\nsleep 10\\n\\n# Import the templates seperately due the potential webhook issues\\nrm -rf s2i-templates\\nhelm template  $charts_folder/ks-devops/charts/s2i/  -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml  -s templates/binary.yaml  -s templates/java.yaml  -s templates/nodejs.yaml  -s templates/python.yaml  -s templates/tomcat.yaml > s2i-templates\\\\templates.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/binary.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/java.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/nodejs.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/python.yaml\\nrm -rf $charts_folder/ks-devops/charts/s2i/templates/tomcat.yaml\\n\\n/usr/local/bin/helm upgrade --install devops $ks_devops_chart -n kubesphere-devops-system -f /kubesphere/kubesphere/ks-devops/ks-devops-values.yaml --wait\\n\\n/usr/local/bin/kubectl apply -f s2i-templates\\\\templates.yaml\\n\", \"delta\": \"0:00:18.800408\", \"end\": \"2024-03-06 12:17:26.512795\", \"msg\": \"non-zero return code\", \"rc\": 1, \"start\": \"2024-03-06 12:17:07.712387\", \"stderr\": \"Error: UPGRADE FAILED: cannot patch \\\"binary\\\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:25Z is after 2024-02-14T06:08:48Z\\nWarning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nWarning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\\nError from server (InternalError): error when applying patch:\\n{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u6784\u5efa\u5668\u6a21\u7248\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for binary build\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-binary-container\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"binary\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"binary\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"binary\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for binary build\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling binary,\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/binary.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\\nto:\\nResource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\\nName: \\\"binary\\\", Namespace: \\\"\\\"\\nfor: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Java \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\\").\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"jar\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"java\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"java\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/java-8-runtime:v3.2.0\\\\\\\"},{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/java-11-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/java-11-runtime:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\\")\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS_APPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_MIRROR_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_CLEAR_REPO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_COPY_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_LIB_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"options to add when calling java\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_OPTIONS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAJOR_VERSION\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_CORE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DIAGNOSTICS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAIN_CLASS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_JAR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Name to use for the process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_NAME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_CLASSPATH\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set remote debugging will be switched on\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set enables suspend mode in remote debugging\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Port used for remote debugging. Default: 5005\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_PORT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NO_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/java.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.2\\\\\\\"}}\\\\n\\\"}}}\\nto:\\nResource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\\nName: \\\"java\\\", Namespace: \\\"\\\"\\nfor: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Nodejs \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Node.js \u662f\u57fa\u4e8e Chrome \u7684 JavaScript \u8fd0\u884c\u65f6\u6784\u5efa\u7684\u5e73\u53f0\uff0c\u53ef\u8f7b\u677e\u6784\u5efa\u5feb\u901f\uff0c\u53ef\u6269\u5c55\u7684\u7f51\u7edc\u5e94\u7528\u7a0b\u5e8f\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-nodejs-container\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"nodejs\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"nodejs\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"NodeJS runtime mode (default: \\\\\\\\\\\\\\\"production\\\\\\\\\\\\\\\")\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NODE_ENV\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"When set to \\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\\\\\\\\\"false\\\\\\\\\\\\\\\"). Setting DEV_MODE to \\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\\" will change the NODE_ENV default to \\\\\\\\\\\\\\\"development\\\\\\\\\\\\\\\" (if not explicitly set).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DEV_MODE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\\\\\\\\\"start\\\\\\\\\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NPM_RUN\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use an npm proxy during assembly\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use an npm proxy during assembly\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use a custom NPM registry mirror to download packages during the build process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NPM_MIRROR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to use \\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\\" get dependencies\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"YARN_ENABLED\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"\\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\\" args\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"YARN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/nodejs.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\\nto:\\nResource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\\nName: \\\"nodejs\\\", Namespace: \\\"\\\"\\nfor: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Python \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Python \u662f\u4e00\u79cd\u6613\u4e8e\u5b66\u4e60\uff0c\u529f\u80fd\u5f3a\u5927\u7684\u7f16\u7a0b\u8bed\u8a00\u3002 \u5b83\u5177\u6709\u9ad8\u6548\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\u548c\u7b80\u5355\u4f46\u6709\u6548\u7684\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u65b9\u6cd5\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-python-container\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"python\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"python\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-35-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-34-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-27-centos7:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_SCRIPT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_FILE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_MODULE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_HOME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to a valid Python file with a Gunicorn configuration file.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_CONFIG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DISABLE_COLLECTSTATIC\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DISABLE_SETUP_PY_PROCESSING\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ENABLE_PIPENV\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"PIP_INDEX_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"UPGRADE_PIP_TO_LATEST\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"WEB_CONCURRENCY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/python.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\\nto:\\nResource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\\nName: \\\"python\\\", Namespace: \\\"\\\"\\nfor: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\\nError from server (InternalError): error when applying patch:\\n{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Tomcat \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\uff0c\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"war\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"tomcat\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"java\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\\\\\"},{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS_APPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_MIRROR_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_CLEAR_REPO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_COPY_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_LIB_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"options to add when calling java\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_OPTIONS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAJOR_VERSION\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_CORE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DIAGNOSTICS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAIN_CLASS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_JAR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Name to use for the process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_NAME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_CLASSPATH\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set remote debugging will be switched on\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set enables suspend mode in remote debugging\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Port used for remote debugging. Default: 5005\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_PORT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NO_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/tomcat.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.2\\\\\\\"}}\\\\n\\\"}}}\\nto:\\nResource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\\nName: \\\"tomcat\\\", Namespace: \\\"\\\"\\nfor: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\", \"stderr_lines\": [\"Error: UPGRADE FAILED: cannot patch \\\"binary\\\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:25Z is after 2024-02-14T06:08:48Z\", \"Warning: resource s2ibuildertemplates/binary is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\", \"Warning: resource s2ibuildertemplates/java is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\", \"Warning: resource s2ibuildertemplates/nodejs is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\", \"Warning: resource s2ibuildertemplates/python is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\", \"Warning: resource s2ibuildertemplates/tomcat is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.\", \"Error from server (InternalError): error when applying patch:\", \"{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u6784\u5efa\u5668\u6a21\u7248\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for binary build\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-binary-container\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"binary\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"binary\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"binary\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/s2i-binary:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for binary build\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling binary,\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/binary.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\", \"to:\", \"Resource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\", \"Name: \\\"binary\\\", Namespace: \\\"\\\"\", \"for: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\", \"Error from server (InternalError): error when applying patch:\", \"{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Java \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\\").\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-java-container/blob/master/java/images\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"jar\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"java\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"java\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/java-8-runtime:v3.2.0\\\\\\\"},{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/java-11-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/java-11-runtime:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/java-8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly without any further application server.It's suited ideally for microservices with a flat classpath (including \\\\\\\\\\\\\\\"far jars\\\\\\\\\\\\\\\")\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS_APPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_MIRROR_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_CLEAR_REPO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_COPY_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_LIB_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"options to add when calling java\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_OPTIONS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAJOR_VERSION\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_CORE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DIAGNOSTICS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAIN_CLASS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_JAR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Name to use for the process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_NAME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_CLASSPATH\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set remote debugging will be switched on\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set enables suspend mode in remote debugging\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Port used for remote debugging. Default: 5005\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_PORT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NO_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/java.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.2\\\\\\\"}}\\\\n\\\"}}}\", \"to:\", \"Resource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\", \"Name: \\\"java\\\", Namespace: \\\"\\\"\", \"for: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\", \"Error from server (InternalError): error when applying patch:\", \"{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Nodejs \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Node.js \u662f\u57fa\u4e8e Chrome \u7684 JavaScript \u8fd0\u884c\u65f6\u6784\u5efa\u7684\u5e73\u53f0\uff0c\u53ef\u8f7b\u677e\u6784\u5efa\u5feb\u901f\uff0c\u53ef\u6269\u5c55\u7684\u7f51\u7edc\u5e94\u7528\u7a0b\u5e8f\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-nodejs-container\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"nodejs\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"nodejs\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-6-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/nodejs-4-centos7:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/nodejs-8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Node.js available as container is a base platform for building and running various Node.js applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"NodeJS runtime mode (default: \\\\\\\\\\\\\\\"production\\\\\\\\\\\\\\\")\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NODE_ENV\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"When set to \\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\\", nodemon will be used to automatically reload the server while you work (default: \\\\\\\\\\\\\\\"false\\\\\\\\\\\\\\\"). Setting DEV_MODE to \\\\\\\\\\\\\\\"true\\\\\\\\\\\\\\\" will change the NODE_ENV default to \\\\\\\\\\\\\\\"development\\\\\\\\\\\\\\\" (if not explicitly set).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DEV_MODE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run \\\\\\\\\\\\\\\"start\\\\\\\\\\\\\\\"). These user-defined run-scripts are unavailable while DEV_MODE is in use.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NPM_RUN\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use an npm proxy during assembly\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use an npm proxy during assembly\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Use a custom NPM registry mirror to download packages during the build process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NPM_MIRROR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to use \\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\\" get dependencies\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"YARN_ENABLED\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"\\\\\\\\\\\\\\\"yarn install\\\\\\\\\\\\\\\" args\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"YARN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/nodejs.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\", \"to:\", \"Resource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\", \"Name: \\\"nodejs\\\", Namespace: \\\"\\\"\", \"for: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\", \"Error from server (InternalError): error when applying patch:\", \"{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Python \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\u3002Python \u662f\u4e00\u79cd\u6613\u4e8e\u5b66\u4e60\uff0c\u529f\u80fd\u5f3a\u5927\u7684\u7f16\u7a0b\u8bed\u8a00\u3002 \u5b83\u5177\u6709\u9ad8\u6548\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\u548c\u7b80\u5355\u4f46\u6709\u6548\u7684\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u65b9\u6cd5\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-python-container\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"python\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"python\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-35-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-34-centos7:v3.2.0\\\\\\\"},{\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/python-27-centos7:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/python-36-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Python available as container is a base platform for building and running various Python applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.\\\\\\\\nThis container image includes an npm utility, so users can use it to install JavaScript modules for their web applications. There is no guarantee for any specific npm or nodejs version, that is included in the image; those versions can be changed anytime and the nodejs itself is included just to make the npm work.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application from a script file. This should be a path to a script file (defaults to app.sh unless set to null) that will be run to start the application.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_SCRIPT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application from a Python script. This should be a path to a Python file (defaults to app.py unless set to null) that will be passed to the Python interpreter to start the application.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_FILE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Used to run the application with Gunicorn, as documented here. This variable specifies a WSGI callable with the pattern MODULE_NAME:VARIABLE_NAME, where MODULE_NAME is the full dotted path of a module, and VARIABLE_NAME refers to a WSGI callable inside the specified module. Gunicorn will look for a WSGI callable named application if not specified.\\\\\\\\nIf APP_MODULE is not provided, the run script will look for a wsgi.py file in your project and use it if it exists.\\\\\\\\nIf using setup.py for installing the application, the MODULE_NAME part can be read from there. \\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_MODULE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This variable can be used to specify a sub-directory in which the application to be run is contained. The directory pointed to by this variable needs to contain wsgi.py (for Gunicorn) or manage.py (for Django).\\\\\\\\nIf APP_HOME is not provided, the assemble and run scripts will use the application's root directory.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_HOME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to a valid Python file with a Gunicorn configuration file.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"APP_CONFIG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to inhibit the execution of 'manage.py collectstatic' during the build. This only affects Django projects.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DISABLE_COLLECTSTATIC\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this to a non-empty value to skip processing of setup.py script if you use -e . in requirements.txt to trigger its processing or you don't want your application to be installed into site-packages directory.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"DISABLE_SETUP_PY_PROCESSING\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to use Pipenv, the higher-level Python packaging tool, to manage dependencies of the application. This should be used only if your project contains properly formated Pipfile and Pipfile.lock.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ENABLE_PIPENV\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to use a custom index URL or mirror to download required packages during build process. This only affects packages listed in requirements.txt. Pipenv ignores this variable.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"PIP_INDEX_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this variable to a non-empty value to have the 'pip' program and related python packages (setuptools and wheel) be upgraded to the most recent version before any Python packages are installed. If not set it will use whatever the default version is included by the platform for the Python version being used..\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"UPGRADE_PIP_TO_LATEST\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Set this to change the default setting for the number of workers. By default, this is set to the number of available cores times 2, capped at 12.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"WEB_CONCURRENCY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/python.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.1\\\\\\\"}}\\\\n\\\"}}}\", \"to:\", \"Resource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\", \"Name: \\\"python\\\", Namespace: \\\"\\\"\", \"for: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\", \"Error from server (InternalError): error when applying patch:\", \"{\\\"metadata\\\":{\\\"annotations\\\":{\\\"kubectl.kubernetes.io/last-applied-configuration\\\":\\\"{\\\\\\\"apiVersion\\\\\\\":\\\\\\\"devops.kubesphere.io/v1alpha1\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"S2iBuilderTemplate\\\\\\\",\\\\\\\"metadata\\\\\\\":{\\\\\\\"annotations\\\\\\\":{\\\\\\\"descriptionCN\\\\\\\":\\\\\\\"Tomcat \u5e94\u7528\u7684\u6784\u5efa\u5668\u6a21\u7248\uff0c\u901a\u8fc7\u8be5\u6a21\u7248\u53ef\u6784\u5efa\u51fa\u76f4\u63a5\u8fd0\u884c\u7684\u5e94\u7528\u955c\u50cf\u3002\\\\\\\",\\\\\\\"descriptionEN\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\\",\\\\\\\"devops.kubesphere.io/s2i-template-url\\\\\\\":\\\\\\\"https://github.com/kubesphere/s2i-java-container/tree/master/tomcat/images/\\\\\\\",\\\\\\\"helm.sh/hook\\\\\\\":\\\\\\\"pre-install\\\\\\\"},\\\\\\\"labels\\\\\\\":{\\\\\\\"binary-type.kubesphere.io\\\\\\\":\\\\\\\"war\\\\\\\",\\\\\\\"builder-type.kubesphere.io/b2i\\\\\\\":\\\\\\\"b2i\\\\\\\",\\\\\\\"builder-type.kubesphere.io/s2i\\\\\\\":\\\\\\\"s2i\\\\\\\",\\\\\\\"controller-tools.k8s.io\\\\\\\":\\\\\\\"1.0\\\\\\\"},\\\\\\\"name\\\\\\\":\\\\\\\"tomcat\\\\\\\"},\\\\\\\"spec\\\\\\\":{\\\\\\\"codeFramework\\\\\\\":\\\\\\\"java\\\\\\\",\\\\\\\"containerInfo\\\\\\\":[{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java11-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java11-runtime:v3.2.0\\\\\\\"},{\\\\\\\"buildVolumes\\\\\\\":[\\\\\\\"s2i_java_cache:/tmp/artifacts\\\\\\\"],\\\\\\\"builderImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\\",\\\\\\\"runtimeArtifacts\\\\\\\":[{\\\\\\\"source\\\\\\\":\\\\\\\"/deployments\\\\\\\"}],\\\\\\\"runtimeImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-runtime:v3.2.0\\\\\\\"}],\\\\\\\"defaultBaseImage\\\\\\\":\\\\\\\"kubesphere/tomcat85-java8-centos7:v3.2.0\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"This is a builder template for Java builds whose result can be run directly with Tomcat application server.\\\\\\\",\\\\\\\"environment\\\\\\\":[{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when calling Maven, replacing the default package hawt-app:build -DskipTests -e. Please be sure to run the hawt-app:build goal (when not already bound to the package execution phase), otherwise the startup scripts won't work.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Additional Maven arguments, useful for temporary adding arguments like -X or -am -pl .\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_ARGS_APPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"With Repositories you specify from which locations you want to download certain artifacts, such as dependencies and maven-plugins.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_MIRROR_URL\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set then the Maven repository is removed after the artifact is built. This is useful for keeping the created application image small, but prevents incremental builds. The default is false\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"MAVEN_CLEAR_REPO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Path to target/ where the jar files are created for multi module builds. These are added to ${MAVEN_ARGS}\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Arguments to use when copying artifacts from the output dir to the application dir. Useful to specify which artifacts will be part of the image. It defaults to -r hawt-app/* when a hawt-app dir is found on the build directory, otherwise jar files only will be included (*.jar).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"ARTIFACT_COPY_ARGS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the directory where the application resides. All paths in your application are relative to this directory. By default it is the same directory where this startup script resides.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"directory holding the Java jar files as well an optional classpath file which holds the classpath. Either as a single line classpath (colon separated) or with jar files listed line-by-line. If not set JAVA_LIB_DIR is the same as JAVA_APP_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_LIB_DIR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"options to add when calling java\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_OPTIONS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"a number \\\\\\\\u003e= 7. If the version is set then only options suitable for this version are used. When set to 7 options known only to Java \\\\\\\\u003e 8 will be removed. For versions \\\\\\\\u003e= 10 no explicit memory limit is calculated since Java \\\\\\\\u003e= 10 has support for container limits.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAJOR_VERSION\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xmx option is given in JAVA_OPTIONS. This is used to calculate a default maximal Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xmx is set to a ratio of the container available memory as set here. The default is 25 when the maximum amount of memory available to the container is below 300M, 50 otherwise, which means in that case that 50% of the available memory is used as an upper boundary. You can skip this mechanism by setting this value to 0 in which case no -Xmx option is added.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"is used when no -Xms option is given in JAVA_OPTIONS. This is used to calculate a default initial Heap Memory based on a containers restriction. If used in a Docker container without any memory constraints for the container then this option has no effect. If there is a memory constraint then -Xms is set to a ratio of the container available memory as set here. By default this value is not set.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_INIT_MEM_RATIO\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"restrict manually the number of cores available which is used for calculating certain defaults like the number of garbage collector threads. If set to 0 no base JVM tuning based on the number of cores is performed.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAX_CORE\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"set this to get some diagnostics information to standard out when things are happening\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DIAGNOSTICS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"main class to use as argument for java. When this environment variable is given, all jar files in $JAVA_APP_DIR are added to the classpath as well as $JAVA_LIB_DIR.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_MAIN_CLASS\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A jar file with an appropriate manifest so that it can be started with java -jar if no $JAVA_MAIN_CLASS is set. In all cases this jar file is added to the classpath, too.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_JAR\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Name to use for the process\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_APP_NAME\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"the classpath to use. If not given, the startup script checks for a file ${JAVA_APP_DIR}/classpath and use its content literally as classpath. If this file doesn't exists all jars in the app dir are added (classes:${JAVA_APP_DIR}/*).\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_CLASSPATH\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set remote debugging will be switched on\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"If set enables suspend mode in remote debugging\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_SUSPEND\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Port used for remote debugging. Default: 5005\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"JAVA_DEBUG_PORT\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the http.proxyHost and http.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTP_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The URL of the proxy server that translates into the https.proxyHost and https.proxyPort system properties.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"HTTPS_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"},{\\\\\\\"defaultValue\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"The list of hosts that should be reached directly, bypassing the proxy, that translates into the http.nonProxyHosts system property.\\\\\\\",\\\\\\\"key\\\\\\\":\\\\\\\"NO_PROXY\\\\\\\",\\\\\\\"required\\\\\\\":false,\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\"}],\\\\\\\"iconPath\\\\\\\":\\\\\\\"assets/tomcat.png\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"0.0.2\\\\\\\"}}\\\\n\\\"}}}\", \"to:\", \"Resource: \\\"devops.kubesphere.io/v1alpha1, Resource=s2ibuildertemplates\\\", GroupVersionKind: \\\"devops.kubesphere.io/v1alpha1, Kind=S2iBuilderTemplate\\\"\", \"Name: \\\"tomcat\\\", Namespace: \\\"\\\"\", \"for: \\\"s2i-templatestemplates.yaml\\\": Internal error occurred: failed calling webhook \\\"s2ibuildertemplate.kb.io\\\": failed to call webhook: Post \\\"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\\\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:26Z is after 2024-02-14T06:08:48Z\"], \"stdout\": \"ks-devops/Chart.yaml\\nks-devops/values.yaml\\nks-devops/templates/NOTES.txt\\nks-devops/templates/_helpers.tpl\\nks-devops/templates/cluster-step-templates.yaml\\nks-devops/templates/cluster-template-ci.yaml\\nks-devops/templates/cluster-template-cicd.yaml\\nks-devops/templates/cluster-template-golang.yaml\\nks-devops/templates/cluster-template-maven.yaml\\nks-devops/templates/cluster-template-nodejs.yaml\\nks-devops/templates/config.yaml\\nks-devops/templates/cronjob-gc.yaml\\nks-devops/templates/deployment-apiserver.yaml\\nks-devops/templates/deployment-controller.yaml\\nks-devops/templates/jenkins-agent-config.yaml\\nks-devops/templates/service-apiserver.yaml\\nks-devops/templates/serviceaccount.yaml\\nks-devops/templates/tests/test-connection.yaml\\nks-devops/.helmignore\\nks-devops/README.md\\nks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml\\nks-devops/crds/devops.kubesphere.io_clustertemplates.yaml\\nks-devops/crds/devops.kubesphere.io_devopsprojects.yaml\\nks-devops/crds/devops.kubesphere.io_gitrepositories.yaml\\nks-devops/crds/devops.kubesphere.io_pipelineruns.yaml\\nks-devops/crds/devops.kubesphere.io_pipelines.yaml\\nks-devops/crds/devops.kubesphere.io_templates.yaml\\nks-devops/crds/gitops.kubesphere.io_applications.yaml\\nks-devops/charts/jenkins/Chart.yaml\\nks-devops/charts/jenkins/values.yaml\\nks-devops/charts/jenkins/templates/NOTES.txt\\nks-devops/charts/jenkins/templates/_helpers.tpl\\nks-devops/charts/jenkins/templates/config.yaml\\nks-devops/charts/jenkins/templates/home-pvc.yaml\\nks-devops/charts/jenkins/templates/jenkins-agent-config.yaml\\nks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml\\nks-devops/charts/jenkins/templates/jenkins-casc-config.yml\\nks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml\\nks-devops/charts/jenkins/templates/jenkins-master-svc.yaml\\nks-devops/charts/jenkins/templates/jenkins-test.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml\\nks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml\\nks-devops/charts/jenkins/templates/jobs.yaml\\nks-devops/charts/jenkins/templates/prometheus-prometheusrule.yaml\\nks-devops/charts/jenkins/templates/prometheus-servicemonitor.yaml\\nks-devops/charts/jenkins/templates/rbac.yaml\\nks-devops/charts/jenkins/templates/secret.yaml\\nks-devops/charts/jenkins/templates/service-account.yaml\\nks-devops/charts/jenkins/.helmignore\\nks-devops/charts/jenkins/README.md\\nks-devops/charts/s2i/Chart.yaml\\nks-devops/charts/s2i/values.yaml\\nks-devops/charts/s2i/templates/NOTES.txt\\nks-devops/charts/s2i/templates/_helpers.tpl\\nks-devops/charts/s2i/templates/binary.yaml\\nks-devops/charts/s2i/templates/java.yaml\\nks-devops/charts/s2i/templates/nodejs.yaml\\nks-devops/charts/s2i/templates/operator.yaml\\nks-devops/charts/s2i/templates/prometheus-servicemonitor.yaml\\nks-devops/charts/s2i/templates/python.yaml\\nks-devops/charts/s2i/templates/tests/.gitkeep\\nks-devops/charts/s2i/templates/tomcat.yaml\\nks-devops/charts/s2i/.helmignore\\nks-devops/charts/s2i/README.md\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibinaries.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuilders.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuildertemplates.yaml\\nks-devops/charts/s2i/crds/devops.kubesphere.io_s2iruns.yaml\\ncustomresourcedefinition.apiextensions.k8s.io/clustersteptemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/clustertemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/devopsprojects.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/gitrepositories.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/pipelineruns.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/pipelines.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/templates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/applications.gitops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibinaries.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuilders.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2ibuildertemplates.devops.kubesphere.io configured\\ncustomresourcedefinition.apiextensions.k8s.io/s2iruns.devops.kubesphere.io configured\", \"stdout_lines\": [\"ks-devops/Chart.yaml\", \"ks-devops/values.yaml\", \"ks-devops/templates/NOTES.txt\", \"ks-devops/templates/_helpers.tpl\", \"ks-devops/templates/cluster-step-templates.yaml\", \"ks-devops/templates/cluster-template-ci.yaml\", \"ks-devops/templates/cluster-template-cicd.yaml\", \"ks-devops/templates/cluster-template-golang.yaml\", \"ks-devops/templates/cluster-template-maven.yaml\", \"ks-devops/templates/cluster-template-nodejs.yaml\", \"ks-devops/templates/config.yaml\", \"ks-devops/templates/cronjob-gc.yaml\", \"ks-devops/templates/deployment-apiserver.yaml\", \"ks-devops/templates/deployment-controller.yaml\", \"ks-devops/templates/jenkins-agent-config.yaml\", \"ks-devops/templates/service-apiserver.yaml\", \"ks-devops/templates/serviceaccount.yaml\", \"ks-devops/templates/tests/test-connection.yaml\", \"ks-devops/.helmignore\", \"ks-devops/README.md\", \"ks-devops/crds/devops.kubesphere.io_clustersteptemplates.yaml\", \"ks-devops/crds/devops.kubesphere.io_clustertemplates.yaml\", \"ks-devops/crds/devops.kubesphere.io_devopsprojects.yaml\", \"ks-devops/crds/devops.kubesphere.io_gitrepositories.yaml\", \"ks-devops/crds/devops.kubesphere.io_pipelineruns.yaml\", \"ks-devops/crds/devops.kubesphere.io_pipelines.yaml\", \"ks-devops/crds/devops.kubesphere.io_templates.yaml\", \"ks-devops/crds/gitops.kubesphere.io_applications.yaml\", \"ks-devops/charts/jenkins/Chart.yaml\", \"ks-devops/charts/jenkins/values.yaml\", \"ks-devops/charts/jenkins/templates/NOTES.txt\", \"ks-devops/charts/jenkins/templates/_helpers.tpl\", \"ks-devops/charts/jenkins/templates/config.yaml\", \"ks-devops/charts/jenkins/templates/home-pvc.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-agent-config.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-agent-svc.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-casc-config.yml\", \"ks-devops/charts/jenkins/templates/jenkins-master-deployment.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-master-networkpolicy.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-master-statefulset.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-master-svc.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-test.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-worker-limitrange.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-worker-namespace.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-worker-namespacequota.yaml\", \"ks-devops/charts/jenkins/templates/jenkins-worker-rbac.yaml\", \"ks-devops/charts/jenkins/templates/jobs.yaml\", \"ks-devops/charts/jenkins/templates/prometheus-prometheusrule.yaml\", \"ks-devops/charts/jenkins/templates/prometheus-servicemonitor.yaml\", \"ks-devops/charts/jenkins/templates/rbac.yaml\", \"ks-devops/charts/jenkins/templates/secret.yaml\", \"ks-devops/charts/jenkins/templates/service-account.yaml\", \"ks-devops/charts/jenkins/.helmignore\", \"ks-devops/charts/jenkins/README.md\", \"ks-devops/charts/s2i/Chart.yaml\", \"ks-devops/charts/s2i/values.yaml\", \"ks-devops/charts/s2i/templates/NOTES.txt\", \"ks-devops/charts/s2i/templates/_helpers.tpl\", \"ks-devops/charts/s2i/templates/binary.yaml\", \"ks-devops/charts/s2i/templates/java.yaml\", \"ks-devops/charts/s2i/templates/nodejs.yaml\", \"ks-devops/charts/s2i/templates/operator.yaml\", \"ks-devops/charts/s2i/templates/prometheus-servicemonitor.yaml\", \"ks-devops/charts/s2i/templates/python.yaml\", \"ks-devops/charts/s2i/templates/tests/.gitkeep\", \"ks-devops/charts/s2i/templates/tomcat.yaml\", \"ks-devops/charts/s2i/.helmignore\", \"ks-devops/charts/s2i/README.md\", \"ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibinaries.yaml\", \"ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuilders.yaml\", \"ks-devops/charts/s2i/crds/devops.kubesphere.io_s2ibuildertemplates.yaml\", \"ks-devops/charts/s2i/crds/devops.kubesphere.io_s2iruns.yaml\", \"customresourcedefinition.apiextensions.k8s.io/clustersteptemplates.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/clustertemplates.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/devopsprojects.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/gitrepositories.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/pipelineruns.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/pipelines.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/templates.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/applications.gitops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/s2ibinaries.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/s2ibuilders.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/s2ibuildertemplates.devops.kubesphere.io configured\", \"customresourcedefinition.apiextensions.k8s.io/s2iruns.devops.kubesphere.io configured\"]}",
  "uuid": "a1c23ee9-6de8-4aad-9eaa-dac48edb582a"

@akinmail
Copy link

Any updates here, i keep getting same error as well

@akinmail
Copy link

This is the main error

"Error: UPGRADE FAILED: cannot patch \"binary\" with kind S2iBuilderTemplate: Internal error occurred: failed calling webhook \"s2ibuildertemplate.kb.io\": failed to call webhook: Post \"https://webhook-server-service.kubesphere-devops-system.svc:443/validate-devops-kubesphere-io-v1alpha1-s2ibuildertemplate?timeout=10s\": x509: certificate has expired or is not yet valid: current time 2024-03-06T12:17:25Z is after 2024-02-14T06:08:48Z",

@akinmail
Copy link

Here is the solution

#6047 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants