You may use GitHub Actions to automate your development tasks, such as building CI/CD pipelines or automatically triaging GitHub issues.
GitHub is quickly establishing itself as an all-in-one platform for software development, maintenance, and distribution. You can use it largely as a software collaboration and code management tool. Today, however, you have features such as:
Codespaces: It is a cloud-based development platform that helps you in building, running, and debugging your code.
Actions: It is a tool that enables you to automate your development processes.
Let’s start by understanding what GitHub Actions are.
What Are GitHub Actions?
GitHub Actions is an event-driven automation tool that lets you perform a series of instructions in response to the occurrence of a certain event. For instance, suppose you commit to your staging branch and then wish for building, testing, and deploying the modifications to your staging environment. You may use Actions to automate processes across your development lifecycle, all from within GitHub.
Automated continuous integration and deployment is a typical use case for Actions, and you may wonder if you wish to learn yet another CI/CD platform. GitHub Actions is more than just a continuous integration and delivery solution. You can use it to automate any function in your GitHub project based on any event.
What Is CI/CD?
CI/CD is a means of delivering apps to clients regularly by incorporating automation into the app development process. Continuous integration, continuous delivery, and continuous deployment are the three key principles associated with CI/CD. CI/CD is a solution to the challenges that development and operations teams face while integrating new code.
CI/CD, in particular, adds continuous automation and monitoring across the app lifecycle, from integration and testing via delivery and deployment. These, when considered together, are often referred to as a “CI/CD pipeline”.
GitHub Actions: Writing The First ‘Hello World’
We’ll make a simple Actions workflow that can be executed in a manual or automatic way for each commit sent to the main branch. GitHub Actions are determined using the YAML syntax and placed in a directory called .github/workflows in your repository.
Fork and clone this repository on GitHub to get started. Create the directory .github/workflows, then add a new file hello-world-actions.yml and paste the code below in it.
name: Hello-World-Actions on: push: branches: [main] workflow_dispatch: jobs: say_hello: runs-on: ubuntu-latest steps: - name: Say Hello run: echo Hello World! - name: Say Goodbye run: | echo Job Finished. echo Goodbye!
A workflow is represented by the file you added. A workflow is a programmable automated process consisting of one or more jobs that can be planned or triggered by an event. To develop, test, package, release, or deploy a project, a workflow can be employed.
On the Actions tab of your repository, GitHub shows the name of your workflow. If you don’t use the name key in your YAML file, GitHub will use the file path with respect to the repository’s root as the name. The name Hello-World-Actions was used in the case above.
A workflow can be launched manually or as a result of certain events. The on keyword is used to describe the events that initiate a workflow.
Because we mentioned workflow_dispatch, this instance runs the workflow on push to the main branch and may be initiated manually from the Actions page.
Viewing The Workflow Activity
With the changes you performed, this process will run anytime you push a change to the main branch. You should have completed your workflow when you had pushed the change to GitHub. The workflow executions are visible on GitHub’s Actions page. You may see a visual graph of each execution’s performance along with delving down the specifics of each phase.
To see the workflow executions, follow the steps below:
- Go to the main page of your repository on GitHub.
- After Pull requests, you’ll discover the Actions tab. To access the Actions page, click Actions.
- The workflow should be mentioned in the left sidebar, and the workflow run must be listed on the main page. If you want to learn more about any of the workflow runs, simply click on it.
Creating A Workflow For Running Tests
While you can create your workflow and actions from nothing, you can also use and alter the ones that have been created by the community. The GitHub platform is a one-stop-shop for actions produced by the GitHub community. We’ll make a new procedure to execute the test in the project. To do so, we’ll utilize the GitHub interface to construct a process based on one of the recommended templates, and then use a public action within the workflow to set up Node.js.
To access the actions page, visit GitHub and go to the Actions tab. Click the New workflow button on the left sidebar. You will be directed to a page with template recommendations that you may change to build a workflow. In the Node.js workflow template card, select the Set up this workflow button.
Now, you will find the workflow editor where the file will already have jobs and steps filled. Change the file’s name to test.yml. This file is identical to the earlier one, except it contains a few new syntaxes. The strategy and matrix keywords can be found on lines 17 and 18.
strategy: matrix: node-version: [10.x, 12.x, 14.x, 15.x]
The approach generates a build matrix for the jobs, ensuring that your job runs in accordance with the stated variations. The given job will execute many times for the specified Node.js versions in the array in this example. We don’t wish to run against Node.js 10.x, therefore we’ll change line 19 to:
node-version: [12.x, 14.x, 15.x, 16.x]
In this workflow, you’ll see that the uses keyword is being used. This is a technique to tell the step what actions you want it to take. An action is a reusable set of commands that can be defined in the workflow’s repository, a public repository, or a Docker image. You can either develop your actions or use those created by the community on GitHub.
The uses: actions/checkout@v2 instructs the job to retrieve v2 of the actions/checkout@v2 community action. This is an action that checks out a certain version of your repository and then downloads it to the runner. This action enables you to conduct actions against your code, and you can use it every time your workflow will run against the code in the repository.
The actions/setup-node@v2 action downloads and installs the Node software package on the runner, allowing you access to node and npm commands.
The remaining commands use npm to install the project’s dependencies before running the test script.
On the Actions page, commit and push these changes, and watch the workflow run.
Who are GitHub Actions most useful for?
Operational managers or DevOps leaders can use Actions to create bespoke paths that are tailored to their policies and strategic culture. GitHub Actions has become an even more powerful force for software release automation, thanks to the recent emphasis on CI/CD.
The developer community’s reaction to Actions has been extremely optimistic since its release. Thousands of Actions and Workflow have been created by the community. With such a strong reception from the developer community, Actions appear to have cemented their place as a standard feature.
Development automation has been made simple
The new capabilities in the GitHub Actions beta release focus on the most important aspects of development automation. Matrix Builds, for instance, is a useful tool for parallel testing, and the inclusion of support for new platforms and languages provides opportunities to more programmers.
GitHub has grown in popularity as a Git-style application development platform, with over 40 million developers. With Actions, GitHub may proceed to supplant startups in the DevOps CI/CD space. Others see it as a friendly rivalry.
In A Nutshell…
GitHub Actions is a great asset to GitHub’s already extensive feature set. It helps in automating your development processes while also allowing you to see how they execute, all from within GitHub. It can be used to automate CI/CD activities, as well as how issues are triaged and pull requests are labeled.
Actions acts as a serverless workflow engine, with the automation code, kept separate from the application code. You can locate actions for typical operations like generating and publishing a Docker image in the GitHub marketplace, and you can also create and distribute your actions there.