A curated list of actions to use on GitHub
GitHub - sdras/awesome-actions: A curated list of awesome actions to use on GitHub

  
    
  



A curated list of awesome things related to GitHub Actions.

Actions are triggered by GitHub platform events directly in a repo and run on-demand workflows either on Linux, Windows or macOS virtual machines or inside a container in response. With GitHub Actions you can automate your workflow from idea to production.
Contents

Official Resources

Workflow Examples
Official Actions
Create your Actions


Community Resources

GitHub Tools and Management
Collection of Actions
Utility
Static Analysis
Dynamic Analysis
Monitoring
Pull Requests
GitHub Pages
Notifications and Messages
Deployment
External Services
Frontend Tools
Machine Learning Ops
Build
Database
Networking
Localization
Fun
Cheat Sheet


Tutorials

Official Resources

Official Site
Official Documentation
Official Actions organization

actions/virtual-environments - GitHub Actions virtual environments.
actions/runner - The Runner for GitHub Actions.


GitHub Blog Announcement

Workflow Examples

actions/starter-workflows - Starter workflow management.
actions/example-services - Example workflows using service containers.

Official Actions

Workflow Tool Actions
Tool actions for your workflow.


actions/checkout - Setup your repository on your workflow.
actions/upload-artifact - Upload artifacts from your workflow.
actions/download-artifact - Download artifacts from your build.
actions/cache - Cache dependencies and build outputs in GitHub Actions.
actions/github-script - Write a script for GitHub API and the workflow contexts.

Actions for GitHub Automation
Automate management for issues, pull requests, and releases.

actions/create-release - An Action to create releases via the GitHub Release API.
actions/upload-release-asset - An Action to upload a release asset via the GitHub Release API.
actions/first-interaction - An action for filtering pull requests and issues from first-time contributors.
actions/stale - Marks issues and pull requests that have not had recent interaction.
actions/labeler - An action for automatically labelling pull requests.
actions/delete-package-versions - Delete versions of a package from GitHub Packages.

Setup Actions
Set up your GitHub Actions workflow with a specific version of your programming languages.

actions/setup-node: Node.js
actions/setup-python: Python
actions/setup-go: Go
actions/setup-dotnet: .NET core sdk
actions/setup-haskell: Haskell (GHC and Cabal)
actions/setup-java: Java
actions/setup-ruby: Ruby
actions/setup-elixir: Elixir
actions/setup-julia: Julia

Create your Actions
JavaScript and TypeScript Actions

actions/toolkit - The GitHub ToolKit for developing GitHub Actions.
actions/hello-world-javascript-action - A template to demonstrate how to build a JavaScript action.
actions/javascript-action - Create a JavaScript Action.
actions/typescript-action - Create a TypeScript Action.
actions/http-client - A lightweight HTTP client optimized for use with actions, TypeScript with generics and async await.

Docker Container Actions

actions/hello-world-docker-action - A template to demonstrate how to build a Docker action.
actions/container-toolkit-action - Template repo for creating container actions using actions/toolkit.

Community Resources
GitHub Tools and Management

Declaratively setup GitHub Labels
Action to sync GitHub labels in the declarative way
Add releases to GitHub
Publish a docker image to Dockerhub
Create an issue using content from a file
Publish GitHub Releases with Assets
GitHub Project Automation+ - Automate GitHub Project cards with any webhook event.
Run GitHub Actions Locally with a web interface
Run GitHub Actions Locally in Terminal
Build and Publish Android debug APK
Generate sequential build numbers for GitHub Actions
Push Git changes to GitHub repository without authentication difficulties
Generate release notes based on your events
Create a GitHub wiki page based on the provided markdown file
Label your Pull Requests auto-magically (using committed files)
Add Label to your Pull Requests based on the author team name
Get a list of file changes with PR/Push
Use private actions in any workflow
Label Your Issues Using the Issue's Contents
Rollback a GitHub Release
Lock Closed Issues and Pull Requests after a Period of Inactivity
Get Commit Difference Count Between Two Branches
Generate Release Notes Based on Git References
Enforce Policies on GitHub Repositories and Commits
Auto Label Issue Based on Issue Description
Update Configured GitHub Actions to the Latest Versions
Create Issue Branch
Remove Old Artifacts
Expose Git Commit Data As Environment Variables
Sync Defined Files/Binaries to Wiki or External Repositories
Create/Update/Delete a GitHub Wiki Page Based on Any File
Prow GitHub Actions - Automation of policy enforcement, chat-ops, and automatic PR merging.
Check GitHub Status in your Workflow
Manage Labels on GitHub (create/rename/update/delete) as Code
Continuous Distribution of Funding to your Project Contributors and Dependencies
Herald Rules for GitHub: Add Subscribers, Assignees, Labels, and More to Your PR
GitHub Codeowners Validator - Ensures the correctness of your GitHub CODEOWNERS file. It supports public and private GitHub repositories and also GitHub Enterprise installations.
Copybara Action - Move and transform code between repositories (ideal to maintain several repos from one monorepo).

