決條件:第二部分端到端Java DevOps自動化項目
譯自 Part-3 End-to-End Java DevOps Automation Project,作者 Naveen Kumar。
1. Eclipse Temurin 安裝程序
2. Pipeline Maven 集成
3. 配置文件提供程序
4. SonarQube 掃描程序
5. Kubernetes CLI
6. Kubernetes
7. Docker
8. Docker Pipeline
9. Maven 集成
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)建項目所需的其它實用程序。
使用 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í)行。
“系統(tǒng)”部分位于“管理 Jenkins”下,您可以在其中配置 Jenkins 的整體系統(tǒng)設(shè)置。這包括影響整個 Jenkins 安裝及其運行方式的設(shè)置。
在 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)的參考:
在編寫 發(fā)布到 Nexus 工件階段的代碼之前,我們需要在 POM 文件中添加存儲庫 URL。
要配置 Jenkins 中的全局 Maven 設(shè)置,請執(zhí)行以下步驟:
1. 導(dǎo)航到配置:
2. 設(shè)置配置類型和 ID:
3. 編輯內(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 插件的一部分。
階段:部署到 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è)我們的項目中有三個用戶:
在使用 Kubernetes 時,我們不能授予新人或中級人員完全訪問權(quán)限。因此,我們創(chuàng)建角色:
這種方法通過不向所有人授予完全訪問權(quán)限來確保安全性。相反,我們創(chuàng)建具有適當(dāng)權(quán)限的特定角色,并將它們分配給相應(yīng)的用戶。
現(xiàn)在,讓我們繼續(xù)通過創(chuàng)建服務(wù)帳戶來使我們的部署安全。
通過遵循這些步驟,我們確保我們的 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)建詳細信息的電子郵件通知。以下是其使用情況和功能的細分:
post { always { ... } }
環(huán)境變量和參數(shù):
電子郵件正文構(gòu)建:
emailext 步驟:
總結(jié):
此命令有助于通過自動電子郵件通知系統(tǒng)使利益相關(guān)者了解構(gòu)建狀態(tài)。
最終結(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,即可免費獲取。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。