First Experience with CI: GitHub Actions vs Travis CI vs CircleCI

I did not have any experience with CI until recently. The first task was quite easy when I need to configure the auto-deploy process from GitHub to a site on VIP. It was pretty straightforward as the most complicated task (script for CI) was created already.

The second task was to convert current CI tests from Travis to GitHub Actions (GHA), I have worked on Edit Flow, which is an over-10-year-old plugin. A challenge for me is that tests on Travis all failed.

Actually, GHA is easy to set up as it’s directly integrated into GitHub repos. I just need to provide a YML file under .github/workflow folder, something like this.

Something to write up for this experience.

  • Matrix of GHA is convenient, which helps simplify a lot of setup in Travis CI.
  • The most… complicated part is not from GHA. Rather, it’s how to deal with multiple versions of WordPress, PHP, MySQL, and their dependencies.

One thing I don’t like much in GHA is… there is no way to debug issues on CI jobs. Because of this, I needed to push a lot of test commits to the repo and wait for all tests passed. In terms of this, CircleCI is definitely much better as they offer SSH access to jobs so that the debug process can be much easier and reduces a lot of time. That said, there is a trick for doing the same with GHA but I am pretty sure it’s not easy at all.

All in all, if I have a choice, definitely, I will go to CircleCI. But there is another option called TeamCity, which has been around for… 15 years. I have not any experience with it but look forward to work with it someday.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s