Kantra 是一個 CLI,統一了 Konveyor 的分析和轉換功能。它適用於 Linux、Mac 和 Windows。
先決條件
安裝
設定(僅適用於 Mac 和 Windows)
用法
分析應用程式
轉換應用程式或 XML 規則
測試 YAML 規則
參考
行為守則
運行 kantra 需要Podman 4+ 。預設情況下,它配置為使用主機上可用的 podman 可執行檔。
儘管 kantra 主要使用 podman 進行測試,但可以使用Docker Engine 24+或Docker Desktop 4+作為替代方案。若要使用 docker,請設定環境變數CONTAINER_TOOL
指向 docker 執行檔的路徑:
導出 CONTAINER_TOOL=/usr/bin/docker
若要安裝 kantra,請下載適合您平台的可執行檔並將其新增至路徑。
注意:對於 Mac,您可能會收到「Apple 無法驗證」錯誤訊息。如果您這樣做,您可以執行xattr -d com.apple.quarantine kantra
讓 Apple 信任kantra
二進位。
前往發布頁面並下載包含適用於您的平台和架構的二進位檔案的 zip 檔案。解壓縮存檔並將其中的可執行檔新增至路徑。
取得最新(或特定/較舊)可執行檔的最簡單方法是從相應的容器映像中取得它。
如果您想要取得特定版本,請將 shell 變數kantra_version
設定為該版本,例如kantra_version=v0.4.0
。
跑步:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/kantra 。 && ${CONTAINER_TOOL:-podman} rm kantra-download
當您不在 Mac 上使用 Docker for Desktop 時(請參閱上文),您需要在執行任何 podman 命令之前啟動 podman 機器(請參閱 Mac 設定)
機器啟動後,運作:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/darwin-${kantra_version:-latest}):/usr/local/bin/darwin-坎特拉。 && ${CONTAINER_TOOL:-podman} rm kantra-download
當您不在 Windows 上使用 Docker for Desktop 時(請參閱上文),您需要在執行任何 podman 命令之前啟動 podman 機器(請參閱 Windows 設定)
機器啟動後,運作:
${CONTAINER_TOOL:-podman} cp $(${CONTAINER_TOOL:-podman} create --name kantra-download quay.io/konveyor/kantra:${kantra_version:-latest}):/usr/local/bin/windows-坎特拉。 && ${CONTAINER_TOOL:-podman} rm kantra-download
確保將可執行檔新增至
PATH
。
在 Mac 和 Windows 上,需要在執行任何命令之前啟動 podman 機器,除非您使用 Docker(適用於桌面):
在啟動 podman 機器之前,請執行:
ulimit -n 無限
初始化你的 podman 機器:
波德曼 4 :
Podman 4 需要在虛擬機器中安裝一些主機目錄:
podman machine init <vm_name> -v $HOME:$HOME -v /private/tmp:/private/tmp -v /var/folders/:/var/folders/
波德曼 5 :
Podman 5 預設掛載$HOME 、 /private/tmp和/var/folders目錄,只需初始化機器即可:
podman 機器 init <虛擬機器名稱>
如果您打算與 kantra 一起使用的輸入和/或輸出目錄位於 $HOME、/private/tmp 和 /var/folders 目錄樹之外,則除了預設目錄之外,您還應該掛載這些目錄。
增加podman資源(至少需要4G記憶體):
podman 機器集 <vm_name> --cpus 4 --記憶體 4096
初始化機器:
podman 機器 init <虛擬機器名稱>
Kantra 有三個子指令:
analyze :此子指令允許對輸入原始碼或二進位檔案執行原始碼分析。
transform :此子指令允許將 XML 規則轉換為 YAML 或在原始碼上執行 OpenRewrite 配方。
test :此子指令允許測試 YAML 規則。
分析子命令允許使用analyzer-lsp運行原始程式碼和二進位分析
若要對應用程式原始碼執行分析,請執行:
kantra 分析 --input=<路徑/來源/程式碼> --output=<路徑/輸出/目錄>
--input必須指向原始碼目錄或二進位文件, --output必須指向包含分析結果的目錄。
所有標誌:
Flags: --analyze-known-libraries analyze known open-source libraries --bulk running multiple analyze commands in bulk will result to combined static report --context-lines int number of lines of source code to include in the output for each incident (default 100) -d, --dependency-folders stringArray directory for dependencies --enable-default-rulesets run default rulesets with analysis (default true) -h, --help help for analyze --http-proxy string HTTP proxy string URL --https-proxy string HTTPS proxy string URL --incident-selector string an expression to select incidents based on custom variables. ex: (!package=io.konveyor.demo.config-utils) -i, --input string path to application source code or a binary --jaeger-endpoint string jaeger endpoint to collect traces --json-output create analysis and dependency output as json -l, --label-selector string run rules based on specified label selector expression --list-sources list rules for available migration sources --list-targets list rules for available migration targets --maven-settings string path to a custom maven settings file to use -m, --mode string analysis mode. Must be one of 'full' or 'source-only' (default "full") --no-proxy string proxy excluded URLs (relevant only with proxy) -o, --output string path to the directory for analysis output --overwrite overwrite output directory --rules stringArray filename or directory containing rule files. Use multiple times for additional rules: --rules <rule1> --rules <rule2> ... --skip-static-report do not generate static report -s, --source stringArray source technology to consider for analysis. Use multiple times for additional sources: --source <source1> --source <source2> ... -t, --target stringArray target technology to consider for analysis. Use multiple times for additional targets: --target <target1> --target <target2> ...
根據設計,kantra 支援每個 kantra 命令執行的單一應用程式分析。但是,可以使用--bulk
選項對不同的應用程式執行多個 kantra 分析命令,以獲得輸出目錄和填入所有應用程式分析報告的靜態報告。
例子:
kantra 分析 --bulk --input=<路徑/到/來源/A> --output=<路徑/到/輸出/ABC>kantra 分析 --bulk --input=<路徑/到/來源/B> - -output=<路徑/到/輸出/ABC>kantra 分析--bulk --input=<路徑/到/來源/C> --output=<路徑/到/輸出/ABC>
Transform 有兩個子指令:
openrewrite :此子指令允許在輸入原始碼上執行一個或多個可用的 OpenRewrite 配方。
Rules :此子指令允許將 Windup XML 規則轉換為analyzer-lsp YAML 格式。
openrewrite子命令允許在原始程式碼上運行 OpenRewrite 配方。
要使用 OpenRewrite 轉換應用程序,請運行:
kantra 變換 openrewrite --input=<路徑/到/來源/程式碼> --target=<exactly_one_target_from_the_list>
--target選項的值必須是可用的 OpenRewrite 配方之一。要列出所有可用的食譜,請運行:
kantra 變換 --list-targets
所有標誌:
標誌: -g, --goal 字串目標目標(預設為「dryRun」) -h, --help openrewrite 幫助 -i, --input 應用程式原始碼目錄的字串路徑 -l, --list-targets 列出所有可用的 OpenRewrite 配方 -s, --maven-settings 要使用的自訂 Maven 設定檔的字串路徑 -t, --target string 要使用的目標 openrewrite 配方。運行 --list-targets 以取得打包食譜的清單。
規則子指令允許使用windup-shim將Windup XML規則轉換為analyzer-lsp YAML規則
若要將 Windup XML 規則轉換為analyzer-lsp YAML 格式,請執行:
kantra 轉換規則 --input=<path/to/xmlrules> --output=<path/to/output/dir>
--input標誌應指向包含 XML 規則的檔案或目錄, --output應指向 YAML 規則的輸出目錄。
所有標誌:
標誌: -h, --help 規則幫助 -i, --input stringXML 規則檔或目錄的陣列路徑 -o, --output 輸出目錄的字串路徑
test子指令允許對分析器-lsp 所寫的 YAML 規則執行測試。
測試運行器的輸入將是一個或多個測試檔案和/或包含用 YAML 編寫的測試的目錄。
坎特拉測試 /path/to/a/single/tests/file.test.yaml
測試的輸出列印在控制台上。
在測試運行器文件中查看運行測試命令的不同方法
使用場景範例
使用提供者選項
YAML 規則的測試運行器
請參閱此處的 Konveyor 行為準則。