GitHub Actions Generator — Free Online Tool

Generate GitHub Actions CI/CD workflows for Node.js, Python, Docker, testing, deployment. YAML validation, best practices, secrets management. Copy-paste ready.

Use this free online GitHub Actions Generator directly in your browser. No signup required, no data leaves your device. Part of Utilier — a collection of 133+ developer utilities.

What is GitHub Actions Workflow Generator & Validator?

GitHub Actions is GitHub's built-in CI/CD platform for automating build, test, and deployment workflows. This tool generates GitHub Actions YAML workflows for common scenarios — Node.js testing, Python testing, Docker build, deployment to AWS/Vercel/Netlify, release automation. Select workflow type, configure triggers (push, pull_request, schedule), jobs, steps, and copy the YAML to .github/workflows/ in your repo. Validates YAML syntax, checks for security issues (hardcoded secrets), and suggests best practices (caching, matrix builds).

  • Workflow templates: Pre-built workflows: Node.js CI (npm test, lint), Python CI (pytest, black), Docker build/push, deploy to cloud (AWS, Vercel, Netlify), release (semantic-release, changelog), cron jobs.
  • Trigger configuration: Set when workflow runs: push (on commits), pull_request (on PR), workflow_dispatch (manual), schedule (cron), release (on new release). Multi-branch support (main, dev, feature/*).
  • Jobs and steps: Define jobs (build, test, deploy), each with steps (checkout code, setup Node.js, run tests, upload artifacts). Jobs run in parallel or sequentially (depends_on).
  • Security checks: Validates secrets usage (secrets.GITHUB_TOKEN, secrets.API_KEY), warns about hardcoded credentials, suggests least-privilege permissions (read-only tokens).
  • YAML validation: Checks YAML syntax, required fields (on, jobs, steps), invalid actions (uses: actions/checkout@v999), missing secrets references.

Why use GitHub Actions generator?

Writing GitHub Actions workflows manually requires knowledge of YAML syntax, action names, secrets, caching, and matrix builds. This tool generates workflows with best practices.

  • Avoid syntax errors: YAML is indentation-sensitive. Missing spaces, wrong alignment, or tabs break workflows. Tool validates syntax and catches errors before commit.
  • Discover actions: GitHub Actions ecosystem has 1000s of actions (actions/checkout, actions/setup-node, docker/build-push-action). Hard to remember all. Tool suggests common actions.
  • Learn workflow structure: See how on, jobs, steps, env, secrets work together. Great for learning GitHub Actions syntax and CI/CD concepts.
  • Save time: No need to search GitHub docs for action syntax or workflow examples. Tool generates production-ready workflows instantly.
  • Security best practices: Tool uses secrets correctly (secrets.API_KEY, not hardcoded). Suggests least-privilege permissions (contents: read, not write unless needed).
  • Caching and matrix builds: Enables caching (npm, pip, cargo) for faster builds. Supports matrix builds (test Node.js 18, 20, 22 in parallel).

When to use GitHub Actions generator

Use whenever you need to automate CI/CD workflows on GitHub repositories.

  • Setting up CI for Node.js, Python, Java, Go, or Rust projects (test on push, PR).
  • Automating Docker build and push to Docker Hub or GitHub Container Registry.
  • Deploying to cloud (AWS Lambda, Vercel, Netlify, GitHub Pages) on push to main.
  • Running tests on multiple Node.js/Python versions (matrix builds).
  • Creating release workflows (semantic-release, changelog, GitHub Releases).
  • Scheduling cron jobs (nightly builds, weekly dependency updates).
  • Learning GitHub Actions by experimenting with triggers, jobs, and steps.

How to use GitHub Actions generator

Select workflow type, configure triggers and jobs, generate YAML.

  1. Choose workflow type: Select from templates: Node.js CI, Python CI, Docker build, Deploy to cloud, Release automation, Cron job, or blank (custom workflow).
  2. Set workflow triggers: Choose when workflow runs: push (branches: main, dev), pull_request (target: main), workflow_dispatch (manual), schedule (cron: '0 0 * * *' for daily at midnight).
  3. Configure jobs: Add jobs (build, test, deploy). Set runs-on (ubuntu-latest, windows-latest, macos-latest). Define steps (checkout, setup, install, test, deploy).
  4. Add secrets (optional): Reference secrets for API keys, tokens, passwords: ${{ secrets.API_KEY }}. Never hardcode secrets. Add secrets in repo Settings > Secrets.
  5. Enable caching (optional): Enable npm, pip, or cargo caching to speed up builds. Tool adds actions/cache step with correct cache paths.
  6. Validate workflow: Click Validate to check YAML syntax, security issues (hardcoded secrets), missing fields, invalid action versions.
  7. Copy YAML: Click Copy to get the workflow YAML. Save as .github/workflows/ci.yml in your repo. Commit and push to trigger workflow.

Key features

  • Workflow templates: Node.js, Python, Docker, deploy (AWS, Vercel, Netlify), release, cron. Pre-configured with best practices.
  • Trigger builder: Configure push, pull_request, workflow_dispatch, schedule (cron), release. Multi-branch support (main, dev, feature/*).
  • Matrix builds: Test across multiple Node.js versions (18, 20, 22), Python versions (3.10, 3.11, 3.12), or OSes (ubuntu, windows, macos) in parallel.
  • Caching: Auto-configure caching for npm (node_modules), pip (~/.cache/pip), cargo (~/.cargo). Reduces build time by 50-90%.
  • Secrets management: Use ${{ secrets.API_KEY }} for API keys, tokens. Never hardcode. Tool warns about hardcoded credentials.
  • YAML validation: Checks syntax, required fields, invalid actions, missing secrets. Highlights errors before commit.
  • Permissions: Set least-privilege permissions: contents: read (default), contents: write (for commits), packages: write (for Docker push).

Common use cases

  • Node.js CI: Test on push and PR. Steps: checkout, setup Node.js, npm install, npm test, npm run lint. Runs on ubuntu-latest with Node.js 20.
  • Docker build and push: Build Docker image on push to main. Push to Docker Hub or GitHub Container Registry. Uses docker/build-push-action.
  • Deploy to Vercel: Deploy Next.js app on push to main. Uses vercel/actions or vercel CLI. Requires VERCEL_TOKEN secret.
  • Python CI (pytest): Test Python app on push. Steps: checkout, setup Python 3.11, pip install, pytest. Matrix: test on Python 3.10, 3.11, 3.12.
  • Release automation: Create GitHub Release on tag push. Uses semantic-release or actions/create-release. Generates changelog automatically.
  • Cron job (nightly build): Run tests daily at midnight. Trigger: schedule: cron: '0 0 * * *'. Useful for dependency health checks.

Examples

GitHub Actions workflows generated by this tool.

Node.js CI (test on push and PR)

Type: Node.js CI, Trigger: push (main), pull_request, Node.js: 20
name: Node.js CI
on: push: branches: [main] pull_request:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm ci - run: npm test

Runs on push to main and on PR. Installs deps (npm ci), runs tests. Uses Node.js 20 on ubuntu-latest.

Docker build and push to Docker Hub

Type: Docker, Trigger: push (main), Registry: Docker Hub
name: Docker Build
on: push: branches: [main]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - uses: docker/build-push-action@v5 with: push: true tags: user/app:latest

Builds Docker image on push to main. Logs in to Docker Hub (secrets.DOCKER_USERNAME, secrets.DOCKER_TOKEN), builds and pushes image.

Deploy to Vercel on push to main

Type: Deploy, Platform: Vercel, Trigger: push (main)
name: Deploy to Vercel
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm install -g vercel - run: vercel --prod --token=${{ secrets.VERCEL_TOKEN }}

Deploys Next.js/React app to Vercel on push to main. Requires VERCEL_TOKEN secret. Runs vercel --prod for production deployment.

Matrix build (test Node.js 18, 20, 22)

Type: Node.js CI, Matrix: node-version: [18, 20, 22]
name: Node.js CI
on: [push]
jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18, 20, 22] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: npm ci - run: npm test

Runs 3 parallel jobs (Node.js 18, 20, 22). Each job runs checkout, setup, install, test. Matrix tests compatibility across versions.

Cron job (nightly tests)

Type: Cron, Schedule: '0 0 * * *' (daily at midnight UTC), Job: run tests
name: Nightly Tests
on: schedule: - cron: '0 0 * * *'
jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci - run: npm test

Runs daily at midnight UTC. Useful for nightly builds, dependency health checks, or scheduled tasks. Cron syntax: '0 0 * * *' = midnight daily.

Technical reference

GitHub Actions workflow structure and syntax:

Workflow file location
.github/workflows/*.yml or *.yaml. GitHub automatically detects files in this directory. Example: .github/workflows/ci.yml, .github/workflows/deploy.yml.
on (triggers)
When workflow runs. push (on commits), pull_request (on PR), workflow_dispatch (manual), schedule (cron), release (on new release). Example: on: [push, pull_request]
jobs
Define jobs (build, test, deploy). Each job runs on a runner (ubuntu-latest, windows-latest, macos-latest). Jobs run in parallel unless depends_on is set. Example: jobs: build: runs-on: ubuntu-latest
steps
Actions or commands in a job. uses: for actions (actions/checkout@v4), run: for shell commands (npm test). Example: - uses: actions/checkout@v4 - run: npm install
secrets
Sensitive data (API keys, tokens). Reference: ${{ secrets.API_KEY }}. Add in repo Settings > Secrets and variables > Actions. Never hardcode secrets in YAML.
env
Environment variables. Set at workflow, job, or step level. Example: env: NODE_ENV: production. Access in scripts: echo $NODE_ENV.
matrix
Run job across multiple configurations. Example: matrix: node-version: [18, 20, 22]. Creates 3 parallel jobs (Node.js 18, 20, 22).
caching
actions/cache caches dependencies (node_modules, pip cache). Reduces build time. Example: - uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
permissions
Set token permissions for GITHUB_TOKEN. Default: read. Set contents: write for commits, packages: write for Docker push. Example: permissions: contents: read
artifacts
Upload build artifacts (logs, test reports, binaries). actions/upload-artifact stores files, actions/download-artifact retrieves in later jobs. Example: - uses: actions/upload-artifact@v4 with: name: coverage path: coverage/

Common mistakes to avoid

Hardcoding secrets (API_KEY=abc123) instead of using ${{ secrets.API_KEY }}

Why it happens: Hardcoded secrets are visible in YAML (public repo = exposed secrets, private repo = visible to collaborators). GitHub scans for leaked secrets but may miss patterns. Common for beginners who don't know about repo secrets.

How to avoid it: Add secrets in repo Settings > Secrets and variables > Actions. Reference in YAML: ${{ secrets.API_KEY }}. Never hardcode. For forks, use environments (requires approval).

Not caching dependencies, causing slow builds (5-10 minutes every time)

Why it happens: Without caching, npm install or pip install re-downloads all dependencies every run (slow, wastes GitHub Actions minutes). Caching reduces install time from 5 min to 10 sec. Common oversight for new users.

How to avoid it: Add actions/cache for npm, pip, or cargo. Example: - uses: actions/cache@v4 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}. Tool auto-adds caching.

Using actions/checkout@v1 or actions/setup-node@v1 (deprecated, insecure)

Why it happens: Old action versions (v1, v2) are deprecated and may have security vulnerabilities (Node.js 12 end-of-life). GitHub warns about outdated actions. Common in old workflows or copy-pasted examples.

How to avoid it: Use latest versions: actions/checkout@v4, actions/setup-node@v4. Check GitHub Marketplace for current versions. Tool uses latest by default.

Not setting permissions, granting excessive write access to GITHUB_TOKEN

Why it happens: Default GITHUB_TOKEN has write permissions (can commit, create releases). If workflow is compromised, attacker can push malicious code. CIS GitHub Actions benchmark requires least-privilege permissions.

How to avoid it: Set permissions: contents: read (read-only) unless write is needed. For commits: contents: write. For Docker push: packages: write. Minimize scope.

Running workflows on every push (including drafts), wasting GitHub Actions minutes

Why it happens: Trigger on: [push] runs on every commit to every branch (including WIP branches, draft PRs). This wastes free minutes (2000/month for free plan). Common when using default templates without customization.

How to avoid it: Limit triggers: on: push: branches: [main, dev]. Or use pull_request only. Avoid running on every branch. Save minutes for important builds.

Frequently asked questions

Where do I put GitHub Actions workflow files?

.github/workflows/ directory in repo root. Example: .github/workflows/ci.yml. GitHub automatically detects and runs workflows in this directory.

How do I add secrets (API keys, tokens) to workflows?

Repo Settings > Secrets and variables > Actions > New repository secret. Add NAME and VALUE. Reference in YAML: ${{ secrets.NAME }}. Never hardcode secrets.

What is the difference between push and pull_request triggers?

push runs on commits (every git push). pull_request runs on PR creation/update. Use pull_request for code review checks, push for deployment workflows.

How do I test across multiple Node.js or Python versions?

Use matrix builds. Example: strategy: matrix: node-version: [18, 20, 22]. Creates 3 parallel jobs (one per version). Each job runs all steps with different versions.

What is actions/cache and why use it?

actions/cache caches dependencies (node_modules, pip cache) between runs. Reduces install time from 5 min to 10 sec. Saves GitHub Actions minutes. Always enable caching for npm, pip, cargo.

How do I manually trigger a workflow?

Add workflow_dispatch trigger: on: workflow_dispatch:. Then go to repo > Actions > select workflow > Run workflow. Useful for manual deployments or testing.

What are GitHub Actions free tier limits?

Free plan: 2000 minutes/month (public repos unlimited). Private repos use minutes. Windows/macOS runners use 2x-10x minutes. Monitor usage in Settings > Billing.

References

Privacy and availability

  • Runs entirely in your browser — zero server processing
  • No signup or account required
  • Works offline once loaded
  • Fast, lightweight, no external dependencies
  • Available as a browser extension for Chrome and Firefox