Yes, Git, Linus Torvalds' distributed source code control system, is essential to modern-day programming, but it's far more than that. Git is key to essentially all DevOps operations. GitHub recognizes that, and with GitHub Actions, it's transforming its Git services into a DevOps workflow pipeline.
With GitHub Actions, you can build a container app, deploy a web service, publish packages to registries, or automate welcoming new programmers to your open source projects. Or chain them all together.
At its heart, as Erica Brescia, GitHub's COO, tweeted: "We're introducing full CI/CD [Continuous Integration/Continuous Delivery] functionality" into GitHub. Brescia concluded, "This is a game changer."
That's not hype. With another GitHub Action feature, Matrix builds, you can test your programs on Linux, MacOS, Windows, containers, and multiple runtime versions, simultaneously. This also lets you test multiple versions of your project in parallel.
A complete DevOps stack comprises tools to configure systems, using DevOps programs such as Ansible, Chef, Puppet, and Salt. Next, you need software version control, which GitHub always had. And you must package the program with Docker or other container approaches. Then, you need to test your newly revised software. Your next step is to deploy it with a program such as Jenkins. After that, you run the program, commonly these days with Kubernetes. Finally, you monitor everything with such packages as the Elasticsearch, Logstash, Kibana (ELK) Stack or Prometheus.
GitHub knows this is not just adding on CI/CD and testing. Max Schoening, GitHub's Senior Director of Product Design, said: "At GitHub, we have a secret strategy: We work incredibly hard on designing products developers love. Software is changing the world. For a lot of teams that change means delivering software quickly and reliably. We see GitHub Actions as the engine for it -- some call that DevOps."
That said, GitHub doesn't see Actions CI/CD as a competitor for other CI/CD programs such as Jenkins, AWS CodeDeploy, or GitLab CI per se. Schoening said, "GitHub Actions is community-powered workflow automation. GitHub and our community believe in choice and an open ecosystem. That is something we take seriously and build into everything we do. GitHub Actions lets developers integrate with all their existing tooling, mix and match new developer products, and hook into all parts of the software lifecycle, including existing CI/CD partners."
One such CI/CD partner likes Actions. Jim Rose, CircleCI's CEO, said in a statement, "CircleCI has been building a CI/CD platform since 2011, and GitHub has been a great partner. GitHub Actions is further validation that CI/CD is critical for the success of every software team. We believe that developers thrive in open, connected ecosystems, and we look forward to working with GitHub to lead the evolution of CI/CD."
With GitHub Actions, GitHub provides developers and sysadmins with a lot of that stack on one open-source product line. The parts it doesn't have -- such as packaging -- have become commonplace.
So what is GitHub Actions exactly? It's an application programming interface (API) for cause and effect on GitHub. It enables you to orchestrate any workflow, based on any event, while GitHub manages the execution, provides you rich feedback and secures every step along the way. With GitHub Actions, workflows and steps are code in a repository, so you can create, share, reuse, and fork your software development practices.
What's new is that GitHub has added CI/CD and testing to Actions. With this, users can automate how they build, test, and deploy projects. You can do this with any platform. That includes Linux, MacOS, and Windows. You can then run your workflows in a container or on a virtual machine (VM).
To make CI/CD work, you need to publish packages and containers. GitHub Actions lets you publish and consume packages from GitHub Package Registry or any other registry.
GitHub Actions also supports more languages and frameworks than before. This now includes Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android, and iOS. You can also test your web service and its database together.
GitHub Actions are also written in YAML. That means, according to Nat Friedman, GitHub's CEO, "You can edit, reuse, share, and fork [Actions] like code. When you fork a repository, you fork the actions along with the source code, giving you a seamless way to test and build projects using the same Actions as the original project. We think this is a great way to learn from the community, by reproducing every step of your favorite projects, then forking them to suit your own requirements."
GitHub users like this plan. "For open-source projects," said Maël Nison, Yarn maintainer, "the lower infrastructure friction we have, the easier it becomes to work with external contributors. Using GitHub Actions for CI and common tasks like triaging issues allows us to lower the barriers even more, so we can focus on writing a good product."
GitHub wants your business. So GitHub Actions is free for public open-source repositories. For private repositories, Actions offers simple, pay-as-you-go pricing. If you want to run on your own hardware or another cloud, Action's self-hosted runners are free to use -- until Nov. 13, when Action leaves beta, Actions is free for everyone.