Collection of Actions

Use HashiCorp's Terraform
GitHub Actions for Yarn 1
GitHub Actions for Yarn 2
GitHub Actions for Golang
GitHub Actions for R and accompanying #rstats package
GitHub Actions for WordPress
GitHub Actions for Composer
GitHub Actions for Flutter
GitHub Actions for PHP
GitHub Actions for Rust
GitHub Actions for Android
GitHub Actions for Logtalk and Prolog
GitHub Actions for Deno
GitHub Actions for Unity
Octions - GitHub Actions for GitHub REST API
GitHub Actions for Docker
GitHub Actions for AWS
Actions Hub

Utility

Setup ssh-agent - Run ssh-agent with additional SSH keys to access private repositories.
GitHub Actions Badges for your README
GitHub Actions for Python project with poetry
GitHub Actions for Python project with pyenv
GitHub Actions to compile LaTeX documents
Update Maxmind Databases
Debug with SSH over tmate - Debug the Action directly by providing a SSH connection.
Unlock git-crypt files
Golang CGO cross compiler
Run your job on another architecture: arm32, aarch64 and others
Generate a table of contents
Automatically add Label or Assignee to an Issue
Action to send LGTM reaction as image or GIF when we say lgtm
Generate build numbers across multiple scopes
Publish GitHub release artifacts
Jekyll Diff Action - Diffs the built Jekyll site after a change, and comments the result back to GitHub.
Branch Protection Bot - Temporarily disable and re-enable "Include administrators" option in branch protection.
Wait for commit statuses - Wait until all statuses and checks are successful or any of them has failed and set its status output accordingly.
Get Latest Tag - Get the previous tag from git.
Create Milestone - Create a new open milestone given the title and description.
Close Milestone - Close the given milestone.
Action to enforce branch naming rules
Expose slug of some GitHub variables
awesome-lint as a GitHub Action
Edit JSON File
Build Slate documentation
Read Properties - Read values from .properties files.
Write Properties - Write values to .properties files.
Autotag - Automatically generate a new tag when the manifest file (i.e. package.json) version changes.
Apply templates with Jinja2 - Use the Jinja2 template engine to generate files from templates.
Has Changes - Check if there are code changes from previous steps.
Mind Your Language Action - Detect offensive comments in issues and pull requests, and warn senders.
YAML/JSON/XML Converter - Converts YAML/JSON/XML file formats interchangeably.
NSFW Detection - Detect NSFW content in committed files.
Has Changed Path - Conditionally run actions based on changed paths.
Linguist - Checks a repository and produces information about used languages in output.
Twilio Voice Call - Make Twilio voice call with defined text.
Setup Xcode - Switch between pre-installed versions of Xcode for macOS images.
Setup Xamarin - Switch between pre-installed versions of Xamarin and Mono for macOS images.
Memer Action - A GitHub Action for Programmer Memes xD.
Setup Cocoapods - Setup specific version of Cocoapods.
Public IP - Queries GitHub actions runner's public IP address.
GitHub Actions for Lazarus/FPC
Twilio Fax - Sends a document by fax using your Twilio account.
Setup Kubernetes tools - Install Kubernetes tools (kubectl, kustomize, helm, kubeval, conftest, and yq) on the runner.
Setup Elastic Cloud Control Tool - Install a specific version of ecctl on the runner.
PowerShell Script - Run PowerShell scripts with workflow contexts (e.g. $github.token) and cmdlets, return value => action output.
Upload and Scan Files with VirusTotal
Import a GPG Key
Compress with UPX - The Ultimate Packer for eXecutables.
Pull the New Go Module Version Into the Proxy Cache - Ensures the latest version of your Go module is in the proxy cache. Also updates the pkg.go.dev documentation upon release.
Delete Run Artifacts - Deletes all artifacts at the end of a workflow run.
GitHub Environment Variables Action - Expose environment variables such as the branch/tag name, repository slug, and ref slug.
GitHub Action Locks - Guarantee atomic execution of your GitHub Action workflows.
Paths Filter - Conditionally run actions based on files modified by PR, feature branch or pushed commits.
Minisauras -  Pulls all the JavaScript and CSS files from your base branch, minify them and creates a pull-request with a new branch.
Website to GIF - Turn any webpage into a GIF to display on your README, docs, etc.
Interactive Inputs - Runtime workflow inputs - Add dynamic inputs at runtime for your GitHub Actions workflows

