Deploying from someone else computer
Today I got around to some changes I have been contemplating for a while. This site now deploys every time I commit to my main branch on GitHub, using their actions, docker, openssh and some scripting.
Why is this important to me?
I have been very lucky over the past few years, and had the opportunity to run a trio of operating systems, accross multiple computers. Every time I switch or set one back up I need to do setup to ensure tools are available for me to deploy my website.
If running every major OS is not your bag, here are some more reasons to make this leap
- Less software on your computer.
- Less risk if you lose your computer.
- It is very cool to show-off.
Alternatives I considered?
I have been working with publishing websites for a lot longer than this personal blog lets on. I published my first personal websites in the 1990's. Here were some of my options.
- WordPress, or other CMS.
- Bespoke hand-crafted site.
- SaaS solution like Wix, Siteground, etc.
- Static Gen, such as 11ty, hugo, jekyll (GitHub pages)
Ultimately, this site has been edited by hand for the past few years, and there is something about that I have enjoyed. Things I have not enjoyed have been, working out how to upload in few-enough keystrokes that I do not make mistakes, and editorial oversight.
My Vision for the site as a project.
I want to use this site as an experiment in note taking and improving my writing, within fairly extreme technical constraints.
If I publish via GitHub, I can automate more of my process, deferring to their actions runners to ensure that complex logic and process are run for every commit.
I Must stress at this point, I only have the site auto-scanned by lighthouse for the past year and the deploy, but these are small steps in a direction I am happy to be moving.
Would you like to know more?
The site source-code is publicly available on GitHub. Here is my current site deployment GitHub action yaml file. I forked a third-party repository so that I could audit the code, and also make some small changes. The repository I forked can be found via my personal fork of the code. The main file of interest, which is the only file I changed, is entrypoint.sh
, which I added a GLOBIGNORE
directive, and force removed the private key after run. The file removal was likely paranoia on my part.
The code uses GitHub secrets to ensure I am not publishing a private key, username, hostname, port or destination directory where anyone can see it. Hopefully this is paranoid enough.