檢查Tcl執行階段並對有上限的指令碼求值

讀取Tcl執行階段描述元與已簽署的就緒記錄,然後對來自stdin的一個有上限的指令碼求值,並檢查其回條。

在Linux上使用Altifigence CLI 0.1.9,讀取已安裝的Tcl執行階段描述元,確認已簽署的執行階段就緒記錄,並透過已安裝的執行器對一個有上限的Tcl指令碼求值。

讀取執行階段描述元

請以一般使用者身分執行命令。每個查詢都會根據封裝的alti-tcl描述元回應並輸出JSON。

alti tcl capabilities
alti tcl environment
alti tcl commands

alti tcl commands會列出已註冊的產品命令及每個命令的可用性。請將其輸出與您的指令碼一併保留。

檢查已簽署的執行階段

讀取已簽署的執行階段就緒記錄。此查詢不會執行Tcl。

set -euo pipefail
WORK="$(mktemp -d)"
alti tcl readiness > "$WORK/readiness.json"
jq '{schemaVersion, installedQualified, cryptographicVerifierLinked, blocker}' \
  "$WORK/readiness.json"

對指令碼求值之前,請確認結束狀態為0且具有下列值:

{
  "schemaVersion": "altifigence.eda-tcl-runtime-component-readiness.v1",
  "installedQualified": true,
  "cryptographicVerifierLinked": true,
  "blocker": null
}

對指令碼求值

透過stdin傳入指令碼並儲存回條:

printf '%s' 'expr {6 * 7}' | alti --json tcl evaluate > "$WORK/tcl-evaluate.json"
jq '{schema, status, inputBytes, result, resultBytes, resultArtifactId, failure}' \
  "$WORK/tcl-evaluate.json"

請確認結束狀態為0。所選回條欄位如下:

{
  "schema": "altifigence.cli.tcl-evaluation.v1",
  "status": "succeeded",
  "inputBytes": 12,
  "result": "42",
  "resultBytes": 2,
  "resultArtifactId": "tcl-evaluation",
  "failure": null
}

回條還包含inputSha256、jobSha256、resultArtifactSha256與provenance。在provenance中,resolved_placement為local,resolved_device_class為cpu,backend_id為embedded-tcl。

未使用--json時,命令會將結果寫入stdout,並將一行摘要寫入stderr:

printf '%s' 'expr {6 * 7}' | alti tcl evaluate
42
[succeeded] tcl.evaluate input=12 sha256=e96de7a3a920d7cd5aafa8c86630028d97a0fb0dc260da2f089de12ea4214a6f artifact=tcl-evaluation

每次執行會讀取一個至多4194304位元組的指令碼。CLI會將其寫入/tmp之下的私有工作區,以1個CPU槽位、536870912位元組的記憶體與5000毫秒的實際時間上限,作為本機CPU工作執行,再從執行器讀回結果並移除該工作區。

處理求值失敗

使用--json時,請讀取回條中的failure.code與failure.message。未使用時,stderr會顯示Tcl evaluation failed:,後接代碼。

TCL_INPUT_EMPTY搭配Tcl input must not be empty.會以結束狀態2結束。請透過管線傳入非空的指令碼,然後再次執行命令。

TCL_INPUT_TOO_LARGE搭配Tcl input exceeds the 4194304-byte limit.會以結束狀態2結束。請讓指令碼維持在4194304位元組以內。

status為failed、failure.code為eda-tcl.local-runner.unsupported-command且訊息為local Tcl evaluation failed within the requested boundary時,會以結束狀態1結束。對於產品命令,請從alti tcl commands選擇availability為available的項目,例如::alti::echo或::alti::capabilities。

TCL_INSTALLED_RUNNER_UNAVAILABLE搭配The installed qualified Tcl runner is unavailable.會以結束狀態127結束。請執行0.1.9啟動程式所安裝的alti,然後再次檢查alti tcl readiness。

CLI 引擎指令