最近在標准運維上進行了原子開發,下面記錄一下開發的具體步驟以及流程的創建步驟,此處以tsf相關原子為例
一、創建Django App ,在項目根目錄下執行:
Django-admin startapp custom_atoms
並在新建App目錄下,創建components/collections目錄,在此目錄下創建相應的.py文件,進行原子后端代碼開發。

二、將上述創建的custom_atoms,加入到conf/settings_custom.py中INSTALLED_APPS_CUSTOM里。

三、配置ESB,在blueking/component/apis中,加入自定義接入的ESB API文件。(該步驟不是必須的,有些原子不需要ESB的調用,因此也不需要配置)
ESB配置步驟請參考:https://www.cnblogs.com/wangyingblock/p/11175159.html

在blueking/component/collections.py中加入上述創建的ESB類,否則不能在App中使用該ESB API。

四、原子后台開發
1、后台執行邏輯

class PushFileDataService(Service):原子后台執行邏輯
def execute(self, data, parent_data):前端參數獲取、API參數組裝、結果解析、結果輸出。
注意:
1、data是前端數據,對應於前端表單輸入,可以用get_one_of_inputs獲取。
2、parent_data是任務的公共參數,executor為執行者,bk_cc_id為所屬業務ID。具體可以參考gcloud/taskflow3/utils.py
3、執行完成后可以使用set_outputs寫入返回值和異常信息(ex_data)
4、return True 表述原子執行成功,False表示原子執行失敗
2、輸出參數格式化

def outputs_format(self):輸出參數格式化。type有str、int、dict、list等。對應於set_outputs的返回值。
3、原子定義

name:原子名稱
code: 唯一編碼
bound_service: 綁定后台邏輯代碼
form: 前端表單定義文件路徑
五、原子前端開發
1、創建js文件。在static/下創建/custom_atoms/tsf文件夾,並創建對應的js文件

2、js文件內容編寫

其中tsf_get_tsf_status 對應於后台的code。tag_code為參數名,全局唯一,用於后台取值。type前端表單類型,attrs對應type的屬性設置。
3、提交代碼
執行 python manage.py collectstatic –noinput,然后就可以提交代碼並打包發布了。
python manage.py collectstatic:把靜態文件收集到 STATIC_ROOT中
標准運維部署需要注意:
1、刪除本地運行產生的pyc文件
2、使用mac打包時關閉自動生成隱藏文件的功能
六、標准運維流程創建
1、拖出所需的原子

2、按照流程,連接原子

3、填寫所需參數並設置基礎屬性

4、全局變量的使用
場景一:流程中第二個原子所需參數是第一個原子的輸出參數
方法:將第一個原子的輸出參數☑️,如上圖所示,會生成一個全局變量,在第二個原子中使用

使用

場景二:同一個參數,在流程中多次使用如:部署組ID
解決方法:手動創建一個全局變量,並使用

將其他原子所需部署組ID也替換成上述全局變量。
5、執行流程
流程創建完畢,點擊保存,進入列表頁,會看到剛才創建的流程,點擊‘新建任務’會執行該流程

按照步驟運行
第一步

第二步:填寫所需參數

第三步:點擊執行

5、查看運行結果:點擊原子即可查看

