The gh-pages step is documented here, and works but you have to
read the code to know that if that when the user/org name match the repo name
it will not push the content into gh-pages git branch, but rather into
master git branch. Prefect just what I needed.

DNS / Cloudflare

I had been using dyn.com for years (well my dnssimple account) and I always
hated them trying to up sell me to enterprise features I don’t need (sure they
are great feature just not something a blog site needs). Anywho; I moved my
DNS to cloudflare, and this process is simple and
documented better by them.

Interface works great and they do all kinds of extra stuff, but here is the end
state:

Figure 1: Cloudflare DNS

I setup the APEX (top-level domain) as required for organization pages that are
not subdomains. I made sure to enable cloudflare for 192.30.252.153 and
192.30.252.154 so that I can use cloudflare rules and still get a CDN with
DDoS protection (This not something I need but github does and I don’t want to
go down when they do their thing).

Also note the CNAMES for www.jeremyrossi.comblog.jeremyrossi.com this is
how subdomains should be setup with github pages, but I still wanted to control
redirection so all old links would work. This is where cloudflare rules come
in:

Figure 2: Cloudflare Rules

The key thing here is that cloudflare will redirect for subdomains and make
sure the trailing path is still present. Thanks to the magic $1.

Done

All done moved and things are working as expected. Did have a few dead ends in
the process, but in general was not a hard change.