Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GitHub Actions Upload Artifact not finding provided path from npm run build

I'm trying to set up a react website using CICD principles. I can run it locally, use 'npm run build' to get a build folder, and the website works fine when I manually push the files to S3. However, when I try to run the build and deployment through github actions, the upload-artifacts step gives the following warning: 'Warning: No files were found with the provided path: build. No artifacts will be uploaded.' Obviously the deploy job then fails since it can't find any artifacts to download. Why exactly is this happening? The build folder is definitely being created since running ls after the build lists it as one of the folders in the current working directory.

name: frontend_actions
on:
  workflow_dispatch:
  push:
    paths:
      - 'frontend/'
      - '.github/workflows/frontend_actions.yml'
    branches:
      - master
defaults:
  run:
    working-directory: frontend
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
    - name: npm install
      run: npm install
    - name: npm build
      run: npm run build
      env:
        CI: false
    - name: Upload Artifact
      uses: actions/upload-artifact@master
      with:
        name: build
        path: build
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: build
          path: build
      - name: Deploy to S3
        uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --follow-symlinks --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: 'us-west-2'   # optional: defaults to us-east-1
          SOURCE_DIR: 'build'   # optional: defaults to entire repository
like image 535
Michael Albert Avatar asked Jun 04 '21 03:06

Michael Albert


People also ask

How do I upload an artifact to GitHub Actions?

GitHub Actions artifacts explained First, create a folder named downloads; Second, add some files to the downloads folder; and. Third, use the GitHub upload-artifact action to pull all the files in the downloads folder and package them in a zip file named assets-for-download. zip.

Where is my GitHub artifact?

Under your repository name, click Actions. In the left sidebar, click the workflow you want to see. From the list of workflow runs, click the name of the run to see the workflow run summary. Under Artifacts, click the artifact you want to download.

Can you deploy with GitHub Actions?

GitHub Actions offers features that let you control deployments. You can: Trigger workflows with a variety of events. Configure environments to set rules before a job can proceed and to limit access to secrets.

Can you CD in GitHub Actions?

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub.


Video Answer


1 Answers

It turns out that my knowledge of github actions was incomplete. When setting a default working directory for jobs, the default directory is only used by commands that use 'run'. Hence all of the 'uses' actions are run in the base directory. I guess I've never encountered this issue since I've never tried uploading/downloading artifacts that weren't created in a base github directory.

Fixed the issue by changing the path from 'build/' to 'frontend/build'.

like image 140
Michael Albert Avatar answered Oct 17 '22 18:10

Michael Albert