自动执行代码扫描预检查等工作
前言
一个项目,在推出去作为开源项目之后,自然而然就会吸引其他开发者来进行协同,当协同越来越多的时候,有一个能自动检测代码基本语法问题的预检,就非常重要。
本文就来讲一下,如何借助 Github Actions 自动执行各语言相关的代码检测扫描。
Go语言
所用 Actions。
- setup-go:提供go基础环境。
- golangci-lint-action:能够运行golangci-lint检查的action。
使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了,这里说一两个需要注意的地方。
首先添加 Actions 配置文件,e.g. .github/workflows/go-ci.yml:
name: golangci-linton: [push, pull_request]jobs:golangci:name: golang-lintruns-on: ubuntu-lateststeps:- uses: actions/setup-go@v3with:go-version: 1.17- uses: actions/checkout@v3- name: golangci-lintuses: golangci/golangci-lint-action@v3with:version: v1.46.2build:name: go-buildruns-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Gouses: actions/setup-go@v3with:go-version: 1.17- name: Buildrun: go build -v ./...
配置项也都比较简单,不做过多赘述,根据自己的实际情况调整即可。
这个配置添加之后,每次有push的动作,或者PR的请求,都会自动运行该动作,示例如下:

当这个步骤运行失败,则提交PR的人也会自行根据报错内容进行一些自检。
Node
使用的Actions。
- setup-node:提供node的运行环境。
- npm-install:提供一个带有缓存的npm。
name: Teston: [push, pull_request]jobs:lint:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v1with:node-version: '12.x'- name: Install dependenciesuses: bahmutov/npm-install@v1- name: Run linterrun: npm run linttest:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v1with:node-version: '12.x'- name: Install dependenciesuses: bahmutov/npm-install@v1- name: Run testrun: npm testbuild:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-node@v1with:node-version: '12.x'- name: Install dependenciesuses: bahmutov/npm-install@v1- name: Buildrun: npm run build
以上是拿两个语言作为例子,算是一个抛砖引玉,其他语言的检测,可参考官方文档:https://docs.github.com/cn/actions/automating-builds-and-tests/building-and-testing-go 进行配置。
