Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Unable to Use Output from dorny/paths-filter@v2 in Startegy Matrix ( Github Action )

I am trying to take output from dorny/paths-filter@v2 which is actually a list of files that got changed, and use it as a multiple input for Strategy matrix in Github Actions.

Although i see relevant file path that got changed, which looks something like "aws/dev/something/yo.yaml" for eg. in the plugins output, but the strategy matrix just dont like it and throws errors like

Error when evaluating 'strategy' for job 'deploy'. .github/workflows/main.yaml (Line: 59, Col: 15): Error parsing fromJson,.github/workflows/main.yaml (Line: 59, Col: 15): Unexpected character encountered while parsing value: a. Path '', line 0, position 0.,.github/workflows/main.yaml (Line: 59, Col: 15): Unexpected value ''

My Github Action file

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

name: Yo

on:
  push:
    branch:
    - main


jobs:
  changes:
    runs-on: ubuntu-latest
    outputs:
      files: ${{ steps.filter.outputs.aws_files }}

    steps:
    - uses: actions/checkout@v2

    - uses: dorny/paths-filter@v2
      id: filter
      with:
        base: ${{ github.ref }}
        list-files: 'escape'
        filters: |
          aws:
          - added|modified: 'aws/**'

  deploy:
    runs-on: ubuntu-latest
    needs: changes
    strategy:
      matrix:
        file: ${{fromJson(needs.changes.outputs.files)}}
      fail-fast: false

    steps:

    - name: Lets See
      env:
        file: ${{matrix.file}}
      run: |
        echo ${{env.file}}

Tried multiple option of the plugin like shell, csv but no luck

>Solution :

The issue is that strategy matrix expects the response from fromJSON to be an array. That’s not happening here, and hence the error.

So you need to make sure dorny/paths-filter@v2 send back the list of files formatted as a JSON array.

- uses: dorny/paths-filter@v2
  id: filter
  with:
    base: ${{ github.ref }}
    list-files: 'json'
    filters: |
      aws:
        - added|modified: 'aws/**'

Notice that list-files: 'json' instead of list-files: 'escape'.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading