各位讀者,新年快樂,我是過了年匆忙趕回上海努力搬磚的蠻三刀。html
Github以前更新了一個Action功能(應該是好久之前了),能夠實現不少自動化操做。用來替代用戶本身設置的自動化腳本(好比:鉤子+Jenkins)。python
因爲平時根本不會有需求用到它,畢竟平時都在用公司的CI/CD流程,因此一直沒有機會玩Action。git
藉着春節放假,就本身寫個小Demo體驗一下。github
本文經過實現一個提交代碼後自動執行Junit單元測試並輸出測試報告的自動化流程小Demo,來快速上手Github Action。面試
若是你對Github Action徹底沒有概念,我推薦先去看一下CI/CD(持續集成/持續交付)的概念:算法
https://www.redhat.com/zh/top...ubuntu
Github Action官方文檔中對自身的定義:後端
在 GitHub Actions 的倉庫中自動化、自定義和執行軟件開發工做流程。 您能夠發現、建立和共享操做以執行您喜歡的任何做業(包括 CI/CD),並將操做合併到徹底自定義的工做流程中。
用人話說,就是你能夠給你的代碼倉庫部署一系列自動化腳本,在你進行了提交/合併分支等操做後,自動執行腳本。設計模式
阮一峯Github Action指南中的介紹:緩存
你們知道,持續集成由不少操做組成,好比抓取代碼、運行測試、登陸遠程服務器,發佈到第三方服務等等。GitHub 把這些操做就稱爲 actions。不少操做在不一樣項目裏面是相似的,徹底能夠共享。GitHub 注意到了這一點,想出了一個很妙的點子,容許開發者把每一個操做寫成獨立的腳本文件,存放到代碼倉庫,使得其餘開發者能夠引用。
若是你須要某個 action,沒必要本身寫複雜的腳本,直接引用他人寫好的 action 便可,整個持續集成過程,就變成了一個 actions 的組合。這就是 GitHub Actions 最特別的地方。
GitHub Actions 有一些本身的術語:
看這些介紹和定義,其實比較枯燥,咱們直接來看代碼實現,在代碼中來理解這些定義和指令。
首先,用你本身的任意GitHub倉庫,在倉庫內添加文件夾.github/workflow
或者.github/workflows
:
一個庫能夠有多個 workflow 文件。GitHub 只要發現.github/workflows目錄裏面有.yml文件,就會自動運行該文件。
一個yml腳本即是Action的核心了,咱們新建一個blank.yml
,內容以下:
我在代碼裏作了一些註釋,幫助你們理解每一個指令的含義。
整個腳本大體的流程以下:
ok,寫完腳本,咱們須要來編寫一些測試代碼,讓Junit有事可作。
我使用了本身的一個倉庫,上面有完整的action腳本和測試類代碼,供參考:
https://github.com/qqxx6661/a...
這是一個Maven倉庫,咱們在test文件夾內加入測試代碼。
上面的測試代碼測試的是下面的一個靜態方法:
將代碼commit並push後,點開你的倉庫主頁,點擊Action標籤:
能夠看到已經有了執行信息。
接着看下咱們的Action到底有沒有執行,點開Action標籤,已經發現了Junit:
能夠進行腳本代碼的在線編輯:
點進本次commit執行的記錄,能夠看到,action順利完成了幾個步驟:
點開Maven的構建日誌,能夠看到咱們第一次跑action,全部的依賴仍是即時下載的:
單元測試運行的日誌輸出正常:
爲了試驗Maven的依賴包是否可以使用到緩存,咱們再寫幾個單元測試,而後commit:
能夠看到,新的action日誌裏直接開始了編譯,再也不須要下載全量的包:
單元測試頁成功執行:
至此,咱們的簡易入門教程便結束了。
固然,這還只是Action的冰山一角,其能作的事情遠不止於此:
等着大家的探索。
https://docs.github.com/cn/ac...
http://www.ruanyifeng.com/blo...
我是一名奮鬥在一線的互聯網後端開發工程師。
平時主要關注後端開發,數據安全,邊緣計算等方向,歡迎交流。
各大平臺都能找到我
原創文章主要內容
我的公衆號:後端技術漫談
若是文章對你有幫助,求各位大佬點贊支持一下,你的點贊和在看是我更新的動力~