Something will eventually be here! 👀
trmcnvn / chrome-addon Goto Github PK
View Code? Open in Web Editor NEW☁ GitHub action to upload addon to Chrome
License: MIT License
☁ GitHub action to upload addon to Chrome
License: MIT License
If I understand correctly, this github action requires that the extension is committed into the repository.
However, I am using a github action to build the artefacts. how can I use this github action to then publish the artefacts direct to the chrome store?
read about it here, and it also has a suggested solution GoogleChrome/developer.chrome.com#3699
Hi,
I'd really like to use your action in one of my projects, but I'm not sure how to get the client id, client secret and refresh token.
I tried to follow this documentation from Google but also didn't get the keys I needed.
Would be super nice, if you can write a quick documentation with links about how to retrieve the needed credentials.
Thanks!
EDIT: Here I found a very good documentation! https://github.com/DrewML/chrome-webstore-upload/blob/master/How%20to%20generate%20Google%20API%20keys.md
extension: abcdefg
Is it supposed to be the Extension ID?
Hello!
I encounter this error trying to upload my extension... any idea? help?
Thanks by advance!
##[error]Node run failed with exit code 1
Run trmcnvn/chrome-addon@v1
with:
extension: ##########
zip: extension.zip
client-id: ***
client-secret: ***
refresh-token: ***
##[error]Request body larger than maxBodyLength limit
##[error]Node run failed with exit code 1
I've tried enabling the debug logging as mentioned in #4,
This is all there is,
2020-04-24T15:41:28.4563154Z ##[debug]Evaluating condition for step: 'Chrome Addon Action'
2020-04-24T15:41:28.4568033Z ##[debug]Evaluating: success()
2020-04-24T15:41:28.4568311Z ##[debug]Evaluating success:
2020-04-24T15:41:28.4568982Z ##[debug]=> true
2020-04-24T15:41:28.4569349Z ##[debug]Result: true
2020-04-24T15:41:28.4571155Z ##[debug]Starting: Chrome Addon Action
2020-04-24T15:41:28.4627060Z ##[debug]Loading inputs
2020-04-24T15:41:28.4630477Z ##[debug]Evaluating: secrets.CHROME_CLIENT_ID
2020-04-24T15:41:28.4631511Z ##[debug]Evaluating Index:
2020-04-24T15:41:28.4631708Z ##[debug]..Evaluating secrets:
2020-04-24T15:41:28.4632003Z ##[debug]..=> Object
2020-04-24T15:41:28.4632264Z ##[debug]..Evaluating String:
2020-04-24T15:41:28.4632473Z ##[debug]..=> 'CHROME_CLIENT_ID'
2020-04-24T15:41:28.4633285Z ##[debug]=> '***'
2020-04-24T15:41:28.4634055Z ##[debug]Result: '***'
2020-04-24T15:41:28.4635387Z ##[debug]Evaluating: secrets.CHROME_CLIENT_SECRET
2020-04-24T15:41:28.4635573Z ##[debug]Evaluating Index:
2020-04-24T15:41:28.4635779Z ##[debug]..Evaluating secrets:
2020-04-24T15:41:28.4636065Z ##[debug]..=> Object
2020-04-24T15:41:28.4636271Z ##[debug]..Evaluating String:
2020-04-24T15:41:28.4636694Z ##[debug]..=> 'CHROME_CLIENT_SECRET'
2020-04-24T15:41:28.4637202Z ##[debug]=> '***'
2020-04-24T15:41:28.4637956Z ##[debug]Result: '***'
2020-04-24T15:41:28.4639054Z ##[debug]Evaluating: secrets.CHROME_REFRESH_TOKEN
2020-04-24T15:41:28.4639248Z ##[debug]Evaluating Index:
2020-04-24T15:41:28.4639404Z ##[debug]..Evaluating secrets:
2020-04-24T15:41:28.4639649Z ##[debug]..=> Object
2020-04-24T15:41:28.4639850Z ##[debug]..Evaluating String:
2020-04-24T15:41:28.4640042Z ##[debug]..=> 'CHROME_REFRESH_TOKEN'
2020-04-24T15:41:28.4640682Z ##[debug]=> '***'
2020-04-24T15:41:28.4640978Z ##[debug]Result: '***'
2020-04-24T15:41:28.4641613Z ##[debug]Loading env
2020-04-24T15:41:28.4645302Z ##[group]Run trmcnvn/chrome-addon@v2
2020-04-24T15:41:28.4645409Z with:
2020-04-24T15:41:28.4645519Z extension: kinpgphmiekapnpbmobneleaiemkefag
2020-04-24T15:41:28.4645624Z zip: dist/chrome.zip
2020-04-24T15:41:28.4645893Z client-id: ***
2020-04-24T15:41:28.4646103Z client-secret: ***
2020-04-24T15:41:28.4646307Z refresh-token: ***
2020-04-24T15:41:28.4646417Z ##[endgroup]
2020-04-24T15:41:28.6234974Z ##[error]Request failed with status code 400
2020-04-24T15:41:28.6285593Z ##[debug]Node Action run completed with exit code 1
2020-04-24T15:41:28.6286741Z ##[debug]Finishing: Chrome Addon Action
Is it possible to log the actual response or the error message so we can understand what was causing this 400?
Rather than using axios error.message, the code should report the API error response. For example, I was getting a 400 error, which turned out to be because the previous version was still pending verification.
I think something like
error.response.data.itemError.forEach(e => core.setFailed(e.error_detail));
in run()'s catch condition should do the work. Maybe add conditional chaining to avoid no response errors, but I don't know if that works in typescript.
P.S.: I had been testing the code on a fork, and I can't make it work. Idk why, the response message should be in error.response.data, but its content is different to the original response.data debuged.
In my case, I'm expecting to see the following response:
{
"kind":"chromewebstore#item",
"id":"...",
"uploadState":"FAILURE",
"itemError":[{
"error_code":"ITEM_NOT_UPDATABLE",
"error_detail":"The item cannot be updated now because it is in pending review, ready to publish, or deleted status."
}]
}
Hello, I'm a collaborator for https://github.com/igrigorik/videospeed and we're experiencing an error 400 when running this action. I believe it worked without issue in the past, so not sure what I may be doing wrong.
Here is a detailed bug report in our own repo for your reference igrigorik/videospeed#614
I suspect the issue may be related to one of these fields being incorrect
client-id: ${{ secrets.CHROME_CLIENT_ID }}
client-secret: ${{ secrets.CHROME_CLIENT_SECRET }}
refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }}
However, I really can't validate since I'm not the product owner so I don't have access to these secrets. I don't mind having the owner validate, which is what my next step will probably be. Still I'm submitting this report so that future internet goers with the same problem could find this as a clue to their problem.
Error 400 (I assume http status code for bad request) is pretty ambiguous. I'm sure that's likely just the upstream error received. If this is due to invalid client secrets, perhaps the error 400 could be trapped and a friendly error message could be presented informing the user to check their client-id/secret/token.
As you can see on https://github.com/Mte90/GlotDict/runs/1510260792?check_suite_focus=true the firefox one worked but the Chrome one no and there is no output to understand what failed.
we are recieving an error when attempting to run the action . I THINK that the issue is that I used the wrong name, (how its displayed on the store, not in the manifest), but debugging is very difficult as there is little to no logging of what is actually happening in the action.
First of all thank you for developing this action, I found it very useful for one of my projects. But I have one suggestion.
TL; DR: Keeping node_modules
in the repository is a bad thing, and I have a suggestion to get rid of it with no drawbacks. Moreover, I can do a PR to resolve this!
I noticed the repository contains node_modules
directory, which contains all dependencies that this action use, including dev, which aren't required for the action users. Adding the whole node_modules
directory to the repository is a bad idea in most cases.
Every time this action is used the action runner downloads ~16 MB (and it's ~82 MB unpacked), which is total overkill for the action.
The template typescript-action
uses @vercel/ncc
builder to build a dist file which is a bundle with all (excluding dev) dependencies. The generated dist file is much smaller (e.g. one of my actions is ~500 KB unpacked, though the project with node_modules
included would require ~99 MB free space).
The only issue is to automate updating dist file on source files change. For my personal purposes I made an action that updates a given file (or multiple files) on GitHub, if it was changed by a script or another action. This action uses the same publishing model, and it could be used as a reference for updating dist files.
Note that this is just a suggestion, I do not insist that you use this approach.
What do you think?
Getting these warnings on CI
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: trmcnvn/chrome-addon
Hi Thomas,
I love your workflow for publishing Firefox add-ons. I want to also use your extension for Chrome extensions but I have a problem with providing the needed credentials.
When creating OAuth credentials here (https://console.cloud.google.com/apis/credentials?project=mental-health-mode-for-lichess) I do not get a client secret.
Can you add some documentation on how to get the needed credentials?
Thanks already :)
Michael
Api changed, no need in secret key.
Can you update the action?
I saw some fixes in other repos.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.