自动执行代码扫描预检查等工作

前言

一个项目,在推出去作为开源项目之后,自然而然就会吸引其他开发者来进行协同,当协同越来越多的时候,有一个能自动检测代码基本语法问题的预检,就非常重要。

本文就来讲一下,如何借助 Github Actions 自动执行各语言相关的代码检测扫描。

Go语言

所用 Actions。

使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了,这里说一两个需要注意的地方。

首先添加 Actions 配置文件,e.g. .github/workflows/go-ci.yml

  1. name: golangci-lint
  2. on: [push, pull_request]
  3. jobs:
  4. golangci:
  5. name: golang-lint
  6. runs-on: ubuntu-latest
  7. steps:
  8. - uses: actions/setup-go@v3
  9. with:
  10. go-version: 1.17
  11. - uses: actions/checkout@v3
  12. - name: golangci-lint
  13. uses: golangci/golangci-lint-action@v3
  14. with:
  15. version: v1.46.2
  16. build:
  17. name: go-build
  18. runs-on: ubuntu-latest
  19. steps:
  20. - uses: actions/checkout@v3
  21. - name: Set up Go
  22. uses: actions/setup-go@v3
  23. with:
  24. go-version: 1.17
  25. - name: Build
  26. run: go build -v ./...

配置项也都比较简单,不做过多赘述,根据自己的实际情况调整即可。

这个配置添加之后,每次有push的动作,或者PR的请求,都会自动运行该动作,示例如下:

image_20220724_084202

当这个步骤运行失败,则提交PR的人也会自行根据报错内容进行一些自检。

Node

使用的Actions。

  1. name: Test
  2. on: [push, pull_request]
  3. jobs:
  4. lint:
  5. runs-on: ubuntu-latest
  6. steps:
  7. - uses: actions/checkout@v2
  8. - uses: actions/setup-node@v1
  9. with:
  10. node-version: '12.x'
  11. - name: Install dependencies
  12. uses: bahmutov/npm-install@v1
  13. - name: Run linter
  14. run: npm run lint
  15. test:
  16. runs-on: ubuntu-latest
  17. steps:
  18. - uses: actions/checkout@v2
  19. - uses: actions/setup-node@v1
  20. with:
  21. node-version: '12.x'
  22. - name: Install dependencies
  23. uses: bahmutov/npm-install@v1
  24. - name: Run test
  25. run: npm test
  26. build:
  27. runs-on: ubuntu-latest
  28. steps:
  29. - uses: actions/checkout@v2
  30. - uses: actions/setup-node@v1
  31. with:
  32. node-version: '12.x'
  33. - name: Install dependencies
  34. uses: bahmutov/npm-install@v1
  35. - name: Build
  36. run: npm run build

以上是拿两个语言作为例子,算是一个抛砖引玉,其他语言的检测,可参考官方文档:https://docs.github.com/cn/actions/automating-builds-and-tests/building-and-testing-go 进行配置。