iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
1
Cloud Native

從零開始建立自動化發佈的流水線系列 第 10

10. 持續整合 - Jenkins on Azure(上)

最新內容已更新至 Blog: 使用 Jenkins/Azure Pipeline 進行持續整合

Eric: 前面介紹完 Travis CI,雖然容易上手,可惜只支援 GitHub。接下來,我們來聊聊最多人使用的 Jenkins。

吉米: Jenkins 有聽其他人提起過,不過一直沒有放在心上。但我記得 Jenkins 的設定有點復雜。而且,我是不是要再另外準備一台電腦,提供 Jenkins 使用?

Eric: 放心,這點我有想到。所以在說 Jenkins 之前,先跟你介紹一下 Azure 端服務平台。


Azure 簡介

近年來,常常聽到雲端運算這名詞,但到底怎麼才可以稱之為雲端運算呢?

依據美國國家技術標準局( National Institute of Standards and Technology, NIST) 所定義的 雲端運算,它具有 五大特性三種服務、以及 四種部署模式

五大特性

  • 自助式隨需服務(On-demand self-service)

    客戶可以依其需求索取計算資源(例如伺服器或儲存空間),且整個過程是單方面自動化的,無須與資源提供者互動。

  • 廣泛網路接取(Broad network access)

    服務是經由網路提供,且有標準機制能讓不同的客戶端平台(如智慧型手機及筆電等)都可以使用。

  • 共享資源池(Resource pooling)

    服務者所提供的計算資源,例如儲存空間、網路頻寬、計算能力、虛擬機器數量等,可類比為一個大水池,能隨時依需要(重新)分配給不同平台的多個使用者。使用者不需了解資源的實體位置,只要有抽象概念即可(如資源是在哪個國家或哪個資料中心)

  • 快速的彈性(Rapid elasticity)

    計算資源不僅可以快速且有彈性地被提供或釋放,且對客戶而言,資源是取之不盡且可以恣意購買的。

  • 可量測的服務(Measured service)

    計算資源可依其所提供的服務特性被自動控管及最佳化。提供者與使用者雙方都可透明地監控資源使用情形。

三種服務

  • 基礎架構即服務 (IaaS)
  • 平台即服務 (PaaS)
  • 軟體即服務 (SaaS)

四種部署模式

  • 公用雲
  • 私有雲
  • 社群雲
  • 混合雲

Azure 是 Microsoft 近年來,大力推行的公有雲端服務平台。它提供了多種服務,讓用使用者自行選擇、組合與運用。

Azure

( 圖片來源: Azure 官網)

Azure 發展致今,服務內容己經横跨 運算資料服務應用程式服務儲存網路 等類型。

為了在將 JenKins 掛在 Azure 上,因此,採用 Azure 的 Linux 虛擬機器

index

目前 Azure 為了讓更多人使用與體驗,提供 免費帳戶 讓大家有機會嘗試 Azure 豐富的服務內容。

為了確保帳戶的有效性,在申請免費帳戶時,必需經過信用卡驗證的關卡。

jenkins_index

Jenkins 是目前擁有眾多使用者的 CI/CD 軟體。同時,它也是一個 Java 的開源專案,因此,擁有許多套件可搭配使用,以支援不同的需求。

Jenkins install in Azure

index_1

在進入 Azure 的畫面後,直接到 Marketplace 中,找到 Jenkins 進行安裝。

market

接下來就是進行一連續的設定動作。

筆者特別把建立過程中,遇到的問題,跟大家分享一下。

cloud_shell

在 Linux 虛擬機器設定的步驟中,採用 SSH 公開金鑰 保護的機制。

筆者建立金鑰的方式,是使用 Azure 的 Cloud Shell 產生 SSH 金鑰。

ssh-keygen

再從產生出來的金鑰中,取出公鑰。

cat xxxxxxx.pub

domain name

接著,在進行網路相關設定時,Domain Name 有進行規則運算式的驗證,要注意一下。

全部都設定完成後,就是等 Azure 完成部署。

building


Jenkins 設定

vm

我們可以從虛擬機器中的 DNS 名稱,看到 Jenkins 所在的網站。

連到該網址後,因為伺服器是採用 SSH 金鑰的認證,所以無法直接使用網站。

圖片20181026_022330

依指示,在本機端輸入 SSH 指令

ssh -L 127.0.0.1:8080:localhost:8080 username@domainname.eastus.cloudapp.azure.com

username: 設定時,所輸入的名稱。

domainname: 虛擬機器網路設定時,所輸入的 domain name。

ssh_fail

結果,訊息回傳 Permission denied (publickey) 的錯誤。

因為 Cloud Shell 產生出來的金鑰,儲存在 Azure 空間中,但本機端沒有金鑰資訊。資訊不對等,自然就會發生錯誤。

只要將 Azure 中的金鑰,下載放到本機端的 .ssh 資料夾中,就可以順利動作。

ssh_success

接下來,就可以從 http://localhost:8080 進入 Jenkins。不過第一次登入,一定要進行 Unlock 的動作。

Jenkins_First

指 Jenkins 指示,輸入指令,就可以取回密碼,完成 Jenkins 的初始設定。

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkns_working

看到這個畫面,就大功告成,完成安裝。


Eric: 是不是比想像中的容易。

吉米: 對啊,沒有想到 Microsoft 還有專門介紹如何在 Azure 上 架設 Jenkins。

Eric: 我們己經順利的在 Azure 上架設 Jenkins,接下來,我們要開始將 Jenkins 與 GitHub、BitBucket、Azure DevOps 上的 repository 串接起來。

<< 待續 >>


延伸閱讀

  1. Mircosoft Azure, Azure 上的 Jenkins
  2. 雲端運算定義與範疇
  3. hungys, 認識 Microsoft Azure

上一篇
09. 持續整合 - 僅支援 GitHub 的 Travis CI
下一篇
11. 持續整合 - Jenkins on Azure(中)
系列文
從零開始建立自動化發佈的流水線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言