3b63d1a3ea49a4c29ece0fdd40b97c8d72b091bf
Super Linter Reusable Workflow Examples
The GitHub Super-Linter project is a fantastic way to lint all your file types with a single GitHub Actions Workflow. A great way to implement it everywhere is to use GHA's Reusable Workflows (see below).
My video walkthrough of this repository
This repository is part of my example repos on GitHub Actions
- (you are here) bretfisher/github-actions-templates - Main repository
- bretfisher/super-linter-workflow - Reusable linter workflow
- bretfisher/docker-build-workflow- Reusable docker build workflow
- bretfisher/allhands22 - Step by step example of a Docker workflow
- My full list of container examples and tools
🎉🎉🎉 Join my container DevOps community 🎉🎉🎉
Features of this custom Super-Linter example
- All the features of Super-Linter in a Reusable Workflow.
- Bonus: Optionally turn off non-DevOps linters (CSS, JS, HTML, etc.) when you want to ignore code (in my case it's to ignore sample code I stick in DevOps projects).
- Bonus: I added Job steps to correctly determine which branch to diff files with (in the case of having multiple release branches).
- Bonus: Lints only changed files on a PR, but lints all files on merge to main (or any release) branch.
How to reuse this example as a Reusable Workflow
- Fork this repository for you to customize your linters in a single location for your org/projects.
- Add a new workflow to all your other repositories and paste in this YAML to call the central-repos reusable workflow.
---
# template source: https://github.com/bretfisher/super-linter-workflow/blob/main/templates/call-super-linter.yaml
name: Lint Code Base
on:
push:
branches: [main]
pull_request:
jobs:
call-super-linter:
name: Call Super-Linter
permissions:
contents: read # clone the repo to lint
statuses: write #read/write to repo custom statuses
### use Reusable Workflows to call my workflow remotely
### https://docs.github.com/en/actions/learn-github-actions/reusing-workflows
### you can also call workflows from inside the same repo via file path
#FIXME: customize uri to point to your own linter repository
uses: bretfisher/super-linter-workflow/.github/workflows/reusable-super-linter.yaml@main
### Optional settings examples
# with:
### For a DevOps-focused repository. Prevents some code-language linters from running
### defaults to false
# devops-only: false
### A regex to exclude files from linting
### defaults to empty
# filter-regex-exclude: html/.*
How to run Super-Linter locally
Option 1: Use nektos/act to run an existing GitHub Action workflow on your local repository clone.
Option 2: Use Docker to run the Super-Linter image directly.
Option 3: Pick the linter you want to run from Super-Linter, then install it locally to run manually. If you have a linter config, be sure to point the linter to .github/linters/*, and also realize that super-linter has default linter configs, that may change the linters behavior inside super-linter, with templates listed here.