A github action to upload an image.
Provide all required inputs:
path: Path to the image(s) you want to upload. A multiline input is supported.upload-method: Where to upload the image. (see supported upload methods)api-key: The API key for the upload method.
Optional inputs:
expiration: The expiration time of the image in seconds if the upload method supports it.api-secret: The API secret required for cloudinary upload method.cloud-name: The cloud name required for cloudinary upload method.
Returned values:
url: The action returns a URL of the uploaded image asurlor multiple lines with URLs if more than one path was provided.urls: The resulting list of URLs of the uploaded images as an array.expiration: The expiration time of the image in seconds if the upload method supports it. 0 if there is no expiration.delete-url: The URL to delete the image if the upload method supports it. If more than one image was uploaded, the output will be a multiline string.delete-urls: The resulting list of URLs to delete the images as an array.
Legacy support:
There was inconsistency in the naming of inputs and outputs in the previous versions of this action. All inputs and outputs that were in camelCase or snake_case are also available for backward compatibility (e.g., uploadMethod, apiKey, delete_url).
Inputs info based on upload method:
| Upload method | api-key | expiration | cloud-name | api-secret |
|---|---|---|---|---|
| imgbb | required | optional | not supported | not supported |
| cloudinary | required | not supported | required | required |
Outputs info based on upload method:
| Upload method | url(s) | expiration | delete-url(s) |
|---|---|---|---|
| imgbb | present | present | present |
| cloudinary | present | not supported | not supported |
This repository also provides an action to delete images uploaded to IMGBB. You can use it as follows:
- name: Delete image
uses: McCzarny/upload-image/[email protected]
with:
delete-url: ${{ steps.upload-image.outputs.delete-url }}
api-key: '${{ secrets.IMGBB_API_KEY }}'delete-url: The URL to delete the image. For multiple images, each URL should be on a new line.delete-urls: Alternative input that accepts a JSON array of delete URLs.api-key: Your IMGBB API key.
You can use either the multiline delete-url or the JSON array delete-urls - both inputs achieve the same result.
The following workflow uploads a single image and adds it as a comment to your PR:
- name: Upload image
id: upload-image-0
uses: McCzarny/[email protected]
if: github.event_name == 'pull_request'
with:
path: images/0.png
upload-method: imgbb
api-key: '${{ secrets.IMGBB_API_KEY }}'
- name: 'Comment PR'
uses: actions/[email protected]
if: github.event_name == 'pull_request'
with:
github-token: ${{ secrets.TOKEN_GITHUB }}
script: |
const { issue: { number: issue_number }, repo: { owner, repo } } = context;
github.issues.createComment({ issue_number, owner, repo, body: 'Uploaded image:\n'});Upload multiple images in a single workflow:
- name: Upload image
id: upload-image-0
uses: McCzarny/[email protected]
if: github.event_name == 'pull_request'
with:
path: |
images/0.png
images/1.png
images/2.png
upload-method: imgbb
api-key: '${{ secrets.IMGBB_API_KEY }}'
- name: 'Comment PR'
uses: actions/[email protected]
if: github.event_name == 'pull_request'
with:
github-token: ${{ secrets.TOKEN_GITHUB }}
script: |
const { issue: { number: issue_number }, repo: { owner, repo } } = context;
github.issues.createComment({ issue_number, owner, repo, body: 'Uploaded images:\n${{steps.upload-image-0.outputs.url}}'});Upload an image with expiration:
- name: Upload image for 10 minutes
id: upload-image-0
uses: McCzarny/[email protected]
if: github.event_name == 'pull_request'
with:
path: images/0.png
upload-method: imgbb
expiration: 600
api-key: '${{ secrets.IMGBB_API_KEY }}'
Using urls array (pass output to fromJson() method):
- name: Upload images
id: upload_image
uses: McCzarny/[email protected]
if: github.event_name == 'pull_request'
with:
path: |
images/0.png
images/1.png
images/2.png
images/3.png
images/4.png
upload-method: imgbb
api-key: '${{ secrets.IMGBB_API_KEY }}'
- name: 'Comment PR'
uses: actions/[email protected]
if: github.event_name == 'pull_request'
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Images:\n[0]}})[1]}})[2]}})[3]}})[4]}})'
});
https://github.com/McCzarny/crypto-mongrels/blob/master/.github/workflows/generate_mongrel.yml
Please visit https://api.imgbb.com/ to get Your API key and pass it to the action.
This method supports expiration option in seconds 60-15552000. By default, there is no expiration.
This method supports delete_url / delete_urls output. After uploading an image, the action will return a URL where you can find the delete button. There is no official IMGBB API to delete an image, but it can be done by doing a POST request similar to the one sent by the delete button. You can check Test delete URL test in the tests to see how to do it.
Please visit https://cloudinary.com/ to get Your API key, API secret and cloud name and pass them to the action.