As of now, I am still running my custom Ghost theme, although I plan on changing it soon. (Edit: I did). It’s open-source and available on GitHub at angristan/Casper-XYZ. I update it regularly and keep it synced with the original Casper theme. A few months ago, the Ghost team came up with action-deploy-theme, an GitHub action to deploy a theme to a Ghost website automatically, right from GitHub! I have been enjoying it for a while now, so let me share how it works.
Posts with the tag devops:
I am currently working on a school project that involves an API made with NestJS and a front-end made with Angular 9. I wanted to properly set up auto-deployments from GitHub to a serverless hosting provider, so I turned to my old friend, Heroku. Heroku can host a bunch of software projects like NodeJS, Rails, Django, and more. An app deployed on Heroku has to be able to listen and answer HTTP requests.
At my previous work we’ve been using Capistrano for years and it’s not particularly great. It does work well, but it really feels like messy Ruby scripting with messy documentation. We use Capistrano for a specific kind of projects which are usually PHP or Node deployed on multiple non-autoscaled webservers. Recently for school I had two Laravel projects to make. One of the requirements was to deploy them on a real webserver with a valid domain name, HTTPS, etc.
When using Terraform, the state of your infrastructure is stored in a local file called tfstate. This is a very important file, so modifying it or loosing will leave you with an unusable Terraform configuration. You will probably have to re-import all your ressources manually. There are some cases when you need to use Terraform from multiple devices for the same project. It can happen if a team works on a common Terraform project.
When I began publishing public Docker images, I was using the GitHub integration with the Docker Hub to automatically build and publish my images. However, the Docker Hub is very slow to build images and has very, very limited configuration options. Then I discovered Drone which allowed me to build images on my own server, tag them, etc. The thing is I’m limited by the drone-docker plugin and I can’t do everything I want with it.
I love GitLab. I really do. As many other Git users, I started learning git with GitHub a few years ago, and I’ve kept using it since. However, GitHub has not changed much in all these years, it’s evolving really slowly. On the other hand, GitLab changes every week and has so much features. When you start to dive into GitLab, you understand how far behind GitHub is. I use a self-hosted instance of GitLab at work and we mainly use the CI for Terraform pipelines.
In my last post I presented Drone, an extremely light CI/CD server. One cool and satisfying thing is to be automatically notified of the output of your pipelines. In a company, you would probably use a Slack or HipChat bot. For a personal use, I think a Telegram bot is a good idea. Let’s setup one! Creating a Telegram bot Setting up a bot is free and actually very easy. You can do everything from a Telegram client.
Continuous Integration and Continuous Delivery are very trendy topics in the DevOps world right now. There are quite a lot of services and software to build, test and deploy your code, but actually, a few are free and open-source and self-hostable. The most well-know softwares corresponding to these characteristics are Jenkins and GitLab CI. However, Jenkins has a huge memory footprint since it runs on Tomcat (Java). As for GitLab CI, it’s very good but requires you to run your own GitLab (which is huge) or to be on gitlab.