1. 程式人生 > 其它 >CheckBox Navigation(十/十一)Side-loading Providers & Checkbox Configs

CheckBox Navigation(十/十一)Side-loading Providers & Checkbox Configs

技術標籤:Checkbox Ubuntuubuntucheckbox

Checkbox

CheckBox Navigation 10/11

Side-loading Providers

如果您希望建立一個新的作業,或者調整一個現有的作業,而不需要重新打包提供程式或snap,那麼您可以使用側載入的提供程式。

如果路徑/var/tmp/checkbox-providers存在,Checkbox將從該路徑載入提供程式。
如果任何給定的提供程式與現有的(安裝或使用相同的snap提供程式提供的)提供程式具有相同的名稱空間和名稱,則只使用側載入的提供程式。

您可以根據需要重寫任意多個提供程式。
附帶載入的新提供程式的數量也沒有限制。

Note

側載入是在開發新任務時快速迭代的一種方法。不要在生產中使用它。還請記住,在完成開發後清空(或刪除)~/provider目錄,這樣就不會出現令人討厭的意外情況。如果使用了側載供應商,checkbox將不會向認證網站提交任何報告。

1. Example scenario

目標:更改stress/cpu_stress s_ng_test作業的執行時,而不需要重新構建snap。

請確保安裝了checkbox-snappy snap。
它提供以下提供者:

plainbox-provider-checkbox
plainbox-provider-docker
2017.com.canonical.se:engineering-tests
plainbox-provider-ipdt
plainbox-provider-resource-generic
plainbox-provider-snappy
plainbox-provider-sru
plainbox-provider-tpm2

建立checkbox-providers目錄到/var/tmp/:

mkdir /var/tmp/checkbox-providers
Note

您可能沒有/var/tmp/的寫許可權。您可能想要用sudo執行mkdir,然後再chown該目錄

克隆plainbox-provider-checkboxside-loaded目錄:

cd /var/tmp/checkbox-providers
git clone --depth=1 http://git.launchpad.net/plainbox-provider-checkbox
Tip

-depth =1告訴git不要下載repo的所有歷史記錄

當啟動時,checkbox應該顯示以下警告:

$ checkbox-snappy.checkbox-cli
WARNING:plainbox.session.assistant:Using side-loaded provider:
com.canonical.certification:plainbox-provider-checkbox

讓我們編輯一下工作定義:

$ vim /var/tmp/checkbox-providers/plainbox-provider-checkbox/units/stress/jobs.pxu

現在讓我們執行checkbox:

$ checkbox-snappy.checkbox-cli

應該使用最近編輯的定義。

Checkbox Configs

1. Configuration values resolution order

配置檔案的搜尋目錄為:·/etc/xdg/ ~/.config/·

1)Invoking checkbox-cli (without launcher)

假設配置檔名是checkbox.conf

2)Invoking launcher

要查詢的檔名是使用啟動器中的[config]部分中的config_filename變數指定的。如果不存在,則使用checkbox.conf

注意,如果同一個配置變數在多個地方定義,其值解析如下:

1. 配置檔案從`~/.config`
2. 正在呼叫啟動程式(只有新的語法啟動程式)
3. 配置檔案`/etc/xdg`

2. Configs with Checkbox Remote

當checkboxSlave啟動時,它會在本地checkbox會話查詢的相同位置(在Slave端)查詢配置檔案。
如果主伺服器使用一個啟動器,那麼該啟動器中的值優先於從伺服器端的config中的值。
Example:

# checkbox.conf on the Slave

[environment]
FOO = 12
BAR = 6
# Launcher used by the master

# (...)
[environment]
FOO = 42

執行echo $FOO $BAR的checkbox作業將列印42 6

注意,BAR仍然可用,即使主用啟動器沒有定義它。