mirror of
https://github.com/fjogeleit/http-request-action.git
synced 2024-12-23 04:37:28 +00:00
Init Action
This commit is contained in:
parent
a0a85cecb8
commit
df0f4b3bfd
7 changed files with 3782 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
33
README.md
Normal file
33
README.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# HTTP Request Action
|
||||||
|
|
||||||
|
Create any kind of HTTP Requests in your GitHub actions to trigger Tools like Ansible AWX
|
||||||
|
|
||||||
|
Exmaple Usage:
|
||||||
|
```
|
||||||
|
jobs:
|
||||||
|
deployment
|
||||||
|
- name: Deploy Stage
|
||||||
|
uses: fjogeleit/http-request-action@master
|
||||||
|
with:
|
||||||
|
url: 'https://ansible.io/api/v2/job_templates/84/launch/'
|
||||||
|
method: 'POST'
|
||||||
|
username: ${{ secrets.AWX_USER }}
|
||||||
|
password: ${{ secrets.AWX_PASSWORD }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Input Arguments
|
||||||
|
|
||||||
|
|Argument| Description | Default |
|
||||||
|
|--------|---------------|-----------|
|
||||||
|
|url | Request URL | _required_ Field |
|
||||||
|
|method | Request Method| POST |
|
||||||
|
|contentType | Request ContentType| application/json |
|
||||||
|
|data | Request Body Content as JSON String, only for POST / PUT / PATCH Requests | '{}' |
|
||||||
|
|timeout| Request Timeout in ms | 5000 (5s) |
|
||||||
|
|username| Username for Basic Auth ||
|
||||||
|
|password| Password for Basic Auth ||
|
||||||
|
|bearerToken| Bearer Authentication Token (without Bearer Prefix) ||
|
||||||
|
|
||||||
|
### Output
|
||||||
|
|
||||||
|
- `response` Request Response as JSON String
|
37
action.yml
Normal file
37
action.yml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
name: 'HTTP Request Action'
|
||||||
|
description: 'Create any HTTP Request'
|
||||||
|
inputs:
|
||||||
|
url:
|
||||||
|
description: 'Request URL'
|
||||||
|
required: true
|
||||||
|
method:
|
||||||
|
description: 'Request Method'
|
||||||
|
required: false
|
||||||
|
default: 'POST'
|
||||||
|
contentType:
|
||||||
|
description: 'Content Type'
|
||||||
|
required: false
|
||||||
|
default: 'application/json'
|
||||||
|
data:
|
||||||
|
description: 'Request Body as JSON String'
|
||||||
|
required: false
|
||||||
|
default: '{}'
|
||||||
|
username:
|
||||||
|
description: 'Auth Username'
|
||||||
|
required: false
|
||||||
|
password:
|
||||||
|
description: 'Auth Password'
|
||||||
|
required: false
|
||||||
|
timeout:
|
||||||
|
description: 'Request Timeout in Sec'
|
||||||
|
required: false
|
||||||
|
default: '5000'
|
||||||
|
bearerToken:
|
||||||
|
description: 'Bearer Authentication Token'
|
||||||
|
required: false
|
||||||
|
outputs:
|
||||||
|
response:
|
||||||
|
description: 'HTTP Response Content'
|
||||||
|
runs:
|
||||||
|
using: 'node12'
|
||||||
|
main: 'dist/index.js'
|
3597
dist/index.js
vendored
Normal file
3597
dist/index.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
48
package-lock.json
generated
Normal file
48
package-lock.json
generated
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"name": "http-request-action",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@actions/core": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.2.tgz",
|
||||||
|
"integrity": "sha512-IbCx7oefq+Gi6FWbSs2Fnw8VkEI6Y4gvjrYprY3RV//ksq/KPMlClOerJ4jRosyal6zkUIc8R9fS/cpRMlGClg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@zeit/ncc": {
|
||||||
|
"version": "0.21.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.21.1.tgz",
|
||||||
|
"integrity": "sha512-M9WzgquSOt2nsjRkYM9LRylBLmmlwNCwYbm3Up3PDEshfvdmIfqpFNSK8EJvR18NwZjGHE5z2avlDtYQx2JQnw=="
|
||||||
|
},
|
||||||
|
"axios": {
|
||||||
|
"version": "0.19.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
|
||||||
|
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
|
||||||
|
"requires": {
|
||||||
|
"follow-redirects": "1.5.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"follow-redirects": {
|
||||||
|
"version": "1.5.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
|
||||||
|
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "=3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
28
package.json
Normal file
28
package.json
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"name": "http-request-action",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"private": false,
|
||||||
|
"scripts": {
|
||||||
|
"build": "ncc build src/index.js -o dist"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/fjogeleit/http-request-action.git"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/fjogeleit/http-request-action/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/fjogeleit/http-request-action#readme",
|
||||||
|
"devDependencies": {
|
||||||
|
"@actions/core": "^1.2.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@zeit/ncc": "^0.21.1",
|
||||||
|
"axios": "^0.19.2"
|
||||||
|
}
|
||||||
|
}
|
38
src/index.js
Normal file
38
src/index.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
const core = require("@actions/core");
|
||||||
|
const axios = require("axios");
|
||||||
|
|
||||||
|
const auth = {}
|
||||||
|
const headers = { 'Content-Type': core.getInput('contentType') || 'application/json' }
|
||||||
|
|
||||||
|
if (!!core.getInput('username')) {
|
||||||
|
auth.username = core.getInput('username');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!!core.getInput('password')) {
|
||||||
|
auth.password = core.getInput('password');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!!core.getInput('bearerToken')) {
|
||||||
|
headers['Authentication'] = `Bearer ${core.getInput('bearerToken')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const instance = axios.create({
|
||||||
|
baseURL: core.getInput('url', { required: true }),
|
||||||
|
timeout: parseInt(core.getInput('timeout') || 5000, 10),
|
||||||
|
headers
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
(async() => {
|
||||||
|
try {
|
||||||
|
const response = await instance.request({
|
||||||
|
auth,
|
||||||
|
method: core.getInput('method') || 'POST',
|
||||||
|
data: JSON.parse(core.getInput('data') || '{}')
|
||||||
|
})
|
||||||
|
|
||||||
|
core.setOutput('response', JSON.stringify(response.data))
|
||||||
|
} catch (error) {
|
||||||
|
core.setFailed(JSON.stringify({ code: error.response.code, message: error.response.data }))
|
||||||
|
}
|
||||||
|
})()
|
Loading…
Reference in a new issue