GitHub Actions Generator
Generate GitHub Actions workflow YAML from a form. Configure triggers, runner, language, and build steps.
General
Triggers
Runner
Language Setup
Steps
Save as .github/workflows/ci.yml
Workflow: CIRunner: ubuntu-latestLines: 31Bytes: 463
GitHub Actions basics
GitHub Actions automates CI/CD workflows defined in YAML files under .github/workflows/. A workflow contains one or more jobs, each running on a hosted runner (Ubuntu, Windows, or macOS). Steps can run shell commands (run:) or reusable actions (uses:). The actions/checkout action fetches your code; language setup actions (setup-node, setup-python, setup-go) configure the runtime. Workflow files are triggered by events like push, pull_request, or on a schedule.
Built and maintained by Meet Shah · Last updated
What this tool is used for
- Producing a starting workflow without remembering the trigger and job syntax.
- Getting a matrix or a runner declaration right for a language version set.
- Generating a workflow for a new repository consistently with existing ones.
- Producing a scaffold you then extend with real build steps.
- Checking the indentation structure a workflow requires.
Frequently Asked Questions
- What is the difference between push and pull_request triggers?
- `push` fires on commits to the listed branches; `pull_request` fires on the merge result, not the branch head. Enabling both on the same branch runs the workflow twice for a PR from the same repository — one of the most common sources of doubled CI minutes.
- Which runner should I choose?
- `ubuntu-latest` unless you need otherwise: it starts fastest and is billed at the base rate. macOS runners cost ten times more per minute and Windows twice, so a matrix across all three multiplies both the wall clock and the bill — worth it for a cross-platform library, wasteful for a web app.
- What does the cache step actually save?
- The dependency directory keyed by a hash of the lockfile — so an unchanged lockfile restores `node_modules` or `~/.cargo` instead of re-downloading. The key matters more than the path: keying on anything that changes every run means a cache that is always written and never hit.
- Why pin actions to a version?
- Because `@main` executes whatever that repository contains at the moment your job runs, including changes made after your last review. A tag is the minimum; a full commit SHA is what security guidance recommends, since a tag can be moved to point at different code.
- How do secrets work in a workflow?
- They are injected as `${{ secrets.NAME }}` and masked in logs. Two limits worth knowing: a `pull_request` from a fork gets no secrets at all, deliberately, and masking is string matching — a secret that gets base64-encoded or split across lines appears in the log in the clear.
Common errors and gotchas
- Indenting a key under the wrong level, which YAML accepts and Actions then ignores.
- Omitting a checkout step, so the job runs against an empty workspace.
- Granting broad token permissions by default rather than the minimum the job needs.
- Triggering on every push to every branch, which burns minutes and produces noise.
- Assuming secrets are available to workflows triggered from a fork, which they are not.
Related Generators tools
UUID Generator
Generate secure v4 UUIDs.
QR Code Generator
Create customizable QR codes and export as SVG or PNG.
Lorem Ipsum
Generate placeholder paragraphs, sentences, or word lists.
Random Hex Generator
Generate cryptographically random hexadecimal strings.
Random Number String
Generate a random string of digits of any length.
Random String Generator
Generate random strings from a custom character set.
Random Color Generator
Generate random colors as HEX, RGB, and HSL.
MAC Address Generator
Generate random MAC addresses in several formats.