SnapBlog

GitHub Actions fails with reading JToken from JsonReader error

I am trying to follow the How to use GitHub Actions build matrix to deploy artifacts to multiple servers tutorial. I have finished halfway through the tutorial, however, I get the following error when it builds the app.

Error when evaluating 'strategy' for job 'prepare-release-on-servers'. (Line: 53, Col: 17): Error reading JToken from JsonReader. Path '', line 0, position 0.,(Line: 53, Col: 17): Unexpected value '' 

enter image description here

I have checked the JSON file for validation and gone through the deployment file countless times.

Here is the deploy-application.yml file.

name: Deploy Application on: push: branches: - main jobs: create-deployment-artifacts: name: Create deployment artifacts runs-on: ubuntu-latest outputs: deployment-matrix: ${{ steps.export-deployment-matrix.outputs.deployment-matrix }} steps: - uses: actions/checkout@v2 - name: Compile CSS and Javascript run: | npm install npm run prod - name: Configure PHP 8.0 uses: shivammathur/setup-php@v2 with: php-version: 8.0 extensions: mbstring, ctype, fileinfo, openssl, PDO, bcmath, json, tokenizer, xml - name: composer install run: | composer install --no-dev --no-interaction --prefer-dist - name: Create deployment artifact env: GITHUB_SHA: ${{ github.sha }} run: tar -czf "${GITHUB_SHA}".tar.gz --exclude=*.git --exclude=node_modules --exclude=tests * - name: Store artifact for distribution uses: actions/upload-artifact@v2 with: name: app-build path: ${{ github.sha }}.tar.gz - name: Export deployment matrix id: export-deployment-matrix run: | JSON="$(cat ./deployment-config.json)" JSON="${JSON//'%'/'%25'}" JSON="${JSON//$'\n'/'%0A'}" JSON="${JSON//$'\r'/'%0D'}" echo "::set-output name=deployment-matrix::$(echo $JSON)" prepare-release-on-servers: name: "${{ matrix.server.name }}: Prepare release" runs-on: ubuntu-latest needs: create-deployment-artifacts strategy: matrix: server: ${{ fromJson(needs.create-deployment-artifacts.outputs.deployment-matrix) }} steps: - uses: actions/download-artifact@v2 with: name: app-build 

Here is the JSON file.

[{"name":"server-1","ip":"216.656.30.240","username":"root","password":"sdddssafilgwzxcxvgvggfdassa","port":"22","beforeHooks":"","afterHooks": "","path": "/var/www/html" }] 

I cannot find the problem here. Any help would be nice. Thanks in advance.

1

2 Answers

Maybe you should follow the instructions of Philo article link

This code is also running deprecated commands(set-output). so you need also not to use them anymore and use the new ones.

  • name: Set output run:

    echo "{name}={value}" >> $GITHUB_OUTPUT 

I also suffered on this issue several hours & finally got this.

run: | delimiter="$(openssl rand -hex 8)" JSON="$(cat ./deployment-config.json)" echo "deployment_matrix<<${delimiter}" >> "${GITHUB_OUTPUT}" echo "$JSON" >> "${GITHUB_OUTPUT}" echo "${delimiter}" >> "${GITHUB_OUTPUT}"

ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJobXJqZ2uFenyOoKCtoKWXeqKv06Kmp6tdm66quNJmrqKsmGK%2Fpq3DoqWgZZqpvKyxzWadq6edYre0u82rnJqclad6pr7RqKk%3D

Tamela Phillippe

Update: 2024-06-30