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 Site
 - Official Documentation
 - Official Actions organization
- actions/virtual-environments - GitHub Actions virtual environments.
 - actions/runner - The Runner for GitHub Actions.
 
 - GitHub Blog Announcement
 
- actions/starter-workflows - Starter workflow management.
 - actions/example-services - Example workflows using service containers.
 
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.
 
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.
 
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
 
- 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.
 
- 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).
 
- 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
 
- Setup 
ssh-agent- Runssh-agentwith 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 
.propertiesfiles. - Write Properties - Write values to 
.propertiesfiles. - 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.
 
- 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-normalizeto ensure your PHP project has a normalizedcomposer.json - Run 
stolt/lean-package-validatorto ensure your package has only the requiredruntimeartifacts - Run Go lint checks on PR event
 - Node.js - Automatically run the 
formatand/orlintscript 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
 
- 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.
 
- 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.
 
- 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
 
- 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
 
- 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
 
- Generate terraform documentation - Uses terraform-docs to generate docs for terraform modules.
 - An example of using Terraform to validate and apply GitHub administration
 
- 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
 
- 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).
 
- 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
 
- 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.
 
- Setup Cassandra Schema - Running scripts from the provided folder on top of Cassandra cluster.
 
- Setup ZeroTier - Connect your runner to a ZeroTier network.
 
- Find and automatically fix typos and grammar issues in your code
 - Translation - Translate text from any language to any language.
 
- Add equivalent of a like button in your README - Visualize community approval on some part of your readme (can be used as a poll).
 
- 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.
