写点什么

4 个提高效率的 GitHub Actions 技巧

  • 2020-06-04
  • 本文字数:2745 字

    阅读完需:约 9 分钟

4个提高效率的GitHub Actions技巧


本文最初发布于 BetterProgramming 博客,经原作者授权由 InfoQ 中文站翻译并分享。


如果你将代码托管在 GitHub 上,那么你可以充分利用GitHub Actions。借助 GitHub Actions,你可以完成代码测试和检查,无需手动运行这些任务。如果你不很清楚 GitHub Actions 是什么以及如何使用它们,我建议你先看看阮一峰的GitHub Actions 入门教程

1. 利用 GitHub Actions 审计网页

这一操作集成了谷歌提供的实用网页审计工具Lighthouse,可以检测性能、可访问性、最佳实践、搜索引擎优化和渐进式 Web 应用程序。



Github Lighthouse Action


目前,该操作会打印出 5 个分数(满分 100),并上传 HTML 和 JSON 版本的报告。


在下一个版本中,该操作将允许你指定每项测试的阈值,如果不满足条件,可以有选择性地停止这个步骤。



Lighthouse 审计报告示例

用法

下面的工作流在jarv.is上运行一个 Lighthouse 审计,该步骤会在输出中显示 5 个分数,并上传结果 .html.json的版本,以供下载(如上所示)。


workflow.yml文件:


name: Audit live siteon: 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'
复制代码


Lighthouse 在你构建渐进式Web应用时特别有用。该项目的灵感来自GoogleChromeLabs/lighthousebot

2. 利用 GitHub Actions 运行 SSH 命令

该操作将通过 SSH 在你的 $HOST 上将提供的参数作为命令运行。如果你想在每次提交或推送之后在自己的私有服务器上运行命令,那么它会非常有用。



SSH GitHub Action

用法

要使用这个操作,只需要在.github/main.workflow文件中添加以下几行:


action "Run deploy script" {  uses = "maddox/actions/ssh@master"  args = "/opt/deploy/run"  secrets = [    "PRIVATE_KEY",    "HOST",    "USER"  ]}
复制代码

所需的参数

你所使用的参数就是你要通过 SSH 在你的服务器上运行的命令。

示例

  • args = "/opt/deploy/run"

  • args = "touch ~/.reload"

所需的私密信息

要使用这项操作,你需要提供以下私密信息:


  • PRIVATE_KEY:SSH 私钥;

  • HOST:该操作将通过 SSH 连接并运行命令的主机,如your.site.com

  • USER: SSH 命令将其和私钥一起用于身份验证的用户。


要了解更多细节,请查看GitHub库

3. 利用 GitHub Actions 检测密钥泄漏

gitleaks作为一个 GitHub Action,用于审计 Git 提交中的秘密。如果你使用.env文件,该操作会在你无意中发布了私密信息时通知你。



Gitleaks-action

用法

workflow "gitleaks my commits" {  on = "push"  resolves = ["gitleaks"]}action "gitleaks" {  uses = "eshork/gitleaks-action@master"}
复制代码


要了解更多信息,请移步zricethezav/gitleaks

4. 利用 GitHub Action 运行 ESLint


Eslint Action


该操作在指定的 JavaScript 文件上执行ESLint代码检查工具,而不需要任何前期的操作/构建步骤或Docker


要执行操作,本地必须运行 ESLint。它将使用与本地相同的规则。要了解更多信息,请查看ESLint入门指南

用法

将下面的任何一个例子添加到文件.github/main.workflow


下面是一个使用该操作的示例:


workflow "New workflow" {  on = "push"  resolves = ["ESLint"]}action "ESLint" {  uses = "stefanoeb/eslint-action@master"}
复制代码


在默认情况下,它会对项目中的所有文件运行 ESLint。但是,你可以使用args 指定要检查的文件,如下所示:


workflow "New workflow" {  on = "push"  resolves = ["ESLint"]}action "ESLint" {  uses = "stefanoeb/eslint-action@master"  args = "index.js src/**.js"}
复制代码


如果你之前没有安装必要的模块,那么该操作会自动运行yarn installnpm install

小结

感谢阅读,希望本文对你有所帮助。如果你知道任何其他有用的 GitHub Actions,请告诉我们。保持好奇,快乐编码!


英文原文:


Improve Your Workflow With These 4 GitHub Actions


2020-06-04 13:502185
用户头像

发布了 713 篇内容, 共 442.8 次阅读, 收获喜欢 1529 次。

关注

评论

发布
暂无评论
发现更多内容

ARTS-WEEK5

一周思进

ARTS 打卡计划

系统架构感想

朱月俊

MyBatis标签trim,你不会以为我是去空格的吧?

Java小咖秀

Java 面试 mybatis

围绕 Office 365 的那些 CLI

手艺人杨柳

Office 365

ARTS打卡 第5周

引花眠

ARTS 打卡计划

互联网系统常见问题以及解决方案

而立

极客大学架构师训练营

一文带你学会 Blob(含 7 个使用场景)

Geek_z9ygea

Java 大前端 Web Blob

学习总结 - 第 4 周

饶军

小师妹学JVM之:JIT中的PrintAssembly

程序那些事

JVM 小师妹 性能调优 JIT 签约计划第二季

架构师训练营 - 第四周命题作业

牛牛

极客大学架构师训练营 作业

SQL运行内幕:从执行原理看调优的本质

帅旋

MySQL 数据库

《架构师训练营》第四周总结

快来解锁Pepper机器人新技能,够酷Pepper就跟你回家!

阿甜

编程 开发者 App 开发 机器人

谈反应式编程在服务端中的应用,数据库操作优化,提速 Upsert

newbe36524

C# MySQL 数据库 mongodb Reactive

自由职业的前半年,我是如何度过的?

王磊

Java 程序员

区块链冷链食品追溯系统

CECBC

区块链技术 上链 溯源 浙冷链

消息队列(三)如何保证消息不被重复消费?

奈何花开

Java MQ 消息队列

CECBC带你一图看懂区块链

CECBC

CECBC 区块链技术 去中心化

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?

朱月俊

架构师训练营第四周学习总结

CATTY

《架构师训练营》第四周命题作业

安畅迁移平台的云原生之路

雪雷

Kubernetes DevOps 云原生 CI/CD 迁移

央行数字货币:第三方支付产业新变量

CECBC

数字货币 DCEP 区块链技术

python中对字典与列表组合进行排序

开心太平洋

Python List 排序

架构师训练营 - 学习笔记 - 第四周

心在飞

极客大学架构师训练营

Linux系统查询端口命令

打鱼小王子

关于编码的一点“思考”

damnever

思考 抽象 分层架构 编码 Go 语言

原来使用Postman如此简单,API测试之Postman使用全指南

软测小生

接口 Postman 接口测试 API API测试

重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」

小傅哥

Java 设计模式 小傅哥 重构 备忘录模式

架构师训练营作业 -Week4

wyzwlj

极客大学架构师训练营

GO语言泛型编程实践

老胡爱分享

泛型 Go 语言

4个提高效率的GitHub Actions技巧_语言 & 开发_Indrek Lasn_InfoQ精选文章