GitHub Actions 中 10 个隐藏的精华,助您实现工作流程自动化
GitHub Actions 彻底改变了我们自动化工作流程的方式,尤其是在 DevOps 驱动的世界中。当然,您已经了解了基础知识:CI/CD 流水线、测试和部署。但除了这些标准用例之外,还有一个隐藏的宝藏,它们可以以您可能从未想过的方式增强您的工作流程。
让我们深入了解 10 个被低估但功能强大的 GitHub Actions。
1. YAML 验证器
YAML 文件支持大多数 CI/CD 工作流程,但一个小小的缩进错误就可能造成严重破坏。此操作会在您提交 YAML 文件之前对其进行验证,从而节省您数小时的调试时间,避免因管道故障而导致问题。
用途:
- 确保
.github/workflows
目录中的语法正确。 - 避免 Kubernetes YAML 文件中的错误配置。
例子:- name: Validate YAML
uses: ibiqlik/action-yaml-lint@v3
with:
config_file: '.yamllint'
2. Markdown 链接检查器
您是否曾经发布过文档,后来却发现链接失效?此操作会自动扫描您的 Markdown 文件并标记无效链接。
用途:
- 保持 README 文件和文档无错误。
- 保持开源存储库的专业性。
例子:- name: Check Markdown Links
uses: gaurav-nelson/github-action-markdown-link-check@v1
3. 自动分配 PR
此操作会自动分配审阅者和团队成员来处理请求,从而减少分配任务的手动开销。
用途:
- 确保代码审查始终分配给正确的人员。
- 在您的团队中执行审查政策。
例子:
- name: Auto Assign PR
uses: kentaro-m/auto-assign-action@v1
with:
assignees: 'team-lead'
reviewers: 'senior-dev'
4. Commitlint
清晰的提交信息有助于提升协作效率。此操作会根据预定义的规范(例如 Angular 的“常规提交”)检查您的提交信息。
用途:
- 在大型团队中强制执行一致的提交信息。
- 简化变更日志生成和语义版本控制。
例子:- name: Commitlint
uses: wagoid/commitlint-github-action@v5
5. 缓存依赖项
缓存依赖项可以显著加快您的 CI 运行速度。此操作允许您在构建过程中重复使用依赖项,从而节省时间和带宽。
用途:
- 具有大量依赖项安装的 Node.js、Python 或 Ruby 项目。
- 任何具有大型构建工件的项目。
例子:- name: Cache Node Modules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
6.通知 Slack
在 Slack 中实时获取工作流程状态更新。无论构建成功还是失败,您的团队都能随时掌握最新进展,无需频繁查看 GitHub。
用途:
- 部署失败时立即发出警报。
- 让非技术利益相关者了解情况。
例子:- name: Notify Slack
uses: rtCamp/action-slack-notify@v2
with:
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
message: "Deployment Status: ${{ job.status }}"
7. 许可证合规性检查器
确保所有项目依赖项均符合组织的许可政策,以避免法律问题。
用途:
- 依赖外部库的开源项目。
- 具有严格许可要求的企业项目。
例子:- name: License Check
uses: anchorfree/license-check-action@v2
8. 拉取请求大小标注器
根据拉取请求的大小(例如,小、中、大)自动标记。这有助于审阅者确定优先级并相应地分配时间。
用途:
- PR 量高的团队。
- 避免功能分支的范围蔓延。
例子:- name: PR Size Labeler
uses: kentaro-m/size-label-action@v3
9. 使用 Trivy 进行安全扫描
安全永远不应该是事后才考虑的事情。Trivy 会扫描您的容器镜像和依赖项,查找漏洞。
用途:
- 确保您的 Docker 镜像已准备好投入生产。
- 识别过时或易受攻击的库。
例子:- name: Security Scan
uses: aquasecurity/trivy-action@v0.3.0
with:
image-ref: myapp:latest
10.自动合并 Dependabot 更新
Dependabot 会持续更新您的依赖项,但手动审核和合并每个更新可能非常繁琐。此操作会自动合并通过 CI 测试的更新。
用途:
- 无需人工干预即可保持依赖关系的安全和最新。
- 减少活跃项目中的维护开销。
例子:- name: Auto Merge Dependabot
uses: ahmadnassri/action-dependabot-auto-merge@v2
GitHub Actions 不仅仅是一个 CI/CD 工具,它还是一个用于构建工作流程的平台,可以优化生产力、确保质量并减少瓶颈。
您要将以下哪些操作添加到您的工作流程中?或者您有未列入列表的收藏操作?让我们在下面讨论!
文章来源:https://dev.to/balrajola/10-hidden-gems-in-github-actions-for-automating-your-workflow-1i6l