Environments

Create an envfile
Export global environment variables for succeeding build steps
Programmatically set environment variables for use in subsequent steps
Install Conda environments for Python
Setup NativeScript
Create a JSON Environment File

Dependencies

Install NPM Dependencies with Caching
Highlight New NPM Dependencies - Comments on pull requests newly added NPM dependencies information.
Cache NPM Dependencies
Cache Yarn Dependencies

Semantic Versioning

Next SemVers - Output the next version for major, minor, and patch version based on the given semver version.
Get latest SemVer and branch name given a search string
Cut Release Branch - Cuts a release branch given a branch prefix and optional semantic version.
Increment Semantic Version - Bump a given semantic version (SemVer), depending on given release type.

Static Analysis

PHPStan Static code analyzer Action
GraphQL Inspector Action
PowerShell static analysis with PSScriptAnalyzer
Run tfsec, with reviewdog output on the PR

Testing

Run Tests through Puppeteer, the Headless Chrome Node API
xUnit Slack Reporter: Sends summary of tests from xUnit reports to a Slack channel
Run codeception tests
Run TestCafe tests
Run Unity tests
Run Cypress E2E tests
Test Ansible roles with Molecule
Run performance testing with artillery.io
Detect Flaky Tests with BuildPulse
Display Inline Code Annotations for Jest Tests
Run Julia tests

Linting

PHP Coding Standards Fixer Action
Runs Hadolint against a Dockerfile within a repository
Run ESLint, with reviewdog output on the PR
JavaScript-based linter for *.workflow files
Lint terraform files using tflint, with reviewdog output on the PR
autopep8: Automatically formats Python code to conform to the PEP 8 style guide
Run ergebnis/composer-normalize to ensure your PHP project has a normalized composer.json
Run stolt/lean-package-validator to ensure your package has only the required runtime artifacts
Run Go lint checks on PR event
Node.js - Automatically run the format and/or lint script used by the package
Stylelinter - GitHub Action that runs stylelint
Run stylelint, with reviewdog output on the PR
PyCodeStyle Action - A GitHub Action that leaves a comment on your PR with pycodestyle (autopep8) feedback
wemake-python-styleguide - The strictest and most opinionated python linter ever, with optional reviewdog output on the PR
Run TSLint with status checks and file diff annotations
Lint Pull Request commits with commitlint
Run vint, with reviewdog output on the PR
Run mispell, with reviewdog output on the PR
Run golangci-lint, with reviewdog output on the PR
Run shellcheck, with reviewdog output on the PR
Catch insensitive, inconsiderate writing in your markdown docs
Run dotenv-linter - Lints your .env files like a charm, with optional reviewdog output on the PR
Run dotenv-linter, with reviewdog output on the PR
Show and auto-fix linting errors for many programming languages
PHP_CodeSniffer With Annotations
Linter for markdown (with presets)
Stylelint problem matcher to create annotations
Run sqlcheck on the PR to identifies anti-patterns in SQL queries
Validate Fastlane Supply Metadata Against the Play Store Guidelines
Run Golint to lint your Golang code

Security

A vulnerability scanner for your docker images
Automatically approve and merge Dependabot updates
Run dlint security linter on your Python code
AWS Secrets Manager Actions - Define AWS Secrets Manager secrets to environment values.
Linting your AWS IAM policy documents for correctness and security issues
Secret Spreader - Not an action per se, but a tool to manage Actions Secrets across a list of repositories.
Secrets Sync Action - Action syncs secrets across multiple repositories.
Snyk Test Action
Manage Your GitHub Actions Secrets With A Simple CLI
SecretHub - Have a single source of truth for your secrets and load them into GitHub Actions on demand.

Code Coverage

Scan code with SonarCloud
Send your code coverage to codecov.io
Publishing code coverage to CodeClimate
Update repository go report card

Dynamic Analysis

Run Gofmt to check Golang code formatting
Run Goimports to check Golang imports order

Monitoring

Audit a webpage with Google Chrome's Lighthouse tests
Runs Lighthouse and posts results to PRs and Slack
Run Lighthouse in CI using GitHub Actions
Continuous Benchmarking and Benchmark Visualization for Go
Size Limit Action - Comments cost comparison of your JS in PRs and rejects them if limit is exceeded.
Check bundlephobia - Comments new and modified package size according to bundlephobia.io website and rejects PR on threshold surpassed.

