Github Action
Custom Github Action is for performing task which is re-used. The implementation can be in JS. Repository of the example:
https://github.com/otter13/override-with-secrets-action
Example structure of Github Action folder
.github/actions/override-with-secrets-action/action.yaml
This is the interface to GitHub, specifying inputs.
name: 'override-with-secrets-action'
description: 'loverride values in input json with secrets'
inputs:
jsonString:
required: true
runs:
using: 'node16'
main: 'dist/index.js'
Caller side in workflow
Code snippet for using the action in workflow
- name: Checkout Source
with:
persist-credentials: false
uses: actions/checkout@v3
- name: aws-ssm-to-env
uses: ./.github/actions/override-with-secrets-action
with:
jsonString: $
- name: log envs
env:
output_secrets_override: ${{ env.output_secrets_override }}
run: |
echo $output_secrets_override
.github/actions/override-with-secrets-action/src/index.js
const core = require('@actions/core');
const configureInputs = () => {
const inputjsonString = core.getInput('jsonString');
return {
jsonString: inputjsonString,
}
}
const override = async ({
jsonString
})=> {
var overridenJsonString = ''
const obj = JSON.parse(jsonString)
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
// TODO: override here
console.log(key + " -> " + obj[key]);
}
}
return overridenJsonString
}
const saveToEnv = (overridenJsonString) => {
core.exportVariable('output_secrets_override', overridenJsonString);
}
const run = async () => {
try {
const { jsonString } = configureInputs();
const overridenJsonString = await override({jsonString});
saveToEnv(overridenJsonString);
} catch (error) {
core.setFailed(error.message);
}
}
run();
Package.json
Specifying what packages and the build command
{
"name": "override-with-secrets-action",
"version": "1.0.0",
"description": "",
"main": "src/index.js",
"scripts": {
"build": "ncc build src/index.js -o dist"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@actions/core": "^1.6.0",
"@actions/github": "^5.0.0",
"build": "^0.1.4"
},
"devDependencies": {
"@vercel/ncc": "^0.33.4"
}
}
Top comments (0)