4個(gè)提高效率的GitHub Actions技巧
本文介紹了4個(gè)能幫你節(jié)省時(shí)間的 GitHub Actions,它們可以改善你的工作流。
如果你將代碼托管在 GitHub 上,那么你可以充分利用 GitHub Actions。借助 GitHub Actions,你可以完成代碼測(cè)試和檢查,無(wú)需手動(dòng)運(yùn)行這些任務(wù)。
https://github.com/features/actions
如果你不很清楚 GitHub Actions 是什么以及如何使用它們,我建議你先看看 阮一峰的 GitHub Actions 入門(mén)教程。
http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
1. 利用 GitHub Actions 審計(jì)網(wǎng)頁(yè)
這一操作集成了谷歌提供的實(shí)用網(wǎng)頁(yè)審計(jì)工具 Lighthouse,可以檢測(cè)性能、可訪問(wèn)性、最佳實(shí)踐、搜索引擎優(yōu)化和漸進(jìn)式 Web 應(yīng)用程序。
https://developers.google.com/web/tools/lighthouse/
Github Lighthouse Action
目前,該操作會(huì)打印出 5 個(gè)分?jǐn)?shù)(滿分 100),并上傳 HTML 和 JSON 版本的報(bào)告。
在下一個(gè)版本中,該操作將允許你指定每項(xiàng)測(cè)試的閾值,如果不滿足條件,可以有選擇性地停止這個(gè)步驟。
Lighthouse 審計(jì)報(bào)告示例
用法
下面的工作流在 jarv.is 上運(yùn)行一個(gè) Lighthouse 審計(jì),該步驟會(huì)在輸出中顯示 5 個(gè)分?jǐn)?shù),并上傳結(jié)果 .html 和 .json的版本,以供下載(如上所示)。
https://jarv.is/
workflow.yml文件:
- name: Audit live site
- on: pushjobs:
- audit:
- runs-on: ubuntu-latest
- steps:
- - name: Audit live URL
- uses: jakejarvis/lighthouse-action@master
- with:
- url: 'https://jarv.is/'
- - name: Upload results as an artifact
- uses: actions/upload-artifact@master
- with:
- name: report
- path: './report'
2. 利用 GitHub Actions 運(yùn)行 SSH 命令
該操作將通過(guò) SSH 在你的 $HOST 上將提供的參數(shù)作為命令運(yùn)行。如果你想在每次提交或推送之后在自己的私有服務(wù)器上運(yùn)行命令,那么它會(huì)非常有用。
SSH GitHub Action
用法
要使用這個(gè)操作,只需要在.github/main.workflow文件中添加以下幾行:
- action "Run deploy script" {
- uses = "maddox/actions/ssh@master"
- args = "/opt/deploy/run"
- secrets = [
- "PRIVATE_KEY",
- "HOST",
- "USER"
- ]
- }
所需的參數(shù)
你所使用的參數(shù)就是你要通過(guò) SSH 在你的服務(wù)器上運(yùn)行的命令。
示例
- args = "/opt/deploy/run"
- args = "touch ~/.reload"
所需的私密信息
要使用這項(xiàng)操作,你需要提供以下私密信息:
- PRIVATE_KEY:SSH 私鑰;
- HOST:該操作將通過(guò) SSH 連接并運(yùn)行命令的主機(jī),如your.site.com;
- USER: SSH 命令將其和私鑰一起用于身份驗(yàn)證的用戶。
要了解更多細(xì)節(jié),請(qǐng)查看 GitHub 庫(kù)。
https://github.com/maddox/actions/tree/master/ssh
3. 利用 GitHub Actions 檢測(cè)密鑰泄漏
將 gitleaks 作為一個(gè) GitHub Action,用于審計(jì) Git 提交中的秘密。如果你使用.env文件,該操作會(huì)在你無(wú)意中發(fā)布了私密信息時(shí)通知你。
https://github.com/zricethezav/gitleaks
Gitleaks-action
用法
- workflow "gitleaks my commits" {
- on = "push"
- resolves = ["gitleaks"]
- }action "gitleaks" {
- uses = "eshork/gitleaks-action@master"
- }
要了解更多信息,請(qǐng)移步 zricethezav/gitleaks。
https://github.com/zricethezav/gitleaks
4. 利用 GitHub Action 運(yùn)行 ESLint
Eslint Action
該操作在指定的 JavaScript 文件上執(zhí)行 ESLint 代碼檢查工具,而不需要任何前期的操作 / 構(gòu)建步驟或 Docker。
https://eslint.org/
要執(zhí)行操作,本地必須運(yùn)行 ESLint。它將使用與本地相同的規(guī)則。要了解更多信息,請(qǐng)查看 ESLint 入門(mén)指南。
https://eslint.org/docs/user-guide/getting-started#installation-and-usage
用法
將下面的任何一個(gè)例子添加到文件.github/main.workflow。
下面是一個(gè)使用該操作的示例:
- workflow "New workflow" {
- on = "push"
- resolves = ["ESLint"]
- }action "ESLint" {
- uses = "stefanoeb/eslint-action@master"
- }
在默認(rèn)情況下,它會(huì)對(duì)項(xiàng)目中的所有文件運(yùn)行 ESLint。但是,你可以使用args 指定要檢查的文件,如下所示:
- workflow "New workflow" {
- on = "push"
- resolves = ["ESLint"]
- }action "ESLint" {
- uses = "stefanoeb/eslint-action@master"
- args = "index.js src/**.js"
- }
如果你之前沒(méi)有安裝必要的模塊,那么該操作會(huì)自動(dòng)運(yùn)行yarn install 或 npm install 。
5. 小結(jié)
感謝閱讀,希望本文對(duì)你有所幫助。如果你知道任何其他有用的 GitHub Actions,請(qǐng)告訴我們。保持好奇,快樂(lè)編碼!