GitHub Actions 改变了自动化领域的游戏。CI/CD、测试以及部署呢?当然,这些只是基本的部分。
但要是我告訴你,有一整個被低估的動作大世界,可以讓你的工作流程變得更順暢、更快,甚至可以說毫不費力?
这里有10个不太出名但超级实用的GitHub Actions,你应该开始用了。
1. YAML 验证器
YAML 在自动化中随处可见,但如果缩进不对,砰!你的流程就出问题了。此操作会在你提交之前捕获错误。
为什么这会是颠覆性的:
- 帮助你避免因 YAML 配置错误引发的令人头疼的调试噩梦。
- 对 Kubernetes、GitHub 工作流和 CI/CD 来说必不可少。
- name: 验证 YAML
使用: ibiqlik/action-yaml-lint@v3
配置:
配置文件: '.yamllint'
全屏, 退出全屏
2. Markdown 链接检查工具
有没有遇到过充满坏链接的README?这个工具会扫描你的Markdown文件,并在它们给你带来尴尬之前标记死链接。
适合:如下
- 保持文档完美。
- 避免用户尴尬地反馈“死链”的消息。
- 名称:检查 Markdown 链接
使用: gaurav-nelson/github-action-markdown-link-check@v1
全屏进入, 全屏退出
3. 自动处理PR
别再手动分配PR了,这个功能会按照设定的规则自动分配。
为什么你需要它呢:
- 特别是对于每天处理多个PR的团队来说,这可以节省了时间。
- 这可以确保代码审查不会被遗漏。
- 名称: 自动分配 PR
使用: kentaro-m/auto-assign-action@v1
参数:
assignees: '指派人员: team-lead'
reviewers: '审查人员: senior-dev'
进入全屏 退出全屏
4. Commitlint:
杂乱的提交信息让追踪更改变得很痛苦。这个动作要求保持一致性。
适合:
- 遵循常规提交规范的团队。
- 保持变更日志整洁,版本控制结构化。
- 名称: Commitlint
使用: wagoid/commitlint-github-action@v5
全屏模式 退出
第5. 缓存依赖
依赖安装拖慢了构建速度吗?此操作会缓存这些依赖,让CI运行快得多。
最棒的地方是:
- 大型的 Node.js/Python/Ruby 项目。
- 缩短活跃的开发环境中的构建时间。
- name: 缓存 Node 模块包
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ 计算文件哈希值('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
切换到全屏 退出全屏
6. 在 Slack 上发个通知
别老刷新GitHub看工作流的状态了。这个操作会对构建、测试以及部署实时发送Slack通知。
非常适合:
- 实时让团队保持更新。
- 在造成混乱之前捕获部署失败。
- 名字: 通知 Slack
使用: rtCamp/action-slack-notify@v2
with:
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
消息: "部署状态: ${{ job.status }}"
全屏模式,退出全屏
7. 许可证符合规范检查工具.
如果你的项目依赖于外部依赖,你需要确保所有许可证符合要求。此操作会帮你进行检查。
特别适合于
- 开源项目。
- 遵循严格许可政策的企业团队。
- 名称: 许可检查
uses: anchorfree/license-check-action@v2
全屏模式...退出全屏
8. PR 尺寸标签器
帮助审阅者们根据大小给PR打标签——小、中等、大,
为什么它有用:
- 让团队优先处理快速的 PR。
- 防止巨大的且难以管理的 PR 滑入系统。
- 名称: PR Size Labeler
使用于: kentaro-m/size-label-action@v3
切换到全屏模式
退出全屏
9. 使用 Trivy 进行安全检查
安全性是不可妥协的。在这些问题成为漏洞之前,扫描容器镜像和依赖。
它可以用于:
- 确保您的 Docker 镜像的安全。
- 在部署前识别潜在的脆弱依赖项。
- name: 安全检查
uses: aquasecurity/trivy-action@v0.3.0
with:
image-ref: myapp:latest
全屏模式。退出全屏
10. JIRA 的 GitHub Actions 集成.
如果你的团队使用 JIRA,这个功能会根据 GitHub 的提交和拉取请求自动更新任务。
为什么这很重要:
- 保持您的开发和项目管理团队协调一致。
- 减少手动更新,确保问题得以解决。
- 名称: 更新 Jira 问题
使用: atlassian/gajira-create@v3
参数:
项目: "ENG"
类型: "任务"
标题: "自动更新问题"
描述: "关联的 PR: ${{ github.event.pull_request.html_url }}"
全屏/退出全屏
你在你的工作流里加哪个?