A GitHub action that process and creates content after merge from a specific Pull Request.
steps:
- name: Process Content
uses: betrybe/process-content@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
dirPath: ${{ secrets.FILES_PATH}}
apiKey: ${{ secrets.CONTENT_API_KEY}}
chapterApiURL: ${{ secrets.CONTENT_CHAPTER_API_URL}}
versionApiURL: ${{ secrets.CONTENT_VERSION_API_URL}}
This action accepts the following configuration parameters via with:
-
token
Required
The Github secrets token for checkout the repo
-
dirPath
Required
The directory path of files to be processed
-
apiKey
Required
The Key for access on Trybe Api
-
chapterApiURL
Required
Trybe Application Chapter env URL to process chapters
-
versionApiURL
Required
Trybe Application Version env URL to process versions
-
awsAccessKey
Required
AWS Key for authentication via aws-sdk library
-
awsSecret
Required
AWS Secret for authentication via aws-sdk library
-
bucketName
Required
AWS S3 Bucket name for storing assets
-
pullRequestMergedAt
Required
Time stamp data of when the PR was merged
-
pullRequestMergeCommitId
Required
Pull request number that triggered the action
-
pullRequestId
Required
Pull request number that triggered the action
-
chunkSize
Required
Size of group of files to be sent to chapter creation
-
intervalBetweenChunks
Required
Interval in milliseconds between each group of chapter creation requests
-
healthCheckInterval
Not Required
Interval in milliseconds between each retry on content api health_check
-
maxServiceRetry
Not Required
Maximum of retries action would be doing to content api to check if it is up
-
result
If a new version was createad or not by the action
{"ok": true, "status": 200}
Install the dependencies
npm install
Add Enviroment Variables
cp .env.example .env
Notice that in the .env
file we have the CONTENT_API_KEY environment variable. Change its current value, from <API_KEY>
to the value you want to use. It can be any value, for example:
CONTENT_API_KEY = dev_test_key
After doing this, go to the file dev.exs
of the project Trybe. In this file add the following line to config: trybe
:
content_api: "dev_test_key"
PS: if your Trybe project is running, restart it.
Importante: Make sure that the FILES_PATH
and ASSETS_PATH
environment variables really reflect the path that your .md
files and images are in.
Run locally
node index.js
Run the tests ✔️
$ npm test
PASS ./index.test.js
✓ throws invalid number (3ms)
✓ wait 500 ms (504ms)
✓ test runs (95ms)
...
The action.yml defines the inputs and output for your action.
Update the action.yml with your name, description, inputs and outputs for your action.
See the documentation
Most toolkit and CI/CD operations involve async operations so the action is run in an async function.
const core = require('@actions/core');
...
async function run() {
try {
...
}
catch (error) {
core.setFailed(error.message);
}
}
run()
See the toolkit documentation for the various packages.
GitHub Actions will run the entry point from the action.yml. Packaging assembles the code into one file that can be checked in to Git, enabling fast and reliable execution and preventing the need to check in node_modules.
Actions are run from GitHub repos. Packaging the action will create a packaged action in the dist folder.
Run prepare
npm run package
Since the packaged index.js is run from the dist folder.
git add dist
Users shouldn't consume the action from master since that would be latest code and actions can break compatibility between major versions.
Checkin to the v1 release branch
git checkout -b v1
git commit -a -m "v1 release"
git push origin v1
Note: We recommend using the --license
option for ncc, which will create a license file for all of the production node modules used in your project.
Your action is now published! 🚀
See the versioning documentation
You can now consume the action by referencing the v1 branch
uses: betrybe/process-content@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
dirPath: ${{ secrets.FILES_PATH}}
apiKey: ${{ secrets.CONTENT_API_KEY}}
chapterApiURL: ${{ secrets.CONTENT_CHAPTER_API_URL}}
versionApiURL: ${{ secrets.CONTENT_VERSION_API_URL}}
See the actions tab for runs of this action! 🚀