日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构

發(fā)布時間:2025/3/15 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

若要將應(yīng)用程序開發(fā)的生成和測試階段自動化,可以使用持續(xù)集成和部署 (CI/CD) 管道。 本教程介紹如何在 Azure VM 上創(chuàng)建 CI/CD 管道,包括如何:

  • 創(chuàng)建 Jenkins VM
  • 安裝并配置 Jenkins
  • 創(chuàng)建 GitHub 與 Jenkins 之間的 Webhook 集成
  • 通過 GitHub 提交創(chuàng)建并觸發(fā) Jenkins 生成作業(yè)
  • 創(chuàng)建應(yīng)用的 Docker 映像
  • 驗證 GitHub 提交是否生成新的 Docker 映像并更新正在運行的應(yīng)用

Note

在 Azure 中國區(qū)使用 Azure CLI 2.0 之前,請先運行?az cloud set -n AzureChinaCloud?來改變云環(huán)境。如果想切回國際版 Azure,請再次運行?az cloud set -n AzureCloud。

如果選擇在本地安裝并使用 CLI,本教程要求運行 Azure CLI 2.0.4 或更高版本。 運行?az --version?即可查找版本。 如果需要進行安裝或升級,請參閱安裝 Azure CLI 2.0。

創(chuàng)建 Jenkins 實例

在有關(guān)如何在首次啟動時自定義 Linux 虛擬機的上一個教程中,你已了解如何使用 cloud-init 自動執(zhí)行 VM 自定義。 本教程使用 cloud-init 文件在 VM 上安裝 Jenkins 和 Docker。

在當(dāng)前 shell 中,創(chuàng)建名為“cloud-init.txt”的文件并粘貼下面的配置。 請確保已正確復(fù)制整個 cloud-init 文件,尤其是第一行:

yaml復(fù)制 #cloud-config package_upgrade: true write_files: - path: /etc/systemd/system/docker.service.d/docker.conf content: | [Service] ExecStart= ExecStart=/usr/bin/dockerd - path: /etc/docker/daemon.json content: | { "hosts": ["fd://","tcp://127.0.0.1:2375"] } runcmd: - wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add - - sh -c 'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' - apt-get update && apt-get install jenkins -y - curl -sSL https://get.docker.com/ | sh - usermod -aG docker azureuser - usermod -aG docker jenkins - service jenkins restart

Note

在 Azure 中國區(qū)使用 Azure CLI 2.0 之前,請先運行?az cloud set -n AzureChinaCloud?來改變云環(huán)境。如果想切回國際版 Azure,請再次運行?az cloud set -n AzureCloud。

使用?az group create?創(chuàng)建資源組,然后才能創(chuàng)建 VM。 以下示例在?chinaeast?位置創(chuàng)建名為?myResourceGroupJenkins?的資源組:

Azure CLI復(fù)制 az group create --name myResourceGroupJenkins --location chinaeast

現(xiàn)在,請使用?az vm create?創(chuàng)建 VM。 使用?--custom-data?參數(shù)傳入 cloud-init 配置文件。 如果已將?cloud-init-jenkins.txt?文件保存在現(xiàn)有工作目錄的外部,請?zhí)峁┰撐募耐暾窂健?/p> Azure CLI復(fù)制 az vm create --resource-group myResourceGroupJenkins \ --name myVM \ --image UbuntuLTS \ --admin-username azureuser \ --generate-ssh-keys \ --custom-data cloud-init-jenkins.txt

創(chuàng)建并配置 VM 需要幾分鐘的時間。

若要允許 Web 流量抵達 VM,請使用?az vm open-port?為 Jenkins 流量打開端口?8080,并為用于運行示例應(yīng)用的 Node.js 應(yīng)用打開端口?1337:

Azure CLI復(fù)制 az vm open-port --resource-group myResourceGroupJenkins --name myVM --port 8080 --priority 1001 az vm open-port --resource-group myResourceGroupJenkins --name myVM --port 1337 --priority 1002

配置 Jenkins

若要訪問 Jenkins 實例,請獲取 VM 的公共 IP 地址:

Azure CLI復(fù)制 az vm show --resource-group myResourceGroupJenkins --name myVM -d --query [publicIps] --o tsv

出于安全考慮,需要輸入 VM 上某個文本文件中存儲的初始管理員密碼來啟動 Jenkins 安裝。 使用上一步驟中獲取的公共 IP 地址通過 SSH 連接到 VM:

