How to use the GitHub Actions generator
- Pick the Stack: Node.js, Python, Go or Docker image.
- Set the Workflow name and Branches (comma-separated, for example
main, develop). - For Node.js, Python or Go, enter Versions to test, choose the Runner and tick Lint step, Test step and Build step. Node.js also has Package manager: npm, pnpm or Yarn.
- For Docker, decide on Push to GitHub Container Registry and an optional Image name.
- Choose Run on pull requests and Allow manual runs, then save the YAML under
.github/workflows/.
What it does and when to use it
Continuous integration runs your checks on every push, so broken code is caught before it is merged. This tool gives you a working first workflow without reading the whole workflow syntax reference.
Use it for a new repository or to replace a workflow with outdated action versions. The Node.js steps need matching scripts, which the package.json generator writes. A Docker workflow builds the Dockerfile in your repository root, which you can create with the Dockerfile generator. For dependency updates, add the dependabot.yml generator output.
How it works
Every file has the same safe base: permissions: contents: read, and a concurrency group that cancels an older run when you push again to the same branch.
- Node.js: checkout, optional
pnpm/action-setup,actions/setup-nodewith dependency caching, then a clean install (npm ci,pnpm install --frozen-lockfileoryarn install --immutable) and your ticked steps. - Python:
actions/setup-pythonwith pip caching,pip install -r requirements.txt, thenruff check .,pytestandpython -m build. - Go:
go vet ./...,go build ./...andgo test -race ./.... - Docker image: Buildx, a GHCR login skipped on pull requests,
docker/metadata-actionfor tags, anddocker/build-push-actionwith the GitHub Actions cache.
Blank versions fall back to Node.js 24, Python 3.14 or Go 1.27. Action versions were checked on 2026-10-02.
Worked examples
Default Node.js workflow. Versions 22, 24 create a matrix:
strategy:
fail-fast: false
matrix:
node: ["22", "24"]
followed by npm ci, npm run lint, npm test and npm run build.
Python, one version, tests only. Stack Python, versions 3.13, Lint and Build unticked. There is no matrix; the setup step reads python-version: "3.13" with cache: pip, and the last step installs and runs pytest.
Docker image. Stack Docker with push on. The file adds packages: write and builds with push: ${{ github.event_name != 'pull_request' }}, so pull requests build the image without publishing it.
Limits and tips
- One job per file. Deployments, release jobs and service containers are not generated.
- Check the runner. Windows and macOS runners make sense for cross-platform tools; otherwise keep Ubuntu.
- Add secrets in repository settings, never in the YAML itself.
Frequently asked questions
Where do I save the workflow file?
Why does the workflow fail at the Lint or Build step?
Do I need to add a secret to push Docker images?
What does the version matrix do?
Should I pin actions to a commit SHA?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.