GitHub Actions for Lazy Developers (Like Me): How I Stopped Writing YAML and Let ChatGPT Do the Work
Because automation should save time, not cost you your weekend.
“So What Can GitHub Actions Actually Do For Me?”
GitHub Actions is a free (within limits) automation engine built into GitHub. It can run whenever you:
- Push or pull code
- Open a PR
- Create a release
- Star your own repo by accident at 2 AM
What can it do?
- Test your code
- Lint it with tools like ruff
- Type-check with pyright or ty
- Build Docker images
- Deploy your app or static site
- Sync to S3
- Tweet, email, or message you if things break
- Run on Linux, Mac, or Windows
- Run across Python/Ruby/Node/Go/Java versions
- Even respond to comments (yes, like a bot)
What it can’t do:
- Write bug-free code
- Give you free unlimited compute (limits below)
- Replace real deployment tools for complex systems (but it gets close)
- Replace hugging your rubber duck
“Is It Actually Free?”
Yes — within reason. For public repos:
- Free unlimited minutes.
- Up to 20 concurrent jobs.
- Storage limits on artifacts/logs (500 MB by default, more available).
For private repos:

Want to test 5 Python versions on 3 OSs with every push? You’ll hit limits fast. Be smart.
The Real Magic?
Letting ChatGPT Write Your GitHub Actions
You don’t need to memorize YAML. You do need to learn how to prompt well.
Here’s a killer template:
You are a DevOps assistant. I want a GitHub Actions workflow for a Python project.
Requirements:
- Runs on push and PR
- Tests with pytest
- Uses Python 3.11
- Installs with `uv pip install -r requirements.txt`
- Uses `ruff` for linting
- Uses `ty` for type-checking
- Caches dependencies
- Runs on Linux and Mac
- Fails fast on errors
Output only valid YAML.
Then just paste it into .github/workflows/main.yml
.
Boom. Instant workflow.
What I Use in Every Project
Here’s a no-nonsense GitHub Actions template you’ll actually want to reuse:
name: CI
on: [push, pull_request]
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.10, 3.11]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Install deps with uv
run: |
uv pip install -r requirements.txt
- name: Run ruff
run: |
uv pip install ruff
ruff check .
- name: Run ty
run: |
uv pip install ty
ty check .
- name: Run tests
run: |
uv pip install pytest
pytest
And yes, this caches automatically because uv uses system-level pip cache.
If you want explicit caching:
- uses: actions/cache@v4
with:
path: ~/.cache/uv
key: ${{ runner.os }}-uv-${{ hashFiles('**/requirements.txt') }}
Pro-Level Tricks You’ll Thank Me For
1. Fail Fast
Let broken steps stop the pipeline early.
continue-on-error: false
2. Matrix Builds
Test all combinations once. But beware — they multiply fast.
3. Don’t Lint & Type-Check Every Time
Split your jobs:
jobs:
lint:
...
typecheck:
...
test:
...
Now if ruff
fails, you don’t waste time running tests.
4. Cache Smart
Use actions/cache@v4
and match pip
or uv cache dirs
. Save minutes per run.
5. Secrets Are… Secret
Use GitHub repo secrets to store API keys, passwords, or Docker tokens.
Access with:
${{ secrets.MY_SECRET }}
What To Automate Next
- Auto-tag on merge to main
- Create releases on tag push
- Auto-update changelog
- Auto-deploy static sites (S3, Vercel, Cloudflare)
- Deploy Python apps to Heroku, Fly.io, Railway, etc.
- Notify you on Telegram when tests fail
- Post coverage to Codecov or SonarCloud
Yes, you can do all that with GitHub Actions — and ChatGPT can write 95% of the boilerplate for you.
Summary (AKA the Lazy Dev Manifesto)
- You don’t need to be a CI/CD expert to get 80% of the benefits.
- Use GitHub Actions + ChatGPT = DevOps cheat code.
- Test. Lint. Typecheck. Cache. Deploy. Sleep better.
- The time you spend setting it up? Paid back in hours saved on broken builds, missing tests, and forgotten deploys.