bash復(fù)制 ssh azureuser@<publicIps>

查看并復(fù)制 Jenkins 安裝程序的?initialAdminPassword:

bash復(fù)制 sudo cat /var/lib/jenkins/secrets/initialAdminPassword

如果文件尚不可用,請再等待幾分鐘,以便 cloud-init 完成 Jenkins 和 Docker 安裝。

現(xiàn)在,請打開 Web 瀏覽器并轉(zhuǎn)到?http://<publicIps>:8080。 按如下所示完成初始 Jenkins 安裝:

  • 輸入在上一步驟從 VM 獲取的?initialAdminPassword。
  • 選擇“選擇要安裝的插件”
  • 在頂部文本框中搜索 GitHub,選擇“GitHub 插件”,然后選擇“安裝”
  • 若要創(chuàng)建 Jenkins 用戶帳戶,請根據(jù)需要填寫表單。 從安全角度講,應(yīng)該創(chuàng)建這第一個 Jenkins 用戶,而不要繼續(xù)使用默認(rèn)管理員帳戶。
  • 完成后,選擇“開始使用 Jenkins”

創(chuàng)建 GitHub Webhook

若要配置與 GitHub 的集成,請從 Azure 示例存儲庫中打開?Node.js Hello World 示例應(yīng)用。 若要將存儲庫分叉到自己的 GitHub 帳戶,請選擇右上角的“分叉”按鈕。

在創(chuàng)建的分叉中創(chuàng)建 Webhook:

  • 選擇“設(shè)置”,然后在左側(cè)選擇“集成和服務(wù)”。
  • 選擇“添加服務(wù)”,并在篩選框中輸入 Jenkins。
  • 選擇“Jenkins (GitHub 插件)”
  • 對于“Jenkins 掛鉤 URL”,請輸入?http://<publicIps>:8080/github-webhook/。 請確保包含尾部的 /
  • 選擇“添加服務(wù)”

創(chuàng)建 Jenkins 作業(yè)

若要讓 Jenkins 對 GitHub 中的事件(例如提交代碼)做出響應(yīng),請創(chuàng)建 Jenkins 作業(yè)。

在 Jenkins 網(wǎng)站中的主頁上,選擇“創(chuàng)建新作業(yè)”:

  • 輸入?HelloWorld?作為作業(yè)名稱。 選擇“自由風(fēng)格項目”,然后選擇“確定”。
  • 在“常規(guī)”部分下面,選擇“GitHub”項目并輸入分叉的存儲庫的 URL,例如?https://github.com/iainfoulds/nodejs-docs-hello-world
  • 在“源代碼管理”部分下面,選擇“Git”并輸入分叉的存儲庫?.git?的 URL,例如?https://github.com/iainfoulds/nodejs-docs-hello-world.git
  • 在“生成觸發(fā)器”部分下面,選擇“用于 GITscm 輪詢的 GitHub 掛鉤觸發(fā)器”。
  • 在“生成”部分下面,選擇“添加生成步驟”。 選擇“執(zhí)行 shell”,然后在命令窗口中輸入?echo "Testing"。
  • 選擇作業(yè)窗口底部的“保存”。

測試 GitHub 集成

若要測試 GitHub 與 Jenkins 的集成,請?zhí)峤环植嬷械母摹?/p>

返回到 GitHub Web UI,選擇分叉的存儲庫,然后選擇“index.js”文件。 選擇鉛筆圖標(biāo)編輯該文件,使第 6 行的內(nèi)容如下:

NodeJS復(fù)制 response.end("Hello World!");

若要提交更改,請選擇底部的“提交更改”按鈕。

在 Jenkins 中,作業(yè)頁左下角的“生成歷史記錄”部分下面啟動了一個新的生成。 選擇生成號鏈接,并選擇左側(cè)的“控制臺輸出”。 從 GitHub 提取代碼以及生成操作將消息?Testing?輸出到控制臺時,可以查看 Jenkins 執(zhí)行的步驟。 每次在 GitHub 中提交內(nèi)容時,Webhook 將以此方式訪問 Jenkins 并觸發(fā)新的生成。

定義 Docker 生成映像

為了查看基于 GitHub 提交內(nèi)容運行的 Node.js 應(yīng)用,讓我們生成一個 Docker 映像用于運行該應(yīng)用。 該映像是從定義如何配置運行應(yīng)用的容器的 Dockerfile 生成的。

