整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          端到端JAVA DEVOPS自動化項目-第3部分

          端到端JAVA DEVOPS自動化項目-第3部分

          決條件:第二部分端到端Java DevOps自動化項目

          譯自 Part-3 End-to-End Java DevOps Automation Project,作者 Naveen Kumar。

          使用 Jenkins 設(shè)置 CI/CD

          在 Jenkins 中安裝插件

          1. Eclipse Temurin 安裝程序

          • 自動安裝和配置 Eclipse Temurin JDK。
          • 安裝:
          • Jenkins 儀表板 -> 管理 Jenkins -> 管理插件 -> 可用選項卡。
          • 搜索“Eclipse Temurin Installer”并選擇它。
          • 點擊“不重啟安裝”。

          2. Pipeline Maven 集成

          • 為 Jenkins Pipeline 提供 Maven 支持。

          3. 配置文件提供程序

          • 允許您在 Jenkins 中集中定義和使用配置文件。

          4. SonarQube 掃描程序

          • 將 Jenkins 與 SonarQube 集成,用于代碼質(zhì)量和安全分析。

          5. Kubernetes CLI

          • 允許 Jenkins 使用 kubectl 與 Kubernetes 集群交互。

          6. Kubernetes

          • 將 Jenkins 與 Kubernetes 集成,允許 Jenkins 代理作為 Pod 運行。

          7. Docker

          • 使 Jenkins 能夠與 Docker 交互以構(gòu)建和管理容器。

          8. Docker Pipeline

          • 使用 Docker 特定步驟擴展 Jenkins Pipeline。

          9. Maven 集成

          • 使您的項目保持同步,并確保它們始終使用最新更新進行測試。

          在 Jenkins 服務(wù)器上安裝和配置 Trivy

          • 注意:沒有用于 Trivy 的 Jenkins 插件,因此請直接在 Jenkins 服務(wù)器上安裝它,并將其添加到您的 Jenkins Pipeline 階段。

          Trivy 安裝命令

          sudo apt-get install wget apt-transport-https gnupg lsb-release -y
          wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
          echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
          sudo apt-get update -y
          sudo apt-get install trivy -y
          trivy -v
          # Expected output: Version: 0.53.0 (or the latest version)

          全局工具配置:

          “全局工具配置”部分(以前稱為“管理 Jenkins -> 配置工具”)是您定義和管理 Jenkins 在所有作業(yè)中使用的工具的地方。這包括編譯器、構(gòu)建工具以及構(gòu)建項目所需的其它實用程序。

          創(chuàng)建 Git 憑據(jù)作為全局憑據(jù)

          使用 GitHub 用戶名作為用戶名,使用我們在第 2 部分(設(shè)置私有存儲庫時)創(chuàng)建的令牌作為密碼值

          通過全局憑證創(chuàng)建 Git 憑證:將用戶名設(shè)置為 GitHub 用戶,將密碼值設(shè)置為我們在第 2 部分(設(shè)置專用存儲庫時)創(chuàng)建的令牌。

          憑據(jù)”部分允許您管理 Jenkins 用于安全地與外部系統(tǒng)交互的憑據(jù)。憑據(jù)可以包括用戶名和密碼、SSH 密鑰、API 令牌等等。

          從這里開始,我們將開始編寫 Jenkins Pipeline 代碼,您可以從該文件獲取完整代碼:pipeline.groovy,并逐步執(zhí)行。

          Jenkins Pipeline 設(shè)置步驟:

          1. 創(chuàng)建作業(yè)名稱:BoardGame,類型為 Pipeline
          1. Enable - 丟棄舊構(gòu)建(要保留的最大構(gòu)建數(shù)=2)

          管理 Jenkins -> 系統(tǒng)

          系統(tǒng)”部分位于“管理 Jenkins”下,您可以在其中配置 Jenkins 的整體系統(tǒng)設(shè)置。這包括影響整個 Jenkins 安裝及其運行方式的設(shè)置。

          配置 SonarQube 服務(wù)器

          在 Jenkins Pipeline 中編寫 SonarQube 分析階段之前,您需要在 Jenkins 中配置 SonarQube 服務(wù)器。以下是執(zhí)行此操作的步驟:

          1. 獲取 SonarQube 服務(wù)器憑據(jù):

          轉(zhuǎn)到 SonarQube 服務(wù)器 -> 管理 -> 安全 -> 用戶 -> 令牌

          2. 在 Jenkins 中創(chuàng)建全局憑據(jù):

          3. 在 Jenkins 中配置 SonarQube 服務(wù)器:

          在 Jenkins Pipeline 中編寫 SonarQube 質(zhì)量門階段之前的步驟,

          轉(zhuǎn)到 SonarQube 服務(wù)器 -> 管理 -> 配置 -> Webhook -> 令牌

          添加 Jenkins IP:

          以下是 SonarQube 和 Jenkins 集成完整架構(gòu)的參考:

          配置 Nexus

          在編寫 發(fā)布到 Nexus 工件階段的代碼之前,我們需要在 POM 文件中添加存儲庫 URL。

          要配置 Jenkins 中的全局 Maven 設(shè)置,請執(zhí)行以下步驟:

          1. 導(dǎo)航到配置:

          • 轉(zhuǎn)到 管理 Jenkins->管理文件
          • 添加一個新的配置文件。

          2. 設(shè)置配置類型和 ID:

          • 選擇配置類型為 全局 Maven settings.xml
          • 將配置文件的 ID 設(shè)置為 global-settings.

          3. 編輯內(nèi)容:

          • 通過在 <servers> 標簽內(nèi)添加以下代碼來編輯配置文件的內(nèi)容:
          <servers>
            <server>
              <id>maven-releases</id>
              <username>nexus username</username>
              <password>nexus password</password>
            </server>
            <server>
              <id>maven-snapshots</id>
              <username>nexus username</username>
              <password>nexus password</password>
            </server>
          </servers>

          將 nexus username 和 nexus password 替換為您的實際 Nexus 憑據(jù)。

          通過執(zhí)行這些步驟,您將在 Jenkins 中配置全局 Maven 設(shè)置,以包含必要的 Nexus 存儲庫憑據(jù)。

          Jenkins 的“管理 Jenkins”下的“管理文件”部分用于處理集中管理的配置文件,這些文件可以在 Jenkins 作業(yè)中引用。此功能是 Config File Provider 插件的一部分。

          設(shè)置 Docker-hub 憑據(jù):

          階段:部署到 Kubernetes 集群

          通過運行以下命令在 Jenkins 服務(wù)器上安裝 KUBECTL

          curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
          chmod +x ./kubectl
          sudo mv ./kubectl /usr/local/bin
          kubectl version --short --client
          

          為了正確且安全地將應(yīng)用程序部署到 Kubernetes 集群,我們需要遵循正確的流程,例如創(chuàng)建服務(wù)帳戶和使用基于角色的訪問控制 (RBAC)。

          RBAC 代表基于角色的訪問控制。假設(shè)我們的項目中有三個用戶:

          • 用戶 1:具有全面知識的架構(gòu)師。
          • 用戶 2:中級人員。
          • 用戶 3:實習(xí)生或非常新的人。

          在使用 Kubernetes 時,我們不能授予新人或中級人員完全訪問權(quán)限。因此,我們創(chuàng)建角色:

          1. 角色 1:集群管理員訪問權(quán)限
          • 對集群擁有完全訪問權(quán)限。
          • 此角色分配給架構(gòu)師(用戶 1)。
          1. 角色 2:中級訪問權(quán)限
          • 具有良好的權(quán)限級別,但不是完全的管理員。
          • 此角色分配給中級人員(用戶 2)。
          1. 角色 3:只讀訪問權(quán)限
          • 僅允許查看資源,沒有修改權(quán)限。
          • 此角色分配給實習(xí)生(用戶 3)。

          這種方法通過不向所有人授予完全訪問權(quán)限來確保安全性。相反,我們創(chuàng)建具有適當(dāng)權(quán)限的特定角色,并將它們分配給相應(yīng)的用戶。

          現(xiàn)在,讓我們繼續(xù)通過創(chuàng)建服務(wù)帳戶來使我們的部署安全。

          1. 創(chuàng)建服務(wù)帳戶:
          • 此帳戶將用于管理權(quán)限和控制訪問級別。

          通過遵循這些步驟,我們確保我們的 Kubernetes 部署安全且得到妥善管理。現(xiàn)在,讓我們進入實際部分并創(chuàng)建服務(wù)帳戶。

          請參考此文件:service-role-for-jenkins.md 創(chuàng)建用于 Jenkins 的服務(wù)帳戶。

          創(chuàng)建服務(wù)帳戶后,將 secret/mysecretname 的復(fù)制令牌粘貼到 Jenkins 全局憑據(jù)中:

          在 Jenkins 中設(shè)置 HTML 電子郵件通知

          在 Jenkins 中配置電子郵件的步驟:

          現(xiàn)在使用此應(yīng)用程序密碼在 Jenkins 中創(chuàng)建憑據(jù):

          使用此應(yīng)用密碼在 Jenkins 中創(chuàng)建憑據(jù):

          提供的命令是 Jenkins 管道 post 塊,它始終在主管道階段運行后執(zhí)行某些操作。此特定塊發(fā)送包含 Jenkins 構(gòu)建詳細信息的電子郵件通知。以下是其使用情況和功能的細分:

          關(guān)鍵組件:

          post { always { ... } }

          • 此塊確保在每次構(gòu)建后執(zhí)行封閉的腳本,無論結(jié)果如何(成功、失敗等)。

          環(huán)境變量和參數(shù):

          • jobName=env.JOB_NAME
          • 獲取 Jenkins 作業(yè)的名稱。buildNumber=env.BUILD_NUMBER
          • 獲取構(gòu)建編號。pipelineStatus=currentBuild.result ?: 'UNKNOWN'
          • 獲取當(dāng)前構(gòu)建結(jié)果;如果結(jié)果為空,則默認為 'UNKNOWN'。bannerColor=pipelineStatus.toUpperCase()=='SUCCESS' ? 'green' : 'red'
          • 根據(jù)構(gòu)建狀態(tài)設(shè)置橫幅顏色(成功為 'green',否則為 'red')。

          電子郵件正文構(gòu)建:

          • 使用 HTML 模板構(gòu)建電子郵件正文,顯示作業(yè)名稱、構(gòu)建編號和構(gòu)建狀態(tài)。橫幅的背景顏色根據(jù)構(gòu)建結(jié)果而變化。

          emailext 步驟:

          • subject: 將電子郵件主題設(shè)置為包含作業(yè)名稱、構(gòu)建編號和構(gòu)建狀態(tài)。
          • body: 設(shè)置電子郵件的 HTML 正文。
          • to: 指定收件人的電子郵件地址(您的電子郵件:'naveenkumarsingh5556@gmail.com')。
          • from 和 replyTo: 設(shè)置發(fā)件人的電子郵件地址(此處為 'jenkins@example.com')。
          • mimeType: 指定電子郵件內(nèi)容類型為 HTML。
          • attachmentsPattern: 包含附件模式以附加指定的報告文件(此處為 'trivy-image-report.html')。

          總結(jié):

          • 目的: 通過電子郵件通知 Jenkins 作業(yè)構(gòu)建狀態(tài)。
          • 執(zhí)行: 始終在構(gòu)建后執(zhí)行。
          • 電子郵件中的詳細信息: 作業(yè)名稱、構(gòu)建編號、構(gòu)建狀態(tài)、控制臺輸出鏈接以及附加的報告。
          • 自定義: 橫幅顏色根據(jù)構(gòu)建結(jié)果而變化(成功為綠色,失敗或其他狀態(tài)為紅色)。

          此命令有助于通過自動電子郵件通知系統(tǒng)使利益相關(guān)者了解構(gòu)建狀態(tài)。

          最終結(jié)果:

          總結(jié):

          本文介紹了使用 Jenkins 為 Java DevOps 自動化項目設(shè)置全面的 CI/CD 管道的步驟。關(guān)鍵步驟包括安裝必要的 Jenkins 插件,配置 SonarQube、Nexus、Docker 和 Kubernetes 等工具,以及設(shè)置全局憑據(jù)。我們還演示了如何使用基于角色的訪問控制 (RBAC) 將應(yīng)用程序安全地部署到 Kubernetes 集群,以及如何配置 HTML 電子郵件通知以獲取構(gòu)建狀態(tài)更新。通過遵循這些步驟,您可以確保為您的 Java 應(yīng)用程序建立一個健壯、自動化和安全的部署管道。

          知道m(xù)ac郵件客戶端哪個好用?不要擔(dān)心,這里為大家推薦Airmail Mac版,你可以登錄iCloud、Gmail、Yahoo、Outlook、Google App等賬號,Airmail 5 for mac中文版支持保留單個或多個帳戶,快速切換賬號,輕松收發(fā)郵件,非常便捷,需要mac郵件客戶端的朋友趕緊試試airmail mac版吧!

          Airmail for mac官方介紹

          Airmail是一個新的郵件客戶端,具有快速的***能和直觀的交互。它支持iCloud?,MS Exchange,Gmail?,Google?應(yīng)用程序,IMAP,POP3,Yahoo!?,AOL?,Outlook.com?和Live.com?。

          無論您使用單個帳戶還是多個帳戶,Airmail都是從頭開始設(shè)計的,可為您提供一致的體驗,并提供快速,現(xiàn)代且易于使用的界面。Airmail很干凈,可以讓您不間斷地收到電子郵件。這是你想要的郵件客戶端,但直到現(xiàn)在還沒有找到。

          我們通過Airmail將可用***和功能提升到了新的水平。Airmail擁有漂亮的設(shè)計,并為所有主要的電子郵件服務(wù)提供支持。在閃存中切換帳戶,輕松地將您的電子郵件轉(zhuǎn)換為其他應(yīng)用程序中的任務(wù)或備注,并在幾秒鐘內(nèi)快速回復(fù)收到的消息。電子郵件從未如此簡單和富有成效。

          https://mac.orsoon.com/Mac/164236.html?id=MTY4MTYyJl8mMjIwLjE4Ni41Mi4yNw%3D%3D

          airmail mac版功能特點

          記錄:

          - 統(tǒng)一收件箱

          - 自定義SMTP別名

          - Exchange、iCloud?、Gmail?、IMAP、POP3、Google? Apps、Yahoo!?、AOL?、Outlook.com?、Live.com?

          - 本地帳戶

          - 從Apple Mail、MBOX存檔、EML、EMLX、Airmail 1.x導(dǎo)入

          交互:

          - 快速回復(fù)

          - 撤消歷史

          - 離線***作

          - 在不同郵箱間移動郵件

          - 交互聲音

          - 多點觸控手勢

          - Exchange會議邀請

          快捷鍵:

          - Gmail快捷鍵

          - 自定義全局快捷鍵

          - Quick Label、移動、標簽和存檔

          - 快速文件夾選擇

          附件:

          - 拖放

          - Quick Look預(yù)覽

          - Google Drive、Dropbox、CloudApp、Box、Onedrive、Droplr、FTP

          - Inline圖像附件

          - Winmail.dat預(yù)覽

          - VCalendar

          對話:

          - 按ID分組

          - 按主題分組

          - 時間倒序

          - 屏蔽抄送對話

          視覺:

          - 多個視覺主題

          - 最小和擴展模式

          - 純文本渲染

          通知:

          - 按帳戶通知

          - 通知中心支持

          - 帶自定義***作的通知提醒

          地址:

          - Gmail、Exchange和OS X聯(lián)系人

          - 聯(lián)系人群組

          - 按地址過濾

          - 開放目錄搜索

          撰寫器:

          - Google App目錄

          - Exchange全局地址列表

          - LDAP目錄

          - Markdown、Html(模板的Html源代碼)和純文本。

          - 每個帳戶的自定義設(shè)置

          - 項目符號和編號列表。

          發(fā)送:

          - 自動抄送、密件抄送

          - 等待***作

          - 發(fā)送延遲

          - 重定向

          - 再次發(fā)送

          - 退回

          高級:

          - 分屏支持

          - 適用于Time Machine

          - Deckles模式

          - EML導(dǎo)入/導(dǎo)出

          - 禁用GPU以延長電池壽命

          - Applescript

          - 活動監(jiān)視器

          - 數(shù)據(jù)檢測器

          簽名:

          - 多個賬戶簽名

          - Markdown、富文本、Html源代碼和純文本。

          - 在引用上方或下方簽名

          搜索和過濾:

          - 多個帳戶全局搜索

          - 強大的實時過濾

          - 郵件、日期、附件、對話排序…

          - 顯示同一用戶的郵件

          - 標記和過濾

          文件夾、標簽:

          - 嵌套文件夾

          - 創(chuàng)建、刪除和編輯文件夾

          - 由iCloud同步的自定義色彩

          - 自定義文件夾映射

          - 待辦事項、已完成、備忘錄

          發(fā)送至:

          - Omnifocus

          - Fantastical

          - Evernote

          - Apple Reminder

          - Calendar

          - BusyCal

          - Things

          - 2To

          - Wunderlist

          - Todoist

          ***:

          - 每個用戶自動加載遠程圖像,

          - 禁用圖標檢測

          創(chuàng): JAP君 JAVAandPython君

          大家可能都知道STMP這個協(xié)議,這個協(xié)議是用于發(fā)送郵件,很多語言都支持此協(xié)議,Python內(nèi)置也是對SMTP支持的,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件。在Python爬蟲的開發(fā)中Email有啥用呢?Email主要起的是提醒作用,在我們爬蟲運行的時候可能會遇到異常或者服務(wù)器方面的問題,我們可以通過郵件的形式來及時通知我們,我們再去進行處理。


          Python對STMP支持有兩個庫,分別是smtplib和email。email庫主要是負責(zé)構(gòu)造郵件,smptlib庫負責(zé)發(fā)送郵件。

          我們可以把Email提醒功能封裝起來,我們需要的時候直接調(diào)用即可,這樣慢慢的也可以形成我們自己的一個爬蟲系統(tǒng)模塊。

          我們現(xiàn)在具體來講解一下,首先我們需要兩個郵箱,一個用于發(fā)郵件,一個用于接收郵件,我這里用的分別是163郵箱和QQ郵箱.

          首先最重要的一步,就是開啟STMP功能。




          上面兩張圖分別是163郵箱和QQ郵箱的STMP功能開通界面(必須要打開此功能

          我們將其封裝好的代碼如下:


          class SendMail(object):
          def __init__(self,username,passwd,recv,title,content,
           file=None,
           email_host='smtp.163.com',port=25):
          self.username=username
          self.passwd=passwd
          self.recv=recv
          self.title=title
          self.content=content
          self.file=file
          self.email_host=email_host
          self.port=port
          def send_mail(self):
           msg=MIMEMultipart()
          #發(fā)送內(nèi)容的對象
          if self.file:#處理附件的
           att=MIMEText(open(self.file).read())
           att["Content-Type"]='application/octet-stream'
           att["Content-Disposition"]='attachment; filename="%s"'%self.file
           msg.attach(att)
           msg.attach(MIMEText(self.content))#郵件正文的內(nèi)容
           msg['Subject']=self.title # 郵件主題
           msg['From']=self.username # 發(fā)送者賬號
           msg['To']=self.recv # 接收者賬號列表
          self.smtp=smtplib.SMTP(self.email_host,port=self.port)
          #發(fā)送郵件服務(wù)器的對象
          self.smtp.login(self.username,self.passwd)
          try:
          self.smtp.sendmail(self.username,self.recv,msg.as_string())
           except Exception as e:
           print('出錯了',e)
          else:
           print('發(fā)送成功!')
          def __del__(self):
          self.smtp.quit()
          # 調(diào)用封裝
          if __name__=='__main__':
           m=SendMail(
           username='XXX@163.com',passwd='XXX',recv='XXX@XXX.com',
           title='JAVAandPython君',content='這里可以改成異常的輸出',file='JAVA.txt'
           )
           m.send_mail()
          


          上面43行代碼就可以完美解決,因為最近項目里面也用到了這一塊的知識,所以特意分享給大家,本人覺得還是比較實用的!

          最后,我自己是一名從事了多年開發(fā)的Python老程序員,辭職目前在做自己的Python私人定制課程,今年年初我花了一個月整理了一份最適合2019年學(xué)習(xí)的Python學(xué)習(xí)干貨,可以送給每一位喜歡Python的小伙伴,想要獲取的可以關(guān)注我的頭條號并在后臺私信我:Python,即可免費獲取。


          主站蜘蛛池模板: 无码人妻一区二区三区一| 精品视频一区二区三区四区五区| 另类免费视频一区二区在线观看| 精品福利一区二区三区| 国产中文字幕一区| 国产成人无码AV一区二区| 亚洲AV一区二区三区四区| 国产激情无码一区二区三区| 国产精品主播一区二区| 久久99精品国产一区二区三区 | 日韩一区二区在线播放| 无码人妻AⅤ一区二区三区水密桃| 在线精品国产一区二区| 好吊视频一区二区三区| 78成人精品电影在线播放日韩精品电影一区亚洲 | 精品人伦一区二区三区潘金莲| 色婷婷香蕉在线一区二区| 亚洲国产精品一区第二页| 一区二区三区AV高清免费波多| 国产在线无码视频一区二区三区 | 久久久久人妻精品一区三寸蜜桃| 日本在线不卡一区| 成人毛片一区二区| 国产99久久精品一区二区| 国产一区二区三区无码免费| 国精品无码一区二区三区在线 | 中文字幕人妻无码一区二区三区| 国产精品一区在线播放| 国产午夜精品一区二区三区不卡 | 国产精品成人99一区无码| 中文字幕一区二区三匹| 国产99精品一区二区三区免费| 日本在线观看一区二区三区| 国产麻豆剧果冻传媒一区| 亚洲av综合av一区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产情侣一区二区三区| 国产福利一区视频| 日本高清无卡码一区二区久久 | 亚洲综合色一区二区三区| 无码人妻AⅤ一区二区三区水密桃 无码欧精品亚洲日韩一区夜夜嗨 无码毛片一区二区三区中文字幕 无码毛片一区二区三区视频免费播放 |