Github Action: Credo run for only changed files

Does anyone have a Github action that will run Credo (or any command) against only the changed files for the branch/pull request? If so, I would greatly appreciate it :slight_smile: Thank you!

Yes is would be something like this: mix credo diff --from-git-merge-base main where main is the branch you want to check for changes against.

This requires a version of credo >= 1.6. Here are some docs from the changelog were it was introduced.

10 Likes

TIL - Thank you!!

I’m circling back to this and cannot get this to work within GH Actions. Using master / origin/master / ${{ github.head_ref }} all result with the error ** (diff) given value is not a Git ref: .

It has to do with how the code is checked out within a GH Action, I haven’t had enough time to dig into it, any help will be appreciated!

Can you provide us with your GH Action yaml?

on: push

jobs:
  formatting:
    runs-on: ubuntu-latest
    name: Format check
    steps:
      - uses: actions/checkout@v2
      - uses: erlef/setup-beam@v1
        with:
          otp-version: 23.3.4.4
          elixir-version: 1.12.1
      - run: mix deps.get
      - run: mix format --check-formatted
  credo:
    runs-on: ubuntu-latest
    name: Credo
    steps:
      - uses: actions/checkout@v2
      - uses: erlef/setup-beam@v1
        with:
          otp-version: 23.3.4.4
          elixir-version: 1.12.1
      - run: mix deps.get
      - run: mix credo diff --from-git-merge-base origin/master
  compilation:
    runs-on: ubuntu-latest
    name: Compilation with warnings
    steps:
      - uses: actions/checkout@v2
      - uses: erlef/setup-beam@v1
        with:
          otp-version: 23.3.4.4
          elixir-version: 1.12.1
      - run: mix deps.get
      - run: mix compile --warnings-as-errors

I plan on adding build and dep caching once I have it working, thanks!

I had some help from Twitter, and I needed to adjust the checkout action. It works now :slight_smile:

credo:
    runs-on: ubuntu-latest
    name: Credo
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - uses: erlef/setup-beam@v1
        with:
          otp-version: 23.3.4.4
          elixir-version: 1.12.1
      - run: mix deps.get
      - run: mix credo diff --from-git-merge-base origin/master
5 Likes