Pull Requests

Set PR Reviewers Based on Assignees
Open or Update PR on Branch Push (with Branch Selection)
Automatically Rebase a PR
Label PR once it has a Specified Number of Approvals
Add Labels to a PR based on Matched File Patterns
Auto-Approve PRs
Automatically add Reviewers to PR based on the Configuration File
Add Labels to a PR based on Branch Name Patterns
Add Labels to a PR based on Total Size of the Diff
Automatically merge PRs That Are Ready
Verify That PRs Contain a Ticket Reference
Create a PR for Changes to your Repository in the Actions Workspace
Lint a PR
ChatOps for PRs
Prefix Title and Body of a PR Based on Text Extracted from Branch Name
Block Autosquash Commits
Automatically Bump and Tag on Merge
Automatically Update PRs with Outdated Checks and Squash and Merge the Ones Matching All Branch Protections
Merge Pal - Automatically Update and Merge PRs
Enforce naming convention on pull request title
Pull Request Stuck Notifier
Lint pull request name with commitlint (Awesome if you squash merge !)
Block PR merges when Checks for target branches are failing
Get generated static site screenshots updated by Pull Request
Add Labels Depending if the Pull Request Still in Progress
Ticket Check Action - Automatically add a ticket or issue number to the start of all Pull Request titles.
Pull Request Lint With Regex
Pull Request Landmines
Annotate a GitHub Pull Request Based on a Checkstyle XML-Report
Pull Request Stats -  Print relevant stats about reviewers.
Pull Request Description Enforcer - Enforces description on pull requests.

GitHub Pages

Deploy a Zola site to GitHub Pages
Build Hugo static content site and publish it to gh-pages branch
Build a Jekyll site—with Custom Jekyll Plugins & Build Scripts—and deploy it back to the Gh-Pages Branch
Google Dataset Search Metadata - And other schema.org extractors to make datasets discoverable from GitHub pages.
GitHub Actions for deploying to GitHub Pages with Static Site Generators
GitHub Action for Hexo
Deploy Google Analytics stats to GitHub Pages
A Jupyter Notebook Blogging Platform Powered by GitHub Actions, Pages and Jekyll
Deploy A Static Site to GitHub Pages - Deploy to custom directory and ignore folder/file.
Deploy to GitHub Pages with Advanced Settings

Notifications and Messages

Send a Discord notification
Post a Slack message as a bot
Send an SMS from GitHub Actions using Nexmo
Send an SMS from GitHub Actions using Clockworksms
Send a Telegram Message
Send a File or Text Message to Discord (custom define color, username or avatar)
Collaborate on tweets using pull requests
Send a Push Notification via Push by Techulus
Send email with SendGrid
Send a Push Notification via Join
New package version checker for npm
New package version checker for NuGet
New package version checker for Gradle
Send a Push Notification via Pushbullet
Create an Outlook Calendar Event using Microsoft Graph
Watch for GitHub Wiki page changes and post to Slack
Send an SMS using MessageBird
Reply to Stale Bots
Send an Embed Message to Discord
Keep Your PRs in Sync With Teamwork Tasks
Send Microsoft Teams Notification

Deployment

Deploy to Netlify
Deploy a Probot App using Actions
Deploy a playlist to Spotify
Deploy VS Code extensions with vsce
Purge Cloudflare cache after updating a website
Deploy your DNS configuration using DNS Control
Deploy a Theme to Shopify
Trigger multiple GitLab CI Pipeline
Trigger multiple Jenkins Jobs
GitHub Action for Homebrew Tap
Copy files and artifacts via SSH
Executing remote ssh commands
Publish a Python distribution package to PyPI
Deploy Static Website to Azure Storage
Cross platform Chocolatey CLI to build and publish packages
Deploy iOS Pod Library to Cocoapods
GitHub Action for TencentCloud Serverless
Publish npm (pre)releases
Deploy a static site to Surge.sh
GitHub Action for GoReleaser, a release automation tool for Go projects
FTP Deploy Action, Deploys a GitHub project to a FTP server using GitHub actions
Publish Article to Dev.to
Action For Semantic Release
Deploy a Collection to Ansible Galaxy
Publish module to Puppet Forge
Build and publish Electron apps
Publish a Maven package
Build and deploy a theme to Ghost CMS
Deploy an Ansible role to Ansible Galaxy
Publish one or more JS modules to a registry
Publish a package with 2FA using Slack
Serialize Workflow Runs in Continuous Deployment Pipelines
Netlify Deploy GitHub Action for each commit
Run Ansible Playbooks
Publish a Python Distribution Package to Anaconda Cloud
Deploy VS Code Extension to Visual Studio Marketplace or the Open VSX Registry
Deploy a YouTube Video to Anchor.fm Podcast
Deploy with AWS CodeDeploy

