In the fast-paced world of software development, being able to automate tasks servers as a great advantage. Tasks such as building, testing and deploying can be automated by setting up a continuous integration and delivery (CI/CD) pipeline. There are many CI/CD tools out there but one is built in right into our favorite Github and yes you guessed it right... it's Github Actions.
Github Actions makes it breeze to build a secure and reliable CI/CD pipeline allowing you to focus more on the actual development of the software. In this article We are going to understand basics of Github Actions and also try to automate testing for a nodejs app.
GitHub Actions is a CI/CD platform that allows you to create workflows that build and test every pull request to your repository, or deploy merged pull requests to production. Workflows are defined by a YAML file checked in to your repository and will run when triggered by an event in your repository, or they can be triggered manually, or at a defined schedule. The components of GitHub Actions include workflows, actions, events, jobs, runners and steps.
At the core of GitHub Actions are workflows, which define the automation process for your repository. They include various actions.
Actions are what they sound like. They are reusable units of work within a workflow. They are individual tasks or steps that can be combined to create a custom automation sequence. GitHub provides a marketplace of pre-built actions, and you can also create your own custom actions to suit your specific needs.
Events acts as triggers for workflows. They determine when a workflow will run. For example on a push to specific repository, pull requests, etc.
Workflows consist of one or more jobs. Each job represents a unit of work that runs on a specific runner, which can be a virtual machine, a container, or a hosted runner provided by GitHub.
Runners are the execution environments for jobs in GitHub Actions. You can use GitHub-hosted runners, which are provided by GitHub, or set up your own self-hosted runners for more specialized tasks.
Steps are the individual tasks within a job that define the actions to be executed. Each job can consist of one or more steps, and these steps are executed sequentially.
Now that we have basic understanding of Github Actions and its components. Lets try to build a workflow which triggers on a push or pull requests and runs tests for our nodejs app.
- A github repository
- Nodejs app (code) in the repository
- Tests written for the nodejs code
Further steps assumes that all pre-requisites are met.
To create a Github workflow follow these steps
github/workflowsdirectory in root of your folder
- Create a
.ymlfile in this directory. You can name this file anything such as
- Copy the following code into
name: Node.js CI/CD on: push: branches: - master pull_request: branches: - master jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 # This allows you to perform actions on the code in repository - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: 18 # You can specify your desired Node.js version here - name: Install dependencies run: npm install - name: Run tests run: npm test
Thats it. You have created a simple workflow which will trigger on a push or pull request to master branch of your repository. The workflow above runs on a Github-hosted ubuntu runner.
You can check out more on what each line in the workflow means and understand syntax at Github Actions docs
Now that we have created our workflow to automate testing lets try to trigger it by pushing code into repository.
- Go to the
Actionspage of your repository and you will see the list of all your workflows
- Make changes to the code and push it to the github using
git pushto trigger the workflow. You will see that workflow has been triggered and is performing actions specified in
- You can click on each run and see the actions and their results
🎉 Voilà! You have successfully automated your testing and deployed a workflow using Github Actions.
As you have seen it is super easy to automate tasks such as testing using Github Actions. You should now have basic understanding of Github Actions and ready to incorporate this knowledge in future projects to make your coding journey a bit automated and easy. I hope you liked the article. Stay tuned and Happy Coding 🌟.