From 185dc5f66267d5ab8446ab51e03f051a4210e0b3 Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Thu, 14 Aug 2025 20:35:26 -0700 Subject: [PATCH] ci: don't hide or ignore any commit types, at least bump the patch version if new commits are detected by release.yml --- .releaserc.json | 12 ++++---- README.md | 81 ++++++++++++++++++++++++------------------------- 2 files changed, 46 insertions(+), 47 deletions(-) diff --git a/.releaserc.json b/.releaserc.json index 21a4558..aa75008 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -14,7 +14,7 @@ { "type": "ci", "section": "CI/CD" }, { "type": "docs", "section": "Documentation" }, { "type": "refactor", "section": "Refactor" }, - { "type": "chore", "hidden": true } + { "type": "chore", "section": "Chores" } ] }, "plugins": [ @@ -31,11 +31,11 @@ { "type": "deps", "release": "minor" }, { "type": "new", "release": "minor" }, { "type": "fix", "release": "patch" }, - { "type": "build", "release": false }, - { "type": "ci", "release": false }, - { "type": "chore", "release": false }, - { "type": "docs", "release": false }, - { "type": "refactor", "release": false } + { "type": "build", "release": "patch" }, + { "type": "ci", "release": "patch" }, + { "type": "chore", "release": "patch" }, + { "type": "docs", "release": "patch" }, + { "type": "refactor", "release": "patch" } ] } ], diff --git a/README.md b/README.md index 2d2fe62..7065355 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,12 @@ A sweet little portfolio site with some absolutely ridiculous SMS shenanigans bu ## ✨ The Good Stuff - 🌙 **Night mode everything** - DaisyUI components that won't burn your eyeballs -- 📱 **SMS contact form** - Because I get wayyy too many emails already -- 🎭 **Snazzy animations** - ScrollReveal + Typed.js doing their thang +- 📱 **SMS contact form** - Because I get wayyyyy too many emails already +- 🎭 **Snazzy animations** - ScrollReveal, Typed.js, and more doing their thang - 🐳 **Zero-downtime deploys** - Blue-green magic with Docker & HAProxy -- 🔧 **Overengineered infrastructure** - We like to do things the hard way over here +- 🔧 **Overengineered infrastructure** - If you didn't spend a week working on a fun but useless feature that will never be used, did you really do any development? -## 🏃‍♂️ Getting Started +## 🏃‍♂️ Wanna Try It Out? ```bash # Grab the dependencies @@ -38,9 +38,9 @@ bun run generate ## 📞 Contact Form Wizardry -Two-step verification dance: drop your message → prove you're human with SMS → message gets yeeted to my phone via some questionable infrastructure choices. +Two-step verification anti-abuse dance: drop your message → prove you're human with SMS → message gets yeeted to my phone via some very questionable infrastructure choices! -Rate-limited because spam just sucksssss! 🛡️ +Rate-limited because spam just sucks! ## 🏗️ Infrastructure Tomfoolery @@ -57,8 +57,8 @@ Here's where things get ~completely~ unhinged: I'm running the `android-sms-gateway` app on a completely deranged setup: - **Hardware:** Pixel 1 with the battery surgically removed (no spicy pillows please) - **Power:** Permanently plugged into the wall like some kind of cursed landline -- **Network:** Hardwired ethernet via USB-C adapter ("WhyFight" with WiFi?) -- **Purpose:** Sits there 24/7 just waiting to send OTPs and forward your messages to my actual phone +- **Network:** Hardwired ethernet via attached USB hub (WhyFight with WiFi?) +- **Purpose:** Sits there patiently 24/7 just waiting to send OTPs and forward your messages to my actual phone The whole contraption lives on my home network and the VPS reaches it through a WireGuard tunnel because apparently I enjoy making simple things complicated just to save $2 a month! @@ -67,84 +67,83 @@ The whole contraption lives on my home network and the VPS reaches it through a This repo follows a three-branch strategy with some absolutely bonkers automated promotions because manually managing branches is for chumps: - **`dev`** - Where the magic happens! All new features and fixes go here -- **`staging`** - Integration testing playground, auto-promoted from dev daily at 13:00 UTC via scheduler -- **`main`** - Production branch, gets promoted from staging weekly on Sundays at 14:00 UTC via scheduler +- **`staging`** - Integration testing playground, auto-promoted from dev daily at 04:00 PST via scheduler +- **`main`** - Production branch, gets promoted from staging weekly on Sundays at 05:00 PST via scheduler ### The Repository Setup -We're running a bit of a funky setup here: -- **Primary repo:** Git origin (configurable - can be self-hosted, GitHub, etc.) -- **GitHub Mirror:** Optional push-only mirror for CI/CD and visibility +It's a bit of a funky setup here: +- **Primary repo:** My Forgejo server (I obviously like self-hosting things) +- **GitHub Mirror:** Forgejo repo configured to push-only mirror to Github for CI/CD and visibility - **CI/CD:** GitHub Actions (triggered by pushes or scheduled workflows) -So the workflow is: push to Git origin → (optional mirror to GitHub) → GitHub Actions does the heavy lifting. +So the workflow is: do some coding, commit and push to my Forgejo instance → mirror to GitHub → GitHub Actions does the heavy lifting so my little VPS doesn't have to suffer so much. ### Branch Promotion Dance 💃 **Daily (dev → staging):** -- Robot overlord wakes up at 13:00 UTC every day -- Checks if dev has new commits (because we're not animals) +- Wannabe robot overlord wakes up at 04:00 PST every day +- Checks if dev has new commits (because we're not doing all this work for nothing!) - Actually validates the build passed via GitHub API (fancy!) - Fast-forward merge to staging (keeps git history from becoming spaghetti) -- Supports `[skip ci]` in commit messages for when you inevitably break something - Manual "YOLO deploy anyway" button available **Weekly (staging → main):** -- Sunday funday at 14:00 UTC for production releases +- Sunday funday at 05:00 PST for production releases - Runs semantic-release for proper versioning (we're not completely chaotic) -- Some gnarly branch gymnastics to keep everything synchronized -- SSH-signed commits because we pretend to care about security +- Seduce the GitHub API with a token for build status +- SSH-signed commits because I <3 cryptography - Manual panic button also available ### 🤖 The 5-Workflow CI/CD Circus -Because apparently one workflow wasn't enough, we've got a whole circus of automation: +Because apparently one workflow is never enough, I've got a whole collection of automations: -1. **`build.yml`** - The overachiever that builds everything +1. **`build.yml`** - The overachiever that builds everything and gets good grades - Gets triggered by basically anything that moves - - Smart enough to skip builds when we already did the work (lazy efficiency!) - - Hoards artifacts for 2 days like a digital packrat - - Has more caching layers than a wedding cake + - Smart enough to skip builds when we already did the work (lazy!) + - Hoards artifacts for 30 days like a digital packrat + - Has more caching layers than an onion-flavored wedding cake 2. **`deploy.yml`** - The deployment minion (does what it's told) - Gets bossed around by the other workflows - Juggles blue-green deployments without dropping anything - Speaks fluent SSH and WireGuard - - Downloads artifacts faster than you can say "containerization" + - Downloads artifacts faster than you can say "docker load" 3. **`stage.yml`** - The daily grind automation - Wakes up every day to promote dev → staging - Actually checks if builds passed (responsible adult behavior) - - Signs commits with SSH keys because we're fancy like that + - Signs commits with SSH keys because I'm fancy like that - Has a "force" option for when things go sideways -4. **`release.yml`** - The weekly release party host +4. **`release.yml`** - The weekly release partayyyy - Shows up every Sunday with semantic versioning - Does some serious git branch yoga to keep everything aligned - - Maintains that linear history we all pretend to care about + - Maintains that linear history we all pretend to care about but never look at 5. **`scheduler-*.yml`** - The workflow orchestrators - Exists because GitHub has weird scheduling quirks - - Makes sure the right code runs from the right branch + - Makes sure the workflow runs from the right branch - Basically the puppet masters of this whole operation ## 🚢 Deployment Shenanigans -Pushes to `staging` or `main` branches trigger some absolutely wild blue-green deployment wizardry with more caching than your browser history! +Pushes to `staging` or `main` branches trigger some absolutely wild blue-green deployment wizardry with more caching than your browser! ### Blue-Green Magic ✨ 1. **Build Phase:** Smart enough to skip rebuilding stuff we already built (because efficiency is sexy) -2. **Deploy Phase:** Download cached goodies and poke the new containers to make sure they're alive -3. **Switch Phase:** HAProxy does the old switcheroo faster than a shell game -4. **Cleanup Phase:** Yeet the old containers into the digital void -5. **Artifact Hoarding:** Keeps build artifacts for 30 days like a digital packrat with commitment issues -6. **Moon Phases:** 🌑 🌒 🌓 🌔 🌝 🌖 🌗 🌘 🌚 (for spiritual alignment) +3. **Configure Phase:** Update HAProxy's config, then call it's cell phone and SIG_HUP! +3. **Deploy Phase:** Download cached goodies and poke the new containers to make sure they're alive +4. **Cleanup Phase:** Yeet the old containers into the great /dev/null +5. **Artifact Hoarding:** Keeps old build artifacts much longer than you'd ever need (30 days) +6. **Moon Phases:** 🌑 🌒 🌓 🌔 🌝 🌖 🌗 🌘 🌚 -### GitHub Secrets Setup -Deployments generate the needed .env from GitHub secrets, so make sure to slap some secrets up first! +### GitHub Secrets/.env Setup +Deployments generate the needed .env from GitHub secrets, so make sure to slap some secrets up first or copy the .env.example file and edit! ### WireGuard Setup -The stack is rocking gluetun, so just set up your WIREGUARD_ environment variables in Github secrets: +The stack is rocking the popular [gluetun](https://github.com/qdm12/gluetun) container, so just set up your WIREGUARD_ environment variables with your Github secrets! ## 🔒 Security Fortress @@ -153,7 +152,7 @@ The stack is rocking gluetun, so just set up your WIREGUARD_ environment variabl - 🔢 TOTP phone verification + rate limiting - 🔤 ASCII-only validation (No spammy weird characters please!) -## 🆘 When Things Go Wrong +## 🆘 Note to Self: When Things Go Wrong ```bash # Check if containers are actually alive @@ -187,4 +186,4 @@ This project is licensed under **AGPL 3.0 only** - see the [LICENSE](LICENSE) fi --- -*Built with ❤️ and lots of ☕! (Sheesh, if you've read this far, just hire me, please!)* +*Built with ❤️ and lots of ☕! (Wow, if you've read this far, and you're hiring, just hire me!)*