MyTechDailyNews Software Guide: Build Actions with the GitHub Actions Toolkit, javascript-action, @actions/core, and Octokit

This MyTechDailyNews Software guide reorganizes the GitHub Actions Toolkit reference into a practical build review for readers who need to choose a runtime, wire up @actions packages, verify example behavior, and publish a maintained action. The source starts from javascript-action, documents core, exec, glob, http-client, io, tool-cache, github, artifact, cache, and attest, then adds type-choice notes, versioning, Problem Matchers, Proxy Server Support, and several walkthroughs.
Checklist: decide the shape before coding
- Use the javascript-action scaffold when the action path is JavaScript.
- Map the Toolkit modules to the duties you need: data handling, command execution, file matching, HTTP, disk operations, tool download, artifact work, dependency caching, GitHub context, and attestations.
- Compare JavaScript and container based actions before committing to a packaging model.
- Confirm the release plan early, because actions are downloaded and run from the GitHub graph of repos.
- Include tests, linting, workflow, publishing, and versioning in the same review pass.
Package reference: what each @actions module covers
- @actions/core handles action inputs, outputs, results, logging, secrets, and variables. Add it with
npm install @actions/core.
- @actions/exec covers CLI execution and output processing. Add it with
npm install @actions/exec.
- @actions/glob locates files that match glob patterns. Add it with
npm install @actions/glob.
- @actions/http-client provides a lightweight HTTP client aimed at action work. Add it with
npm install @actions/http-client.
- @actions/io gives disk helpers including cp, mv, rmRF, and which. Add it with
npm install @actions/io.
- @actions/tool-cache is used for downloading and caching tools, such as setup-* style actions. For workflow dependency caching, the source points to @actions/cache. Add it with
npm install @actions/tool-cache.
@actions/github supplies an Octokit client populated with the current action context. Add it with npm install @actions/github.
- @actions/artifact supports work with action artifacts. Add it with
npm install @actions/artifact.
- @actions/cache caches dependencies and build outputs so workflow execution time can improve. Add it with
npm install @actions/cache.
- @actions/attest supports writing attestations for workflow artifacts. Add it with
npm install @actions/attest.
Action-type comparison table
| Source path | What it teaches | Anchors to keep visible |
| JavaScript action | The guide starts with javascript-action and includes a simple greeting example plus a fuller JavaScript Action Walkthrough. | Hello World JavaScript Action, who-to-greet, milliseconds, tests, linting, workflow, publishing, versioning |
| TypeScript action | The TypeScript path adds compilation while preserving the same release review pattern. | TypeScript Action Walkthrough |
| Container action | The container example is delivered as a Docker image and executed through an entrypoint. | Docker, alpine:3.10, /entrypoint.sh |
| Context-aware container action | The Octokit variant combines a container image with the Toolkit and runtime GitHub context data. | Docker Action Walkthrough with Octokit, Octokit, node, /lib/main.js, myInput |
Step tutorial: implement, test, and package
- Choose the action model first. The source distinguishes JavaScript actions from container based actions.
- Start the JavaScript branch from javascript-action when the guide's template path applies.
- Install needed Toolkit packages through npm. Use @actions/core for action values and @actions/github when Octokit context is required.
- In the greeting path, read the input named who-to-greet and print the Hello message used by Hello World JavaScript Action.
- In the timed path, read milliseconds and compare the run behavior with the JavaScript Action Walkthrough examples.
- Run tests and check the sample output shape. The walkthrough evidence shows a 500 ms wait, one suite, and three tests.
- For the TypeScript branch, use TypeScript Action Walkthrough and keep compilation aligned with the test, linting, workflow, publishing, and versioning checks.
- For the container branch, use Docker Action Walkthrough. Keep the Dockerfile references clear: alpine, version 3.10, copied files, and /entrypoint.sh.
- For the container branch that reads action context, use Docker Action Walkthrough with Octokit. The image path uses node, runs /lib/main.js, and consumes myInput.
- Before publishing, review Problem Matchers and Proxy Server Support. The first scans action output for a pattern and displays it prominently; the second matters when self-hosted runners sit behind a proxy.
- Finalize versioning before release, using the source guidance about the GitHub graph of repos.
Code references from the walkthroughs
const nameToGreet = core.getInput('who-to-greet');
console.log(`Hello ${nameTo-greet}!`);
async function run() {
try {
const ms = core.getInput('milliseconds');
console.log(`Waiting ${ms} milliseconds ...`);
...
}
}
PASS ./index.test.js
✓ throws invalid number
✓ wait 500 ms
✓ test runs
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
import * as core from '@actions/core';
async function run() {
try {
const ms = core.getInput('milliseconds');
console.log(`Waiting ${ms} milliseconds ...`);
...
}
}
FROM alpine:3.10
COPY LICENSE README.md /
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
FROM node:slim
COPY . .
RUN npm install --production
ENTRYPOINT ["node", "/lib/main.js"]
const myInput = core.getInput('myInput');
core.debug(`Hello ${myInput} from inside a container`);
const context = github.context;
console.log(`We can even get context data, like the repo: ${context.repo.repo}`);
Contribution status, support routing, and release notes
The source status note says the repository is not accepting contributions at this time. Resources are directed toward areas that help customers succeed and make developer work easier. GitHub Actions remains described as important to the broader vision, while effort is allocated to other parts of Actions. For feature work and stage updates, the guide points to the GitHub public roadmap.
- Questions and support requests go to Community Discussions.
- High priority bugs can be reported through Community Discussions.
- Security issues follow the project's security.md process.
- Security updates and fixes for major breaking changes are still listed as expected during this period.
- General bugs may still be raised in the repository.
Reviewer conduct is referenced by a separate code of conduct.
FAQ for software editors and tool builders
Which package should be checked first?
@actions/core is the usual first lookup because it deals with inputs, outputs, results, logging, secrets, and variables.
What role does Octokit play?
@actions/github provides the Octokit client and includes the current action context. The Docker Action Walkthrough with Octokit also demonstrates context data such as repository information.
Should I choose JavaScript or Docker?
Use the comparison table. The guide keeps JavaScript action work separate from container based action work, then adds a second container path for Octokit and context usage.
When do Problem Matchers matter?
Problem Matchers matter when action output should be scanned for a specific pattern and surfaced prominently in the interface.
When is Proxy Server Support relevant?
Proxy Server Support is relevant when a self-hosted runner must operate behind a proxy server.
Common misconceptions to avoid
- @actions/tool-cache and @actions/cache solve different problems: tool download versus workflow dependency and build-output caching.
- Docker Action Walkthrough and Docker Action Walkthrough with Octokit are not the same example; the Octokit path brings in @actions/github, context, node, /lib/main.js, and myInput.
- The contribution pause is not presented as a removal of GitHub Actions from the vision; the note still calls GitHub Actions a key part of that direction.
- Versioning is not a post-release detail. The guide places it with action type selection because actions are fetched and run through the GitHub graph of repos.
- Community Discussions is the routed place for questions, support requests, and high priority bugs under the source note.
Action advice for a safer software publish
- Copy the package anchor set into your implementation checklist: @actions/core, @actions/exec, @actions/glob, @actions/http-client, @actions/io, @actions/tool-cache, @actions/cache, @actions/github, @actions/artifact, and @actions/attest.
- Verify input names against the examples: who-to-greet in the greeting path, milliseconds in the timed path, and myInput in the Octokit container path.
- Keep the test evidence visible: the sample includes a 500 ms wait, 1 suite total, and 3 passing tests.
- Confirm the container contract before publishing: alpine, 3.10, /entrypoint.sh, node, or /lib/main.js must match the chosen walkthrough.
- Follow the GitHub public roadmap for feature-stage context and use Community Discussions for support routing.
Data references used in this guide
| Data point | Source anchor | Where it appears |
| Install command form | npm | Package reference list |
| Greeting input | who-to-greet | JavaScript hello example |
| Timed input | milliseconds | JavaScript and TypeScript run examples |
| Wait value | 500 | Sample test output |
| Suite count | 1 | Sample test output |
| Test count | 3 | Sample test output |
| Base container image | alpine | Dockerfile example |
| Base image version | 3.10 | Dockerfile example |
| Entrypoint path | /entrypoint.sh | Dockerfile example |
| Node image family | node | Octokit container Dockerfile |
| JavaScript entrypoint | /lib/main.js | Octokit container Dockerfile |
| Container input | myInput | Octokit container code |