← Back to Awesome

Sections

GitHub Actions

GitHub repository ↗ synced 2026/8/9

Awesome Actions Awesome

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.

Official Resources

Official Site
Official Documentation
Official Actions organization
GitHub Blog Announcement
  • actions/virtual-environments - GitHub Actions virtual environments.
    • actions/runner - The Runner for GitHub Actions.

Workflow Examples

actions/starter-workflows

Starter workflow management.

actions/example-services

Example workflows using service containers.

Official Actions

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/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.

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

Workflow Tool Actions

Tool actions for your workflow.

Actions for GitHub Automation

Automate management for issues, pull requests, and releases.

Setup Actions

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

Create your 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.

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.

JavaScript and TypeScript Actions

Docker Container Actions

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

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
Install NPM Dependencies with Caching
Highlight New NPM Dependencies

Comments on pull requests newly added NPM dependencies information.

Cache NPM Dependencies
Cache Yarn Dependencies
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.

Environments

Dependencies

Semantic Versioning

Static Analysis

PHPStan Static code analyzer Action
GraphQL Inspector Action
PowerShell static analysis with PSScriptAnalyzer
Run tfsec, with reviewdog output on the PR
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
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
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.

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

Testing

Linting

Security

Code Coverage

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
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.

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
Sync/upload a directory to an AWS S3 bucket
Deploy Lambda code to an existing function
Generate terraform documentation

Uses terraform-docs to generate docs for terraform modules.

An example of using Terraform to validate and apply GitHub administration

Docker

Kubernetes

AWS

Terraform

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](https://cmake.org) and [Ninja](https://ninja-build.org/).

run-vcpkg

Multi platform action to build and install C/C++ dependencies with [vcpkg](https://github.com/microsoft/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.