Docker

Update a Docker Hub repository description from README.md
Publish Docker Images to the GitHub Package Registry (GPR)
Update a repository's "Full description" on Docker Hub
Build and publish docker images to any registry using Kaniko
Monitor and limit your docker image size
Publish Docker Images to the Amazon Elastic Container Registry (ECR)
Build And Push Your Docker Images Caching Each Stage To Reduce Build Time
Set up Docker Buildx
Convert Branch or Tag Name Into Docker-Compatible Image Tag
Update a Container Repository Description From README.md - Supported Registries: Docker Hub, Quay, Harbor.

Kubernetes

Deploy to any Cloud or Kubernetes Using Pulumi
Deploy to Kubernetes with kubectl
Get Kubeconfig File From Google Kubernetes Engine (GKE)
Kustomize Kubernetes Config YAMLs
Create a Kubernetes Cluster for Testing Using Krucible

AWS

Sync/upload a directory to an AWS S3 bucket
Deploy Lambda code to an existing function

Terraform

Generate terraform documentation - Uses terraform-docs to generate docs for terraform modules.
An example of using Terraform to validate and apply GitHub administration

External Services

Use a Jenkinsfile
GitHub Action for Firebase
GitHub Action for Contentful Migration CLI
GitHub Actions for Pixela (a-know/pi)
GitHub Action for Google Cloud Platform (GCP)
Upload files to any OpenStack Swift service provider
GitHub Action for sending Stack Overflow posts to Slack
Assume AWS role
Generate Custom Response using JSONbin

Frontend Tools

Execute Gradle task
JS Build Actions - Run Grunt or Gulp build tasks and commit file changes.
GitHub Action for Gatsby CLI
Runs a WebPageTest audit and prints the results as commit comment
GitHub Actions for Hugo extended
Generate OG Image - Generate customisable open graph images from Markdown files.
GitHub Actions for mdBook
Setup Mint - Setup Mint (programming language for writing single page applications).
Gatsby AWS S3 Deployment - Deploy Gatsby to S3 (supports CloudFront).

Machine Learning Ops

Submitting Argo Workflows (Cloud Agnostic)
Submitting Argo Workflows to GKE
Query Experiment Tracking Results From Weights & Biases
Run Parameterized Jupyter Notebooks
Compile, Deploy and Run Kubeflow Pipeline
Automatically Dockerize A Data-Science Repo As A Jupyter Server
Azure Machine Learning With GitHub Actions

Build

run-cmake - Multi platform action to build C/C++ software with CMake and Ninja.
run-vcpkg - Multi platform action to build and install C/C++ dependencies with vcpkg.
Build Go applications for multiplatform
Generate ~/.m2/settings.xml for Maven builds
Run Pascal Script
Setup Brainfuck - Setup brainfuck interpreter.
Publish Go Binaries to GitHub Release Assets
Setup COBOL
Check Gradle version - Keep your Gradle version up to date.

Database

Setup Cassandra Schema - Running scripts from the provided folder on top of Cassandra cluster.

Networking

Setup ZeroTier - Connect your runner to a ZeroTier network.

Localization

Find and automatically fix typos and grammar issues in your code
Translation - Translate text from any language to any language.

Fun

Add equivalent of a like button in your README - Visualize community approval on some part of your readme (can be used as a poll).

Cheat Sheet

GitHub Actions Branding Cheat Sheet

Tutorials

Continuous deployment of Next.js app with Up
Converting Docker-based Actions to JavaScript/TypeScript
GitHub Actions CI for Swift/iOS Projects
Working with GitHub Actions
GitHub Actions for Rails Developers
GitHub Actions Advent Calendar
Zero Downtime Laravel Deployments with GitHub Actions
Building Custom GitHub Actions Pluralsight Course
Continuously Deploying Django to DigitalOcean with Docker and GitHub Actions
Deploying Self-Hosted GitHub Actions Runners with Docker - Deploy self-hosted GitHub Actions runners with Docker and Docker Swarm to DigitalOcean.
Setup Auto-scaled self-hosted GitHub Actions Runners on AWS Spot-instances
Getting the Gist of GitHub Actions


Please don't hesitate to make a PR if you have more resources to share. Check out contributing.md for more information.

