This post was contributed by Aleksey Kulikov, Founder of Treo (Page Speed Monitoring Service).
In 2018, GitHub announced a new CI/CD platform to automate workflows and cut down on development cycles called GitHub Actions. Since then, the GitHub Marketplace UI has gained an incredible amount of popularity, with over 4,000 Actions to help developers.
Earlier this year, I participated in building the Lighthouse CI Action. With GitHub Actions gaining more popularity, I wanted to know how well it was performing, along with many other Actions including the one for Codecov. Unfortunately, I couldn’t find any information about the popularity and usage of different actions.
I decided to build a custom script that crawls all categories and use Github Search (example query) to estimate usage in open-source projects.
The script crawled over 4,000 projects, and here are the highlights:
- 9/10 most used actions are built by Github
- A good action is small, focused, and composable. Learn from Github – their actions are terrific
- Github Pages is a very popular use-case. I bet it could be a leading JAMstack platform if Github put a small, dedicated team to it
- AWS, GCloud, Azure, and others already have official actions. Github Actions is the CI/CD platform.
Along with these findings, I have detailed top lists by usage, popularity, and a combination of both. GitHub-specific actions are denoted by the emoji, while Lighthouse CI actions are marked with a , and the Codecov action is marked with a . The analysis script was run on September 9th, 2020.
GitHub Actions ranking by usage
The ranking is based on usage in open-source projects. It uses GitHub Search that queries appearance in .github/workflows folder (example query).
Rank | Title | Usage | Repo |
1 | Checkout | 498507 | actions/checkout |
2 | Setup Node.js environment | 85103 | actions/setup-node |
3 | Setup Python | 65833 | actions/setup-python |
4 | Cache | 39751 | actions/cache |
5 | Setup Java JDK | 38759 | actions/setup-java |
6 | Upload a Build Artifact | 37077 | actions/upload-artifact |
7 | Setup Go environment | 19289 | actions/setup-go |
8 | Setup .NET Core SDK | 16417 | actions/setup-dotnet |
9 | Download a Build Artifact | 11979 | actions/download-artifact |
10 | Codecov | 9979 | codecov/codecov-action |
11 | GitHub Pages action | 8426 | peaceiris/actions-gh-pages |
12 | Create a Release | 8016 | actions/create-release |
13 | Upload a Release Asset | 7631 | actions/upload-release-asset |
14 | Azure WebApp | 7461 | Azure/webapps-deploy |
15 | Deploy to GitHub Pages | 6761 | JamesIves/github-pages-deploy-action |
16 | rust-toolchain | 5920 | actions-rs/toolchain |
17 | GitHub Action for Yarn | 5372 | Borales/actions-yarn |
18 | “Configure AWS Credentials” Action For GitHub Actions | 4606 | aws-actions/configure-aws-credentials |
19 | GitHub Push | 4375 | ad-m/github-push-action |
20 | Build and push Docker images | 4340 | docker/build-push-action |
21 | First interaction | 4216 | actions/first-interaction |
22 | Create an issue | 4194 | JasonEtco/create-an-issue |
23 | rust-cargo | 4132 | actions-rs/cargo |
24 | Azure Container Registry Login | 3629 | Azure/docker-login |
25 | Close Stale Issues | 3437 | actions/stale |
26 | Publish Docker | 2807 | elgohr/Publish-Docker-Github-Action |
27 | Amazon ECR “Login” Action for GitHub Actions | 2780 | aws-actions/amazon-ecr-login |
28 | Setup Ruby, JRuby and TruffleRuby | 2770 | ruby/setup-ruby |
29 | Setup gcloud environment | 2760 | GoogleCloudPlatform/github-actions |
30 | Setup Julia environment | 2687 | julia-actions/setup-julia |
31 | Amazon ECS “Deploy Task Definition” Action for GitHub Actions | 2483 | aws-actions/amazon-ecs-deploy-task-definition |
32 | Amazon ECS “Render Task Definition” Action for GitHub Actions | 2476 | aws-actions/amazon-ecs-render-task-definition |
33 | Coveralls GitHub Action | 2358 | coverallsapp/github-action |
34 | GitHub Script | 2355 | actions/github-script |
35 | Flutter action | 2312 | subosito/flutter-action |
36 | Azure Login | 2293 | Azure/login |
37 | SSH Remote Commands | 2146 | appleboy/ssh-action |
38 | GH Release | 2087 | softprops/action-gh-release |
39 | Labeler | 2034 | actions/labeler |
40 | GitHub Action for Firebase | 1923 | w9jds/firebase-action |
41 | Hugo setup | 1813 | peaceiris/actions-hugo |
42 | pypi-publish | 1811 | pypa/gh-action-pypi-publish |
43 | Create Pull Request | 1775 | peter-evans/create-pull-request |
44 | Docker Buildx | 1607 | crazy-max/ghaction-docker-buildx |
45 | Gradle Wrapper Validation | 1600 | gradle/wrapper-validation-action |
46 | Release Drafter | 1480 | release-drafter/release-drafter |
47 | Code Climate Coverage Action | 1235 | paambaati/codeclimate-action |
48 | setup-msbuild | 1188 | microsoft/setup-msbuild |
49 | Setup Elixir | 1159 | actions/setup-elixir |
50 | Blog Post Workflow | 1094 | gautamkrishnar/blog-post-workflow |
GitHub Actions ranking by popularity
The ranking is based on the number of stars, and the action should be used at least in 50 projects (to filter popular projects in GitHub Actions Marketplace).
Rank | Title | Stars | Repo |
1 | Super-Linter | 5500 | github/super-linter |
2 | Cache | 1400 | actions/cache |
3 | Release Drafter | 1400 | release-drafter/release-drafter |
4 | GitHub Pages action | 1300 | peaceiris/actions-gh-pages |
5 | Swift Doc | 1200 | SwiftDocOrg/swift-doc |
6 | Deploy to GitHub Pages | 915 | JamesIves/github-pages-deploy-action |
7 | Checkout | 912 | actions/checkout |
8 | Image Actions | 727 | calibreapp/image-actions |
9 | Build and push Docker images | 697 | docker/build-push-action |
10 | SSH Remote Commands | 663 | appleboy/ssh-action |
11 | Setup Node.js environment | 650 | actions/setup-node |
12 | Create a Release | 637 | actions/create-release |
13 | Setup gcloud environment | 627 | GoogleCloudPlatform/github-actions |
14 | Upload a Build Artifact | 610 | actions/upload-artifact |
15 | GitHub Script | 572 | actions/github-script |
16 | Lighthouse CI Action | 539 | treosh/lighthouse-ci-action |
17 | Blog Post Workflow | 526 | gautamkrishnar/blog-post-workflow |
18 | Publish Docker | 494 | elgohr/Publish-Docker-Github-Action |
19 | Profile Readme Development Stats | 461 | anmol098/waka-readme-stats |
20 | Codecov | 438 | codecov/codecov-action |
21 | Debugging with tmate | 435 | mxschmitt/action-tmate |
22 | FTP Deploy | 424 | SamKirkland/FTP-Deploy-Action |
23 | Automatic Rebase | 410 | cirrus-actions/rebase |
24 | GitHub Push | 404 | ad-m/github-push-action |
25 | Labeler | 392 | actions/labeler |
26 | GitHub Action for Firebase | 390 | w9jds/firebase-action |
27 | Hugo setup | 378 | peaceiris/actions-hugo |
28 | Upload a Release Asset | 364 | actions/upload-release-asset |
29 | Flutter action | 364 | subosito/flutter-action |
30 | S3 Sync | 347 | jakejarvis/s3-sync-action |
31 | Merge pull requests | 346 | pascalgn/automerge-action |
32 | GH Release | 335 | softprops/action-gh-release |
33 | Cypress.io | 330 | cypress-io/github-action |
34 | Automated releases for npm packages. | 327 | mikeal/merge-release |
35 | “Configure AWS Credentials” Action For GitHub Actions | 313 | aws-actions/configure-aws-credentials |
36 | Create Pull Request | 297 | peter-evans/create-pull-request |
37 | Setup Go environment | 268 | actions/setup-go |
38 | Setup Python | 259 | actions/setup-python |
39 | compressed-size-action | 257 | preactjs/compressed-size-action |
40 | Github Action for LaTeX | 245 | xu-cheng/latex-action |
41 | Serverless | 240 | serverless/github-action |
42 | Close Stale Issues | 236 | actions/stale |
43 | Slack Notify | 234 | rtCamp/action-slack-notify |
44 | Setup Java JDK | 230 | actions/setup-java |
45 | Telegram Notify | 226 | appleboy/telegram-action |
46 | Telegram Message Notify | 226 | appleboy/telegram-action |
47 | pypi-publish | 216 | pypa/gh-action-pypi-publish |
48 | SCP Command to Transfer Files | 215 | appleboy/scp-action |
49 | SCP Files | 215 | appleboy/scp-action |
50 | Lighthouse Audit | 208 | jakejarvis/lighthouse-action |
GitHub Actions ranking
The ranking of GitHub Action based on popularity and usage.
Rank | Title | Stars Rank/Total | Usage Rank/Total | Repo |
1 | Checkout | 7/912 | 1/498507 | actions/checkout |
2 | Cache | 2/1400 | 4/39751 | actions/cache |
3 | Setup Node.js environment | 11/650 | 2/85103 | actions/setup-node |
4 | GitHub Pages action | 4/1300 | 11/8426 | peaceiris/actions-gh-pages |
5 | Upload a Build Artifact | 14/610 | 6/37077 | actions/upload-artifact |
6 | Deploy to GitHub Pages | 6/915 | 15/6761 | JamesIves/github-pages-deploy-action |
7 | Create a Release | 12/637 | 12/8016 | actions/create-release |
8 | Codecov | 20/438 | 10/9979 | codecov/codecov-action |
9 | Setup Python | 38/259 | 3/65833 | actions/setup-python |
10 | Build and push Docker images | 9/697 | 20/4340 | docker/build-push-action |
11 | Setup Go environment | 37/268 | 7/19289 | actions/setup-go |
12 | Upload a Release Asset | 28/364 | 13/7631 | actions/upload-release-asset |
13 | Setup Java JDK | 44/230 | 5/38759 | actions/setup-java |
14 | GitHub Push | 24/404 | 19/4375 | ad-m/github-push-action |
15 | Publish Docker | 18/494 | 26/2807 | elgohr/Publish-Docker-Github-Action |
16 | Setup gcloud environment | 13/627 | 29/2760 | GoogleCloudPlatform/github-actions |
17 | “Configure AWS Credentials” Action For GitHub Actions | 35/313 | 18/4606 | aws-actions/configure-aws-credentials |
18 | Setup .NET Core SDK | 55/198 | 8/16417 | actions/setup-dotnet |
19 | Download a Build Artifact | 60/189 | 9/11979 | actions/download-artifact |
20 | GitHub Script | 15/572 | 34/2355 | actions/github-script |
21 | SSH Remote Commands | 10/663 | 37/2146 | appleboy/ssh-action |
22 | Close Stale Issues | 42/236 | 25/3437 | actions/stale |
23 | Release Drafter | 3/1400 | 46/1480 | release-drafter/release-drafter |
24 | Flutter action | 29/364 | 35/2312 | subosito/flutter-action |
25 | Labeler | 25/392 | 39/2034 | actions/labeler |
26 | rust-cargo | 57/197 | 23/4132 | actions-rs/cargo |
27 | GitHub Action for Firebase | 26/390 | 40/1923 | w9jds/firebase-action |
28 | GH Release | 32/335 | 38/2087 | softprops/action-gh-release |
29 | Hugo setup | 27/378 | 41/1813 | peaceiris/actions-hugo |
30 | rust-toolchain | 81/143 | 16/5920 | actions-rs/toolchain |
31 | Blog Post Workflow | 17/526 | 50/1094 | gautamkrishnar/blog-post-workflow |
32 | Setup Ruby, JRuby and TruffleRuby | 61/188 | 28/2770 | ruby/setup-ruby |
33 | Amazon ECR “Login” Action for GitHub Actions | 67/173 | 27/2780 | aws-actions/amazon-ecr-login |
34 | Create Pull Request | 36/297 | 43/1775 | peter-evans/create-pull-request |
35 | GitHub Action for Yarn | 92/120 | 17/5372 | Borales/actions-yarn |
36 | pypi-publish | 47/216 | 42/1811 | pypa/gh-action-pypi-publish |
37 | Cypress.io | 33/330 | 52/1038 | cypress-io/github-action |
38 | Coveralls GitHub Action | 72/160 | 33/2358 | coverallsapp/github-action |
39 | S3 Sync | 30/347 | 55/969 | jakejarvis/s3-sync-action |
40 | FTP Deploy | 22/424 | 62/823 | SamKirkland/FTP-Deploy-Action |
41 | Amazon ECS “Deploy Task Definition” Action for GitHub Actions | 87/132 | 31/2483 | aws-actions/amazon-ecs-deploy-task-definition |
42 | Docker Buildx | 65/177 | 44/1607 | crazy-max/ghaction-docker-buildx |
43 | Merge pull requests | 31/346 | 64/807 | pascalgn/automerge-action |
44 | Automatic Rebase | 23/410 | 71/660 | cirrus-actions/rebase |
45 | SCP Command to Transfer Files | 48/215 | 60/848 | appleboy/scp-action |
46 | SCP Files | 49/215 | 61/832 | appleboy/scp-action |
47 | HashiCorp – Setup Terraform | 59/190 | 56/892 | hashicorp/setup-terraform |
48 | action-slack | 56/198 | 59/859 | 8398a7/action-slack |
49 | Create an issue | 136/72 | 22/4194 | JasonEtco/create-an-issue |
50 | Super-Linter | 1/5500 | 92/395 | github/super-linter |
51 | Setup Elixir | 88/130 | 49/1159 | actions/setup-elixir |
52 | Run golangci-lint | 80/144 | 54/975 | golangci/golangci-lint-action |
53 | Auto Approve | 78/146 | 58/860 | hmarr/auto-approve-action |
54 | First interaction | 153/62 | 21/4216 | actions/first-interaction |
55 | GitHub Pages | 96/116 | 51/1080 | crazy-max/ghaction-github-pages |
56 | Azure WebApp | 171/56 | 14/7461 | Azure/webapps-deploy |
57 | Slack Notify | 43/234 | 79/579 | rtCamp/action-slack-notify |
58 | Azure Container Registry Login | 156/61 | 24/3629 | Azure/docker-login |
59 | WordPress Plugin Deploy | 54/204 | 78/582 | 10up/action-wordpress-plugin-deploy |
60 | Cancel Workflow Action | 66/174 | 72/653 | styfle/cancel-workflow-action |
61 | Setup Deno environment | 82/143 | 65/784 | denolib/setup-deno |
62 | Amazon ECS “Render Task Definition” Action for GitHub Actions | 149/65 | 32/2476 | aws-actions/amazon-ecs-render-task-definition |
63 | Github Tag Bump | 62/186 | 77/590 | anothrNick/github-tag-action |
64 | rust-clippy-check | 84/138 | 66/738 | actions-rs/clippy-check |
65 | Gradle Wrapper Validation | 127/78 | 45/1600 | gradle/wrapper-validation-action |
66 | Upload files to a GitHub release | 114/95 | 53/999 | svenstaro/upload-release-action |
67 | GitHub Action for DigitalOcean – doctl | 70/164 | 76/598 | digitalocean/action-doctl |
68 | Repository Dispatch | 74/157 | 74/640 | peter-evans/repository-dispatch |
69 | Github Action for LaTeX | 40/245 | 96/370 | xu-cheng/latex-action |
70 | Action For Semantic Release | 97/115 | 69/686 | cycjimmy/semantic-release-action |
71 | Create Release | 128/78 | 57/874 | ncipollo/release-action |
72 | Install Qt | 100/111 | 73/649 | jurplel/install-qt-action |
73 | NPM or Yarn install with caching | 117/92 | 67/699 | bahmutov/npm-install |
74 | Debugging with tmate | 21/435 | 117/302 | mxschmitt/action-tmate |
75 | Code Climate Coverage Action | 162/59 | 47/1235 | paambaati/codeclimate-action |
76 | Gatsby Publish | 75/151 | 91/400 | enriikke/gatsby-gh-pages-action |
77 | setup-java | 118/90 | 70/661 | olafurpg/setup-scala |
78 | ssh deploy | 73/158 | 93/387 | easingthemes/ssh-deploy |
79 | Deploy to GitHub Pages with Container | 71/161 | 95/371 | maxheld83/ghpages |
80 | Profile Readme Development Stats | 19/461 | 124/263 | anmol098/waka-readme-stats |
81 | Lighthouse CI Action | 16/539 | 126/260 | treosh/lighthouse-ci-action |
82 | pre-commit | 109/99 | 83/486 | pre-commit/action |
83 | Install Nix | 125/83 | 75/613 | cachix/install-nix-action |
84 | Add & Commit | 144/68 | 68/693 | EndBug/add-and-commit |
85 | Electron Builder Action | 53/205 | 116/305 | samuelmeuli/action-electron-builder |
86 | Netlify Actions | 110/98 | 88/420 | nwtgck/actions-netlify |
87 | Publish to npm | 94/118 | 97/362 | pascalgn/npm-publish-action |
88 | setup-msbuild | 192/45 | 48/1188 | microsoft/setup-msbuild |
89 | Setup Julia environment | 237/29 | 30/2687 | julia-actions/setup-julia |
90 | ansible-lint | 124/84 | 90/401 | ansible/ansible-lint-action |
91 | Slatify | 101/111 | 102/334 | homoluctus/slatify |
92 | Telegram Notify | 45/226 | 131/249 | appleboy/telegram-action |
93 | Telegram Message Notify | 46/226 | 132/249 | appleboy/telegram-action |
94 | Commit Linter | 151/64 | 81/531 | wagoid/commitlint-github-action |
95 | Azure Login | 243/28 | 36/2293 | Azure/login |
96 | Jekyll Actions | 103/108 | 110/319 | helaili/jekyll-action |
97 | rust-audit-check | 152/64 | 86/457 | actions-rs/audit-check |
98 | Black Code Formatter | 76/150 | 128/256 | lgeiger/black-action |
99 | Install SSH Key | 106/102 | 113/310 | shimataro/ssh-key-action |
100 | Docker Hub Description | 129/78 | 104/326 | peter-evans/dockerhub-description |
The Codecov team is proud to support Aleksey Kulikov, Founder of Treo (Page Speed Monitoring Service) and contributor to the Lighthouse CI Action.