2019 DevOps 必備面試題——持續整合篇

CODING發表於2019-09-09

原文地址:medium.com/edureka/dev…
原文作者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯

Q1:什麼是持續整合?

我會建議你以持續整合的最小定義作為開始來回答這個問題。這是一種研發實踐,需要開發人員每天多次將程式碼整合到共享程式碼庫中。然後通過自動構建來驗證每次程式碼的修改,以便團隊儘早發現問題。

我建議你解釋一下在以前的工作中是如何實施持續整合的,可以參考以下示例:

圖片

在上圖中: 1、開發人員將程式碼 clone 至私有工作區。 2、完成編碼後,他們將更改提交至共享程式碼庫中(版本控制倉庫)。 3、CI 伺服器監視程式碼倉庫並在發生更改時檢出更改。 4、緊接著 CI 伺服器提取這些變更進行構建、執行單元以及整合測試。 5、CI 伺服器會立即告知團隊構建成功與否。 6、如果構建失敗,CI 伺服器會向團隊傳送告警。 7、研發團隊將盡快解決問題。 8、這個過程會不斷重複。

Q2:為什麼研發團隊需要開發與測試的持續整合?

對於這個答案,你應該關注持續整合的需求。我建議你在回答中提到以下解釋: 開發和測試的持續整合通過在完成所有開發之後替換傳統的測試實踐,來提高軟體質量並減少交付耗時。它允許開發團隊儘早檢測和定位問題,因為開發人員需要每天多次(或更頻繁地)將程式碼整合到程式碼倉庫中,然後自動驗證每次整合。

Q3:持續整合的成功因素有哪些?

在這裡,你必須提到持續整合的要求,可以在回答中包含以下幾點:

  • 維護程式碼倉庫
  • 自動化構建
  • 讓構建自我檢測
  • 每個人每天都確保已將修改提交至基線
  • 保持快速構建
  • 在生產環境的克隆環境中進行測試
  • 研發團隊可以輕鬆獲得最新的可交付成果
  • 每個人都可以看到最新構建的結果
  • 自動部署

Q4:如何將 Jenkins 從一臺伺服器遷移或者複製到另一臺伺服器?

我會通過將 jobs 目錄從舊伺服器複製到新伺服器的方式來完成這個事情。有很多種方法可以做到這一點:

  • 只需複製相應的 job 目錄,即可將 job 從一個 Jenkins 伺服器移動到另一個。
  • 通過使用其它名稱克隆 job 目錄來製作現有 job 的副本。
  • 通過重新命名目錄來重新命名現有 job。請注意,如果你更改了 job 名稱,則需要更改嘗試呼叫該重新命名 job 的所有 job 。

Q5:如何在 Jenkins 中建立備份和複製檔案?

可以很直接地回答這個問題:要建立備份。你需要做的就是定期備份 JENKINS_HOME 目錄。這包含所有構建 job 配置,從屬節點配置和構建歷史記錄。要建立 Jenkins 的備份,只需複製此目錄即可,你還可以複製 job 目錄或重新命名目錄。

Q6:如何配置 Jenkins 的 job?

關於這個答案的解決方法是首先提一下如何建立 job:轉到 Jenkins 首頁,選擇“New Job”,然後選擇“Build a free-style software project”。然後你可以設定這個自由式 job 的元素:

  • 可選的 SCM,例如原始碼所在的 CVS 或 Subversion。
  • 用於控制 Jenkins 何時執行構建的觸發器。
  • 某種構建指令碼,用於執行實際工作的構建(ant,maven,shell 指令碼,批處理檔案等)。
  • 從構建中收集資訊的可選步驟,例如歸檔製品、記錄 javadoc 和測試結果。
  • 配置構建結果通知其他人/系統的步驟,例如傳送電子郵件、即時訊息、更新問題跟蹤器等。

Q7:列舉 Jenkins 中一些有用的外掛

下面我將提到一些重要外掛:

  • Maven 2 project
  • Amazon EC2
  • HTML publisher
  • Copy artifact
  • Join
  • Green Balls

我覺得這些是最有用的外掛,你也可以新增你認為有用的外掛。但是請確保首先提到上述外掛,然後新增你自己的外掛。

Q8:如何保證 Jenkins 的安全?

  • 確保 global security 配置項已經開啟。
  • 確保用適當的外掛將 Jenkins 與企業員工目錄進行整合。
  • 確保啟用專案矩陣的許可權訪問設定。
  • 通過自定義版本控制的指令碼來自動化 Jenkins 中設定許可權/特權的過程。
  • 限制對 Jenkins 資料/資料夾的物理訪問。
  • 定期對其進行安全稽核。

點選使用 CODING
體驗 DevOps 全工具鏈敏捷研發

相關文章