0
点赞
收藏
分享

微信扫一扫

Gitlab里面使用github super-linter

背景

最近一个项目需要在Gitlab CI里面做Linting。传统的方式是需要扫描什么内容就用对应的linting工具,然后发现github上面有个小项目叫super-linter,就是把常用的工具都打包装好了,用这么一个工具就可以扫描各种语言了。这个工具本来是给github action量身定做的,但是第三方的CI/CD也是可以用的。下面看看如何在gitlab里面使用。

官网链接在这里 https://github.com/github/super-linter

如果是github action里面使用,直接checkout整个repo就是了,但是如果在第三方使用,也可以直接使用docker 镜像。他的Dockerfile里面安装了几十种工具,直接的后果呢 就是这个镜像特别大,我下载了之后这个镜像尺寸高达6G。

首先看看我的测试环境,一个gitlab的目录里面,我创建了一个python 目录,一个powershell 目录,python目录里面扔了一个dockerfile,一个python文件,一个shell文件, powershell里面扔了一个powershell文件。

配置文件

yuan@yuan-VirtualBox:~/devops/gitlab-2-azure/test_lint$ tree -a

.

├── Dockerfile

├── .gitkeep

├── .gitlab-ci.yml

├── powershell

│   ├── .gitkeep

│   └── test.ps1

└── python

    ├── Dockerfile

    ├── .gitkeep

    ├── test.py

    └── test.sh

然后下面是我的.gitlab-ci.yml 文件。注意在gitlab里面 CI_BUILDS_DIR 指向的是 /builds 目录,是一个绝对路径,而CI_PROJECT_PATH 则是一个相对路径,在配置DEFAULT_WORKSPACE的时候 我们需要使用绝对路径。其他的环境变量 可以参照github的链接进行测试

stages:
  - python-linting
  - powershell-linting

lint1:
  stage: python-linting
  image: 
    name: github/super-linter:latest
    entrypoint: [""]
  script: 
    - |
      pwd
      echo  ${CI_BUILDS_DIR} 
      ls  ${CI_BUILDS_DIR}/ozbillwang/gitlab-2-azure/test_lint -lah
      /action/lib/linter.sh
variables: 
    RUN_LOCAL: "true"
    DEFAULT_WORKSPACE: ${CI_BUILDS_DIR}/ozbillwang/gitlab-2-azure/test_lint/python
    LINTER_RULES_PATH: $CI_PROJECT_PATH/.github/linters
    VALIDATE_PYTHON_PYLINT: "true"
    PYTHON_PYLINT_CONFIG_FILE: .python-lint	
    VALIDATE_POWERSHELL: "true" 
    VALIDATE_BASH: "true"
    VALIDATE_DOCKERFILE_HADOLINT: "true"
    DOCKERFILE_HADOLINT_FILE_NAME: .hadolint.yaml	

lint2:
  stage: powershell-linting
  image: 
    name: github/super-linter:latest
    entrypoint: [""]
  script: 
    - |
      echo "testing powershell"
      /action/lib/linter.sh
variables: 
    RUN_LOCAL: "true"
    DEFAULT_WORKSPACE: ${CI_BUILDS_DIR}/ozbillwang/gitlab-2-azure/test_lint/powershell
    LINTER_RULES_PATH: $CI_PROJECT_PATH/.github/linters
    VALIDATE_POWERSHELL: "true" 
    

测试结果

测试的效果如下 第一个job 扫描 python 目录下的三个文件都通过了,第二个job 扫描 powershell 发现问题,状态显示失败

image.png

image.png

image.png

举报

相关推荐

0 条评论