Open Tarang opened 3 years ago
I am also facing this - any ideas why?
I have fixed my issue.
@Tarang, perhaps the directory that you are trying to upload isn't present. Could you provide with details of your action?
Pretty sure the directory is there, if i use s3 deploy directly it works fine
Hi @Tarang, do you still have this issue? Cloud you paste your action workflow?
Pretty much the example and just changing the folder to dist
:
name: Example workflow for S3 Deploy
on: [push]
jobs:
run:
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
steps:
- uses: actions/checkout@v2
- name: Deploy
uses: reggionick/s3-deploy@v3
with:
folder: dist
bucket: ${{ secrets.S3_BUCKET }}
bucket-region: ${{ secrets.S3_BUCKET_REGION }}
dist-id: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
invalidation: /
delete-removed: true
no-cache: true
private: true
Instead I am doing this to fix it
- uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.S3_BUCKET_REGION }}
SOURCE_DIR: 'dist'
# Invalidate Cloudfront (this action)
- name: invalidate
uses: chetan/invalidate-cloudfront-action@master
env:
DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
PATHS: '/*'
AWS_REGION: ${{ secrets.S3_BUCKET_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Pretty much the example and just changing the folder to
dist
:
Don't you compile anything? Is the folder dist
into your repo?
I compile it in the previous step I erased. But keep in mind the code i replace (in the previous post) works fine and it uses the dist folder.
I also did try alot of debugging to see what was going on, i.e i added bash scripts to ls
and see if anything was there and I could 100% see the dist
folder. Also the npx binary it says NOENT
to actually exists so I would guess its some kind of other issue where something has changed and this package hasnt been updated
@Reggionick i have a Vuepress site which gets built using node (this works successfully) but then I get this error. I am trying to use your action to deploy to an S3 AccessPoint so I might indeed have some permission issues there but it would appear it's falling over before we get to that point.
I've encountered this issue in a new project. I found out that the issue was due to a wrong path: In the action I've set a working directory like:
defaults:
run:
working-directory: frontend
but it seems that the npx
command is executed from the repo root path.
I think this because changing the action folder
param into ./frontend/build
it works.
I haven't check in detail this, but is this scenario like yours?
@Reggionick in your example what does "frontend" represent? Is that where the build assets are being built to? I have been setting the SOURCE_DIR
ENV variable to point to the correct pickup point for S3 content and assuming that the path should be relative to the root of the repo.
Having come back to this issue after a week or so I'm not sure if it's moved forward or backward but for me I no longer get the error regarding the execution of npx but instead get the error: fatal error: An error occurred (NoSuchKey) when calling the ListObjectsV2 operation: The specified key does not exist.
So to be explicit, I setup an Identity step in my action which follows the build of the static assets and precedes me using your repo to push this to an S3 bucket. From this I have validated that indeed npx
is in the path at /opt/hostedtoolcache/node/14.16.1/x64/bin/npx
and I guess my current working directory is /home/runner/work/***/***
where I'm assuming the **** are obfuscating what might be deemed "secret info".
The error message refers to ListObjectsV2
which I am a little uncertain of where this originates but URL structure for an S3 AccessPoint is something like this:
and thereby different from access patterns that point directly to the S3 bucket itself. Not sure if this could be causing the issue but I am able to access the bucket via the Access Point using Panic's Transmit application so the permissions to interact with the bucket are setup correctly. And now, to my great surprise, I can see that in fact this repo's code DID move the files over to the repo:
and the error must have been thrown after the operation had succeeded.
Ok, i'm now even more confused ... I had had set the AWS_REGION
in my action by referring to ${{ secrets.AWS_REGION }}
but since this isn't really a "secret" I just plain texted it and while I wasn't expecting that to make any difference (as I'd double checked that the secret was indeed set on github) ... it appears to have made it work!
I guess this must mean I had fat fingered the AWS_REGION secret in github ... not sure what else would explain it. Anyway, sorry for the red herring.
I've encountered this issue in a new project. I found out that the issue was due to a wrong path: In the action I've set a working directory like:
defaults: run: working-directory: frontend
but it seems that the
npx
command is executed from the repo root path. I think this because changing the actionfolder
param into./frontend/build
it works.I haven't check in detail this, but is this scenario like yours?
Hi, thanks for giving this hint. I can confirm that it works. I have the same setup: Monorepo and a frontend folder that contains the build folder and I had the same issue with EOENT.
Changing s3-deploy to folder: ./frontend/build
worked for me.
Regards Florian
I'm experiencing the same issue. I tried to change the folder but even in the correct path where the build asssets are, I get the npx error
I keep getting this error
I'm a bit unsure what is causing it. I have copied and pasted the yaml on the README pretty much verbatim and used my credentials. I can see there is a related closed issue https://github.com/Reggionick/s3-deploy/issues/13 but it was not resolved.