I recently migrated CI/CD pipeline of one of my open source projects — pwa-asset-generator from Travis CI to GitHub actions. I was one of the members who got early access to GitHub Actions beta, and I’d like to share my experience of such migration with the community in return.

The referred project and examples in this article are based on node.js, eslint, TypeScript, Jest, semantic-release and npm stack. The principles are the same for any other tech stack, so you should be able to use a similar flow with your own project as well.

In this article, we’re focusing on building 2 pipelines;

CI — builds a TypeScript node.js project, lints the code and runs tests on the project

— builds a TypeScript node.js project, lints the code and runs tests on the project Release — builds the project and deploys an npm package to npm repository with semantic-release

Whether you’re migrating from Travis CI to GitHub actions or migrating from CircleCI to GitHub actions or starting a new open source project on GitHub, this article should give you a head start on your CI/CD journey.

About GitHub actions

GitHub announced its own continuous integration service as an alternative to services out there like Travis CI, Circle CI and others.

It’s free for open source projects as Travis CI and Circle CI are, and it’s well integrated with GitHub ecosystem.

GitHub introduces a few concepts in their continuous integration context. Core concepts such as workflows, jobs, steps, actions, runners, events and artifacts are documented on GitHub actions documentation.