在 ABAP 技術棧裡實施 Continuous Integration 的一些挑戰
持續整合(Continuous Integration)是一個術語,關於向開發人員提供每次更改的反饋,反饋必須可靠並及時提供。
無論何時儲存開發、提交或其他任何東西,都可能發生更改,這完全取決於開發環境。開發人員需要這些資訊來確定是否可以將更改推送給更廣泛的受眾,比如將應用交付給 Quality Engineer 進行更高維度的測試。
同樣,如何將開發部署到 CI 系統也是一個部署主題。 可以使用 ABAP 經典傳輸系統設定以下場景。
CI pipeline 可能包含下列元素:
- Code Inspector / ATC
- Coverage results
- Unit tests
- Integration tests
- eCATT
- UI tests
- Performance tests
- Metrics
最基礎的傳輸場景
讓我們採用開發、測試和生產的通用設定。 開發人員在開發系統中進行開發,測試系統用於手動測試。
假設:所有組織都需要進行手動探索性測試,即使所有測試都是自動化的,QAS 系統也不能報廢。
對於開發人員所做的每項更改,更改都會部署到 QAS 並執行 CI。 報告結果後,更改將恢復。
對於 ABAP 系統,很難對物件進行適當的回滾。 單元和整合測試可能會更改系統中的資料(它們不應該),因此需要完整的資料庫回滾才能獲得完全可靠的結果。
這意味著系統不能同時用於手動測試,因為開發人員所做的每一次更改都會更改系統。 或者,為 CI 分配特定的時隙,為手動測試分配其他一些時隙。
總而言之,這最終以打破 QAS 系統的自動化過程結束,而不是通過自動化來避免錯誤。
因此,為了不干擾 QAS 系統中的手動測試,CI 執行可以移動到不同的伺服器。 CI在CIS系統中執行,在QAS中進行手動測試,
要在 ABAP 裡實施 CI 不是一件容易的事情,需要在成本、可靠性、速度、複雜性等方面做出明智的選擇。它們對開發過程和基礎設施有很大的影響。
完全支援持續整合不僅僅是讓 pipeline 獲得一些結果,這道理就像簡單地將程式碼放入 git 進行託管遠遠不意味著就等於 devops.
ABAP 容器化是完全支援 CI 所必需的,沒有它就不可能完全支援持續整合。