使用GitHub Actions將代碼部署到Azure!
譯文【51CTO.com快譯】構(gòu)建現(xiàn)代應(yīng)用程序絕非按F5鍵后開始構(gòu)建這么簡單。代碼只是整個過程的一部分。構(gòu)建有效的CI/CD(持續(xù)集成/持續(xù)交付)服務(wù)是培育DevOps文化及自動化管理軟件開發(fā)生命周期的關(guān)鍵部分。
自動化是整個過程的重要方面。你只需簽入更新或合并pull request,就能夠運(yùn)行測試、驅(qū)動構(gòu)建、包裝代碼甚至部署代碼。微軟旗下的GitHub之類的工具對公共代碼和私有代碼而言都變得越來越重要,我們圍繞它們構(gòu)建的工作流程是自動構(gòu)建軟件的關(guān)鍵。
GitHub Actions簡介
GitHub最近發(fā)布了GitHub Actions自動化工具的正式版。與Jenkins或Travis等以構(gòu)建為中心的CI/CD工具不同,GitHub Actions專注于你的代碼。這種方法不僅對GitHub來說很有意義,而且對開發(fā)人員來說比其他工具更有效。你可能已經(jīng)在使用基于Git的開發(fā)工作流程,使用分支、pull request、代碼審查和合并來管理開發(fā)團(tuán)隊協(xié)作開發(fā)應(yīng)用程序的方式。
GitHub Actions是一種基于事件的工作流程服務(wù),它使用常見的GitHub事件在GitHub內(nèi)部或在其他開發(fā)工具中觸發(fā)操作。GitHub中托管的代碼可以在GitHub托管的環(huán)境中加以測試和運(yùn)行,你也可以在自己的環(huán)境中托管自己的運(yùn)行器。執(zhí)行工作流程步驟時,結(jié)果將顯示在GitHub視圖中,你可以按照自己的步調(diào)逐步執(zhí)行。
你可以用YAML編寫工作流程,一系列作業(yè)(job)與觸發(fā)器相關(guān)聯(lián)。作業(yè)可以串行或并行運(yùn)行,因此如果你適當(dāng)調(diào)整GitHub Actions,可以顯著加快速度。因而獲得的工作流程描述易于閱讀;由于它是代碼,你可以在GitHub中存儲和管理各種Actions。入門工作流程庫有助于加快開發(fā)流程的自動化。
GitHub Actions與Azure結(jié)合使用
微軟一直在開發(fā)一套與Azure結(jié)合使用的GitHub Actions,現(xiàn)在這些也有了正式版。最初的一套專注于將工件從GitHub部署到Azure。由于托管在GitHub存儲庫中,最好將它們視作一系列Actions的端點,拿來構(gòu)建好的代碼和容器后交付給Azure的平臺服務(wù)。一組將GitHub Actions與Azure App Services整合起來,另一組控制部署到Azure Kubernetes Services的工作。你可以將Azure CLI用作運(yùn)行器,使用GitHub Actions觸發(fā)管理Azure資源的腳本。其他操作包括管理Azure數(shù)據(jù)庫以及構(gòu)建和部署Azure Functions。
你先需要使用預(yù)生成的服務(wù)原則登錄到Azure。 GitHub Actions包括自己的秘密存儲區(qū),因此你可以使用Azure CLI創(chuàng)建令牌,然后將其復(fù)制到Action的存儲區(qū)中,用于將來的每個連接。將一個令牌放在安全存儲區(qū)中降低了風(fēng)險,同時仍讓Actions可以自動執(zhí)行與Azure的交互。額外的登錄操作將管理連接至AKS和Azure容器注冊中心的工作。
從GitHub Action部署到Azure App Service支持使用常見的存檔格式或使用容器。值得一提的是,微軟的操作確實依賴其他GitHub Actions,比如為你的代碼創(chuàng)建.NET環(huán)境。
微軟提供了一組入門GitHub Actions for Azure,幫助你將它們整合到開發(fā)工作流程中。示例代碼顯示了GitHub Actions for Azure如何運(yùn)行以及它們?nèi)绾闻c其他Actions協(xié)同運(yùn)行。已發(fā)布的YAML顯示了一系列GitHub的自有操作,比如處理存儲庫簽出,以及在通過其中一個GitHub Actions for Azure部署代碼之前安裝Node.js運(yùn)行器以構(gòu)建和測試代碼。
實際的部署很簡單;只需要存儲的秘密和應(yīng)用程序名稱。秘密可以是發(fā)布配置文件登錄信息;如果是較復(fù)雜的部署(交付容器),你可以使用一組服務(wù)原則,并登錄到Azure帳戶。你的Actions完成后,別忘了退出!
自動化管理CI/CD比較有意思的方面之一可能是,我們不僅限于一個平臺。我們正在使用開放的API將服務(wù)器和服務(wù)連接在一起。自動化可以從Visual Studio開始,通過GitHub Actions繼續(xù)下來,然后進(jìn)入Azure Pipelines,之后將構(gòu)建工件存儲在GitHub存儲庫中。混合搭配的功能很關(guān)鍵。我們不僅限于一種做事方式;我們可以選擇工具并以最適合我們工作流程的方式來配置它們。如果你需要在開發(fā)的某個環(huán)節(jié)使用Jenkins,就可以使用它,與Azure DevOps或你環(huán)境中的其他任何平臺一起使用。
本質(zhì)上講,這是一種全然不同的管理應(yīng)用程序開發(fā)的方式,現(xiàn)在由我們的源代碼存儲庫推動。這導(dǎo)致GitHub重新考慮其在開發(fā)生態(tài)系統(tǒng)中的作用,因為它顯然不再是我們僅僅存儲和審查代碼的平臺。
代碼歸檔千年
GitHub立足于搜索和索引數(shù)百萬行公共代碼的能力,正利用該專長來試圖使我們構(gòu)建的代碼更安全,并添加集成的工具,以便及早發(fā)現(xiàn)安全問題、進(jìn)行安全報告以及管理公共存儲庫中的安全事件。現(xiàn)在,我們的代碼依賴許多不同的開源開發(fā)團(tuán)隊,這需要使用今年早些時候GitHub從Dependabot獲得的工具來自動修復(fù)依賴項問題。
GitHub在代碼生態(tài)系統(tǒng)的核心扮演重要角色,現(xiàn)計劃將你的代碼保存數(shù)百年、甚至數(shù)千年。作為該計劃的一部分,它最近在靠近全球種子庫的斯瓦爾巴德礦山保存了第一批代碼。由于放在北極氧氣稀薄的巖石深處,光學(xué)編碼數(shù)據(jù)存儲罐至少可以保存500年。該項目的下一階段將在2020年2月2日將所有公共存儲庫做成映像,存儲在同一個保管庫中。
GitHub正在考慮其他代碼歸檔方法,與Long Now Foundation、牛津大學(xué)博德利圖書館和互聯(lián)網(wǎng)檔案館等組織合作,不僅保存我們的代碼,還保存我們圍繞代碼建立的社交網(wǎng)絡(luò)和討論內(nèi)容。甚至可能使用微軟研究院的Project Silica基于3D玻璃的存儲技術(shù)來創(chuàng)建壽命更久的檔案。
IT行業(yè)的歷史還不到一個世紀(jì),而我們已經(jīng)在建立可以保存數(shù)千年的代碼庫。這標(biāo)志著軟件和開發(fā)的重要性及其對文明的意義。對于開發(fā)人員來說,責(zé)任重大。
原文標(biāo)題:Use GitHub Actions to deploy code to Azure, 作者:Simon Bisson
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】