Create HTTP Requests from GitHub Actions. This action allows GitHub events to engage with tools like Ansible AWX that use HTTP APIs.
jobs:
deployment:
runs-on: ubuntu-latest
steps:
- name: Deploy Stage
uses: fjogeleit/http-request-action@v1
with:
url: 'https://ansible.io/api/v2/job_templates/84/launch/'
method: 'POST'
username: ${{ secrets.AWX_USER }}
password: ${{ secrets.AWX_PASSWORD }}
customHeaders: '{"Content-Type": "application/json"}'
data: '{"key_1": "value_1", "key_2": "value_2"}'master branch is deprecated. Please use main or v1 to get the latest version of this action. It is recommended to use a fixed version.
| Argument | Description | Default |
|---|---|---|
| url | Request URL | required Field |
| method | Request Method | POST |
| contentType | Request Content-Type | application/json |
| data | Request body content: - Text content such as JSON or XML - key=value pairs separated by &, or JSON data with contentType: application/x-www-form-urlencodedOnly for POST, PUT, and PATCH requests |
'{}' |
| files | Map of keys to absolute file paths, sent as a multipart/form-data request to the API. If set, contentType is set to multipart/form-data; values provided by data will be added as additional FormData values. Nested objects are not supported. Example provided in the test Workflow of this Action |
'{}' |
| file | Single absolute file path sent as an application/octet-stream request to the API. If set, contentType is set to application/octet-stream. This input is ignored if either data or files is present. Example provided in the test Workflow of this Action |
|
| timeout | Request Timeout in ms | 5000 (5s) |
| username | Username for Basic Auth | |
| password | Password for Basic Auth | |
| bearerToken | Bearer authentication token (without the Bearer prefix) |
|
| customHeaders | Additional header values as a JSON string. Keys in this object overwrite default headers such as Content-Type |
'{}' |
| escapeData | Escape newlines in data string content. Use true (string) to enable |
|
| preventFailureOnNoResponse | Prevent this action from failing if the request responds without a response. Use true (string) to enable |
|
| ignoreStatusCodes | Prevent this action from failing if the request responds with one of the configured status codes. Example: 404,401 |
|
| httpsCA | Certificate authority as string in PEM format | |
| httpsCert | Client Certificate as string | |
| httpsKey | Client Certificate Key as string | |
| responseFile | Persist the response data to the specified file path | |
| maskResponse | If set to true, the response will be masked in the action logs |
'false' |
| retry | Optional number of retries if the request fails; does not retry if the status code is ignored | |
| retryWait | Time between each retry in milliseconds | 3000 |
| ignoreSsl | Ignore SSL verification (rejectUnauthorized: false) |
false |
| Variable | Description |
|---|---|
response |
Response body as a JSON string |
headers |
HTTP response headers as an object |
status |
HTTP status code (e.g. 200, 404) |
requestError |
Set on request failure (Axios error). JSON string with fields name, message, code, and status (may be null) |
To display HTTP response data in the GitHub Actions log, give the request an id and access its outputs. You can also access a specific field from the response data using the fromJson() expression.
steps:
- name: Make Request
id: myRequest
uses: fjogeleit/http-request-action@v1
with:
url: "http://yoursite.com/api"
- name: Show Response
run: |
echo ${{ steps.myRequest.outputs.response }}
echo ${{ steps.myRequest.outputs.headers }}
echo ${{ steps.myRequest.outputs.status }}
echo ${{ fromJson(steps.myRequest.outputs.response).field_you_want_to_access }}Additional information is available if debug logging is enabled:
- Instance Configuration (Url / Timeout / Headers)
- Request Data (Body / Auth / Method)
To enable debug logging in GitHub Actions, create a secret ACTIONS_RUNNER_DEBUG with a value of true.
- You can execute this tool locally with the provided CLI
bin/http-action.
bin/http-action --help
Positionals:
url request URL [string]
Options:
--help show help [boolean]
-d, --data request body data [string] [default: "{}"]
-f, --files request files, send as multipart/form-data [string] [default: "{}"]
--file single file, send as application/octet-stream [string]
-h, --customHeaders custom request headers [string] [default: "{}"]
-m, --method request method (GET, POST, PATCH, PUT, DELETE) [string] [default: "POST"]
-t, --contentType request content type [string] [default: "application/json"]
--bearerToken bearer token without Bearer prefix, added as
Authorization header [string]
--timeout request timeout [number] [default: 5000]