通過 SSH 連接到 VM 后,請切換到根據(jù)上一步驟創(chuàng)建的作業(yè)命名的 Jenkins 工作區(qū)目錄。 在本示例中,該目錄名為?HelloWorld。

bash復(fù)制 cd /var/lib/jenkins/workspace/HelloWorld

使用?sudo sensible-editor Dockerfile?在此工作區(qū)目錄中創(chuàng)建一個文件并粘貼以下內(nèi)容。 請確保已正確復(fù)制整個 Dockerfile,尤其是第一行:

yaml復(fù)制 FROM node:alpineEXPOSE 1337WORKDIR /var/www COPY package.json /var/www/ RUN npm install COPY index.js /var/www/

此 Dockerfile 使用基本 Node.js 映像(該映像使用 Alpine Linux),公開運行 Hello World 應(yīng)用的端口 1337,然后復(fù)制應(yīng)用文件并初始化應(yīng)用。

創(chuàng)建 Jenkins 生成規(guī)則

在上一步驟中,已創(chuàng)建一個可將消息輸出到控制臺的基本 Jenkins 生成規(guī)則。 讓我們創(chuàng)建生成步驟以使用 Dockerfile 并運行應(yīng)用。

返回到 Jenkins 實例,選擇上一步驟創(chuàng)建的作業(yè)。 選擇左側(cè)的“配置”,并向下滾動到“生成”部分:

  • 刪除現(xiàn)有的?echo "Test"?生成步驟。 選擇現(xiàn)有生成步驟框右上角的紅叉。
  • 選擇“添加生成步驟”,然后選擇“執(zhí)行 shell”
  • 在“命令”框中輸入以下 Docker 命令,然后選擇“保存”:

    bash復(fù)制 docker build --tag helloworld:$BUILD_NUMBER . docker stop helloworld && docker rm helloworld docker run --name helloworld -p 1337:1337 helloworld:$BUILD_NUMBER node /var/www/index.js &

Docker 生成步驟將創(chuàng)建一個映像,并使用 Jenkins 生成編號對其進行標(biāo)記,以便可以維護映像的歷史記錄。 運行應(yīng)用的任何現(xiàn)有容器將會停止,隨后被刪除。 然后,將使用該映像啟動新的容器,并基于 GitHub 中的最新提交內(nèi)容運行 Node.js 應(yīng)用。

測試管道

若要查看整個管道的工作狀況,請再次在分叉的 GitHub 存儲庫中編輯 index.js 文件,并選擇“提交更改”。 將會基于 GitHub 的 Webhook 在 Jenkins 中啟動新作業(yè)。 創(chuàng)建 Docker 映像并在新容器中啟動應(yīng)用需要幾秒鐘時間。

如果需要,請再次獲取 VM 的公共 IP 地址:

Azure CLI復(fù)制 az vm show --resource-group myResourceGroupJenkins --name myVM -d --query [publicIps] --o tsv

打開 Web 瀏覽器并輸入?http://<publicIps>:1337。 將顯示你的 Node.js 應(yīng)用,其中反映了 GitHub 分叉中的最新提交內(nèi)容,如下所示:

現(xiàn)在,請再次在 GitHub 中編輯?index.js,然后提交更改。 等待幾秒鐘讓作業(yè)在 Jenkins 中完成,然后刷新 Web 瀏覽器查看新容器中運行的應(yīng)用的更新版本,如下所示:

后續(xù)步驟

在本教程中,你已將 GitHub 配置為每次提交代碼后運行 Jenkins 生成作業(yè),然后部署了一個 Docker 容器用于測試應(yīng)用。 你已了解如何:

  • 創(chuàng)建 Jenkins VM
  • 安裝并配置 Jenkins
  • 創(chuàng)建 GitHub 與 Jenkins 之間的 Webhook 集成
  • 通過 GitHub 提交創(chuàng)建并觸發(fā) Jenkins 生成作業(yè)
  • 創(chuàng)建應(yīng)用的 Docker 映像
  • 驗證 GitHub 提交是否生成新的 Docker 映像并更新正在運行的應(yīng)用

轉(zhuǎn)到下一教程,詳細了解如何將 Jenkins 與 Visual Studio Team Services 集成。

使用 Jenkin? ? ? ? ?

立即訪問http://market.azure.cn

轉(zhuǎn)載于:https://www.cnblogs.com/zangdalei/p/7845310.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的如何使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。