GitHub Actions 已经彻底改变了我们自动化工作流程的方式,尤其是在 DevOps 驱动的世界中。当然,你已经见过基本的东西:CI/CD 管道、测试和部署等。但是,还有一个超越标准用例的新世界——一个充满隐藏宝藏的世界,这些宝藏可以让你的工作流程效率大幅提升,以你未曾想到的方式。
今天要介绍的是虽然被低估但功能强大的10个GitHub Actions(操作)。
1. YAML 验证器
YAML 文件驱动着大多数 CI/CD 工作流,但一个缩进错误就可能引发严重问题。这个操作在你提交 YAML 前验证它们,避免你在调试故障管道上浪费数小时的时间。
适用于:
- 确保您的
.github/workflows
目录中的语法正确。 - 避免在 Kubernetes YAML 文件中发生配置错误。
- name: 验证 YAML 文件 (用于验证 YAML 文件是否符合规则) uses: ibiqlik/action-yaml-lint@v3 (使用这个 action 来执行验证) with: config_file: '.yamllint' (配置文件的路径)
2. Markdown链接检查工具
你有没有发布过文档,却发现里面有些链接已经失效?它会扫描你的 Markdown 文件中的链接,并标出这些失效的链接。
适用于:
- 确保 README 文件和文档准确无误。
- 在开源仓库中保持专业态度。
示例:
- name: 检查 Markdown 链接
uses: gaurav-nelson/github-action-markdown-link-check@v1
3. 自动分配PR (拉取请求)
此操作自动化了分配审阅者和团队成员给拉取请求的任务,减少了手动分配任务的繁琐。
可以用于:
- 确保代码审查工作总是交给合适的人来做。
- 确保你的团队遵循严格的审查规定。
比如说,
- name: 自动分配 PR 任务 uses: kentaro-m/auto-assign-action@v1 with: 分配人员: '团队主管' 审查人员: '高级开发'
**4\. Commitlint(用于检查提交信息的工具)**
清晰的提交备注有助于更好的协作。此操作会检查你的提交备注是否符合预定义的规范(例如 Angular、Conventional Commits 等)。
可以用于:
* 为了在大型团队中确保一致的提交信息。
* 简化变更日志的生成和版本的语义化管理。
```- name: Commitlint # 名称为Commitlint
uses: wagoid/commitlint-github-action@v5 # 使用此插件进行提交规范检查
5. 缓存相关的依赖
缓存依赖项可以显著加快你的CI构建速度。这个操作允许你在构建之间重用依赖项,从而节省时间和减少网络流量。
可以用来:
- 有较多依赖安装的Node.js、Python或Ruby项目。
- 构建产物较大的任何项目。
- name: 缓存 Node 模块
使用: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ 文件路径('**/package-lock.json') 的哈希值 }}
恢复密钥: ...
${{ runner.os }}-node-
6. 在 Slack 上通知
在 Slack 中获取关于工作流状态的实时更新。不论构建成功与否,无需频繁查看 GitHub,团队就能随时了解情况。
可用于:
- 立即为部署失败发出警报。
- 让非技术人员了解情况。
- 名称: 通知 Slack
uses: rtCamp/action-slack-notify@v2
with:
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
消息内容: "部署状态: ${{ job.status }}"
7. 许可证合规检查工具
通过确保所有项目依赖关系符合组织的许可规定,来避免法律纠纷。
可以用于:
使用外部库的开源项目。
需要严格许可证的企业项目。
示例:
- name: 许可证检查
uses: anchorfree/license-check-action@v2
8. 代码请求大小标签器
根据大小自动为拉取请求打上标签,比如小、中、大。这有助于审阅者据此优先处理,合理安排时间。
适用于:
- 团队有高的PR量。
- 避免功能分支的范围蔓延。
示例:
- name: PR 大小标签器 uses: kentaro-m/size-label-action@v3
9. 用 Trivy 做安全扫描。
安全绝对不能轻视,不应该只是事后才想到的事情。Trivy 检查您的容器镜像和依赖项是否有漏洞。
可以用于:
- 确保您的 Docker 镜像适合生产环境。
- 找出过时或有漏洞的依赖。
示例:
— name: 安全扫描
uses: aquasecurity/[email protected]
with:
image-ref: myapp:latest
— name: 安全扫描
uses: aquasecurity/[email protected]
参数:
image-ref: myapp:latest
10. 自动合并 Dependabot 的更新
Dependabot 会帮你保持依赖项更新,但手动审查和合并每一个更新可能会很麻烦。此操作会自动合并通过你 CI 测试的所有更新。
可以用于:
- 自动保持依赖项的安全并及时更新,无需人工干预。
- 减少活跃项目中的维护工作量。
例如:
- name: 自动合并 Dependabot 依赖 uses: ahmadnassri/action-dependabot-auto-merge@v2
GitHub Actions 并不仅仅是一个 CI/CD 工具——它是一个用于构建工作流的平台,能提升工作效率、确保高质量并减少瓶颈问题。
你会在工作流中添加哪个操作?或者有没有没列出来的最爱操作?下面来讨论一下吧!
共同學習,寫下你的評論
評論加載中...
作者其他優質文章