Awesome Actions
A curated list of awesome actions to use on GitHub
Official SiteGitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD.
Official DocumentationOfficial Actions organizationactions/virtual-environmentsGitHub Actions virtual environments.
actions/runnerThe Runner for GitHub Actions.
GitHub Blog Announcementactions/starter-workflowsStarter workflow management.
actions/example-servicesExample workflows using service containers.
actions/checkoutSetup your repository on your workflow.
actions/upload-artifactUpload artifacts from your workflow.
actions/download-artifactDownload artifacts from your build.
actions/cacheCache dependencies and build outputs in GitHub Actions.
actions/github-scriptWrite a script for GitHub API and the workflow contexts.
actions/create-releaseAn Action to create releases via the GitHub Release API.
actions/upload-release-assetAn Action to upload a release asset via the GitHub Release API.
actions/first-interactionAn action for filtering pull requests and issues from first-time contributors.
actions/staleMarks issues and pull requests that have not had recent interaction.
actions/labelerAn action for automatically labelling pull requests.
actions/delete-package-versionsDelete versions of a package from GitHub Packages.
actions/setup-node: Node.jsactions/setup-python: Pythonactions/setup-go: Goactions/setup-dotnet: .NET core sdkactions/setup-haskell: Haskell (GHC and Cabal)actions/setup-java: Javaactions/setup-ruby: Rubyactions/setup-elixir: Elixiractions/setup-julia: Juliaactions/toolkitThe GitHub ToolKit for developing GitHub Actions.
actions/hello-world-javascript-actionA template to demonstrate how to build a JavaScript action.
actions/javascript-actionCreate a JavaScript Action.
actions/typescript-actionCreate a TypeScript Action.
actions/http-clientA lightweight HTTP client optimized for use with actions, TypeScript with generics and async await.
actions/hello-world-docker-actionA template to demonstrate how to build a Docker action.
actions/container-toolkit-actionTemplate repo for creating container actions using actions/toolkit.
Declaratively setup GitHub LabelsAction to sync GitHub labels in the declarative wayAdd releases to GitHubPublish a docker image to DockerhubCreate an issue using content from a filePublish GitHub Releases with AssetsGitHub Project Automation+Automate GitHub Project cards with any webhook event.
Run GitHub Actions Locally with a web interfaceRun GitHub Actions Locally in Terminalis a a tool to run your GitHub Actions locally.
Build and Publish Android debug APKGenerate sequential build numbers for GitHub ActionsPush Git changes to GitHub repository without authentication difficultiesGenerate release notes based on your eventsCreate a GitHub wiki page based on the provided markdown fileLabel your Pull Requests auto-magically (using committed files)Add Label to your Pull Requests based on the author team nameGet a list of file changes with PR/PushUse private actions in any workflowLabel Your Issues Using the Issue's ContentsRollback a GitHub ReleaseLock Closed Issues and Pull Requests after a Period of InactivityGet Commit Difference Count Between Two BranchesGenerate Release Notes Based on Git ReferencesEnforce Policies on GitHub Repositories and CommitsAuto Label Issue Based on Issue DescriptionUpdate Configured GitHub Actions to the Latest VersionsCreate Issue BranchRemove Old ArtifactsExpose Git Commit Data As Environment VariablesSync Defined Files/Binaries to Wiki or External RepositoriesCreate/Update/Delete a GitHub Wiki Page Based on Any FileProw GitHub ActionsAutomation of policy enforcement, chat-ops, and automatic PR merging.
Check GitHub Status in your WorkflowManage Labels on GitHub (create/rename/update/delete) as CodeContinuous Distribution of Funding to your Project Contributors and DependenciesHerald Rules for GitHub: Add Subscribers, Assignees, Labels, and More to Your PRGitHub Codeowners ValidatorEnsures the correctness of your GitHub CODEOWNERS file. It supports public and private GitHub repositories and also…
Copybara ActionMove and transform code between repositories (ideal to maintain several repos from one monorepo).
Use HashiCorp's TerraformSets up Terraform CLI in your GitHub Actions workflow.
GitHub Actions for Yarn 1GitHub Actions for Yarn 2GitHub Actions for GolangGitHub Actions for R and accompanying #rstats packageGitHub Actions for WordPressGitHub Actions for ComposerGitHub Actions for FlutterGitHub Actions for PHPGitHub Actions for RustGitHub Actions for AndroidGitHub Actions for Logtalk and PrologGitHub Actions for DenoGitHub Actions for UnityOctions - GitHub Actions for GitHub REST APIGitHub Actions for DockerGitHub Actions for AWSActions HubSetup ssh-agentRun ssh-agent with additional SSH keys to access private repositories.
GitHub Actions Badges for your READMEGitHub Actions for Python project with poetryGitHub Actions for Python project with pyenvGitHub Actions to compile LaTeX documentsGitHub Action to compile LaTeX documents
Update Maxmind DatabasesDebug with SSH over tmateDebug the Action directly by providing a SSH connection.
Unlock git-crypt filesGolang CGO cross compilerRun your job on another architecture: arm32, aarch64 and othersGenerate a table of contentsAutomatically add Label or Assignee to an IssueAction to send LGTM reaction as image or GIF when we say lgtmGenerate build numbers across multiple scopesPublish GitHub release artifactsJekyll Diff ActionDiffs the built Jekyll site after a change, and comments the result back to GitHub.
Branch Protection BotTemporarily disable and re-enable "Include administrators" option in branch protection.
Wait for commit statusesWait until all statuses and checks are successful or any of them has failed and set its status output accordingly.
Get Latest TagGet the previous tag from git.
Create MilestoneCreate a new open milestone given the title and description.
Close MilestoneClose the given milestone.
Action to enforce branch naming rulesExpose slug of some GitHub variablesGitHub Action adding comments to pull requests with package health information about newly added npm dependencies.
awesome-lint as a GitHub ActionEdit JSON FileBuild Slate documentationRead PropertiesRead values from .properties files.
Write PropertiesWrite values to .properties files.
AutotagAutomatically generate a new tag when the manifest file (i.e. package.json) version changes.
Apply templates with Jinja2Use the Jinja2 template engine to generate files from templates.
Has ChangesCheck if there are code changes from previous steps.
Mind Your Language ActionDetect offensive comments in issues and pull requests, and warn senders.
YAML/JSON/XML ConverterConverts YAML/JSON/XML file formats interchangeably.
NSFW DetectionDetect NSFW content in committed files.
Has Changed PathConditionally run actions based on changed paths.
LinguistChecks a repository and produces information about used languages in output.
Twilio Voice CallMake Twilio voice call with defined text.
Setup XcodeSwitch between pre-installed versions of Xcode for macOS images.
Setup XamarinSwitch between pre-installed versions of Xamarin and Mono for macOS images.
Memer ActionA GitHub Action for Programmer Memes xD.
Setup CocoapodsSetup specific version of Cocoapods.
Public IPQueries GitHub actions runner's public IP address.
GitHub Actions for Lazarus/FPCTwilio FaxSends a document by fax using your Twilio account.
Setup Kubernetes toolsInstall Kubernetes tools (kubectl, kustomize, helm, kubeval, conftest, and yq) on the runner.
Setup Elastic Cloud Control ToolInstall a specific version of ecctl on the runner.
PowerShell ScriptRun PowerShell scripts with workflow contexts (e.g. $github.token) and cmdlets, return value => action output.
Upload and Scan Files with VirusTotalImport a GPG KeyCompress with UPXThe Ultimate Packer for eXecutables.
Pull the New Go Module Version Into the Proxy CacheEnsures the latest version of your Go module is in the proxy cache. Also updates the pkg.go.dev documentation upon…
GitHub Environment Variables ActionExpose environment variables such as the branch/tag name, repository slug, and ref slug.
GitHub Action LocksGuarantee atomic execution of your GitHub Action workflows.
Paths FilterConditionally run actions based on files modified by PR, feature branch or pushed commits.
MinisaurasPulls all the JavaScript and CSS files from your base branch, minify them and creates a pull-request with a new branch.
Website to GIFTurn any webpage into a GIF to display on your README, docs, etc.
Interactive Inputs - Runtime workflow inputsAdd dynamic inputs at runtime for your GitHub Actions workflows
Create an envfileExport global environment variables for succeeding build stepsProgrammatically set environment variables for use in subsequent stepsInstall Conda environments for PythonSetup NativeScriptCreate a JSON Environment FileInstall NPM Dependencies with CachingHighlight New NPM DependenciesComments on pull requests newly added NPM dependencies information.
Cache NPM DependenciesCache Yarn DependenciesNext SemVersOutput the next version for major, minor, and patch version based on the given semver version.
Get latest SemVer and branch name given a search stringCut Release BranchCuts a release branch given a branch prefix and optional semantic version.
Increment Semantic VersionBump a given semantic version (SemVer), depending on given release type.
PHPStan Static code analyzer ActionGraphQL Inspector ActionPowerShell static analysis with PSScriptAnalyzerRun tfsec, with reviewdog output on the PRRun Tests through Puppeteer, the Headless Chrome Node APIxUnit Slack Reporter: Sends summary of tests from xUnit reports to a Slack channelRun codeception testsRun TestCafe testsRun Unity testsRun Cypress E2E testsTest Ansible roles with MoleculeRun performance testing with artillery.ioDetect Flaky Tests with BuildPulseDisplay Inline Code Annotations for Jest TestsRun Julia testsPHP Coding Standards Fixer ActionRuns Hadolint against a Dockerfile within a repositoryRun ESLint, with reviewdog output on the PRJavaScript-based linter for *.workflow filesLint terraform files using tflint, with reviewdog output on the PRautopep8: Automatically formats Python code to conform to the PEP 8 style guideRun ergebnis/composer-normalize to ensure your PHP project has a normalized composer.jsonRun stolt/lean-package-validator to ensure your package has only the required runtime artifactsRun Go lint checks on PR eventNode.js - Automatically run the format and/or lint script used by the packageStylelinter - GitHub Action that runs stylelintRun stylelint, with reviewdog output on the PRPyCodeStyle Action - A GitHub Action that leaves a comment on your PR with pycodestyle (autopep8) feedbackwemake-python-styleguide - The strictest and most opinionated python linter ever, with optional reviewdog output on…(label: level:starter) The strictest and most opinionated python linter ever!
Run TSLint with status checks and file diff annotationsLint Pull Request commits with commitlintRun vint, with reviewdog output on the PRRun mispell, with reviewdog output on the PRRun golangci-lint, with reviewdog output on the PRRun shellcheck, with reviewdog output on the PRCatch insensitive, inconsiderate writing in your markdown docsRun dotenv-linter - Lints your .env files like a charm, with optional reviewdog output on the PRRun dotenv-linter, with reviewdog output on the PRShow and auto-fix linting errors for many programming languagesPHP_CodeSniffer With AnnotationsLinter for markdown (with presets)Stylelint problem matcher to create annotationsRun sqlcheck on the PR to identifies anti-patterns in SQL queriesValidate Fastlane Supply Metadata Against the Play Store GuidelinesRun Golint to lint your Golang codeA vulnerability scanner for your docker imagesAutomatically approve and merge Dependabot updatesRun dlint security linter on your Python codeAWS Secrets Manager ActionsDefine AWS Secrets Manager secrets to environment values.
Linting your AWS IAM policy documents for correctness and security issuesSecret SpreaderNot an action per se, but a tool to manage Actions Secrets across a list of repositories.
Secrets Sync ActionAction syncs secrets across multiple repositories.
Snyk Test ActionManage Your GitHub Actions Secrets With A Simple CLISecretHubHave a single source of truth for your secrets and load them into GitHub Actions on demand.
Scan code with SonarCloudSend your code coverage to codecov.ioPublishing code coverage to CodeClimateUpdate repository go report cardRun Gofmt to check Golang code formattingRun Goimports to check Golang imports orderAudit a webpage with Google Chrome's Lighthouse testsRuns Lighthouse and posts results to PRs and SlackRun Lighthouse in CI using GitHub ActionsContinuous Benchmarking and Benchmark Visualization for GoSize Limit ActionComments cost comparison of your JS in PRs and rejects them if limit is exceeded.
Check bundlephobiaComments new and modified package size according to bundlephobia.io website and rejects PR on threshold surpassed.
Set PR Reviewers Based on AssigneesOpen or Update PR on Branch Push (with Branch Selection)Automatically Rebase a PRLabel PR once it has a Specified Number of ApprovalsAdd Labels to a PR based on Matched File PatternsAuto-Approve PRsAutomatically add Reviewers to PR based on the Configuration FileAdd Labels to a PR based on Branch Name PatternsAdd Labels to a PR based on Total Size of the DiffAutomatically merge PRs That Are ReadyVerify That PRs Contain a Ticket ReferenceCreate a PR for Changes to your Repository in the Actions WorkspaceLint a PRChatOps for PRsPrefix Title and Body of a PR Based on Text Extracted from Branch NameBlock Autosquash CommitsAutomatically Bump and Tag on MergeAutomatically Update PRs with Outdated Checks and Squash and Merge the Ones Matching All Branch ProtectionsMerge Pal - Automatically Update and Merge PRsEnforce naming convention on pull request titlePull Request Stuck NotifierLint pull request name with commitlint (Awesome if you squash merge !)Block PR merges when Checks for target branches are failingGet generated static site screenshots updated by Pull RequestAdd Labels Depending if the Pull Request Still in ProgressTicket Check ActionAutomatically add a ticket or issue number to the start of all Pull Request titles.
Pull Request Lint With RegexPull Request LandminesAnnotate a GitHub Pull Request Based on a Checkstyle XML-ReportPull Request StatsPrint relevant stats about reviewers.
Pull Request Description EnforcerEnforces description on pull requests.
Deploy a Zola site to GitHub PagesBuild Hugo static content site and publish it to gh-pages branchBuild a Jekyll site—with Custom Jekyll Plugins & Build Scripts—and deploy it back to the Gh-Pages BranchGoogle Dataset Search MetadataAnd other schema.org extractors to make datasets discoverable from GitHub pages.
GitHub Actions for deploying to GitHub Pages with Static Site GeneratorsGitHub Action for HexoDeploy Google Analytics stats to GitHub PagesA Jupyter Notebook Blogging Platform Powered by GitHub Actions, Pages and JekyllDeploy A Static Site to GitHub PagesDeploy to custom directory and ignore folder/file.
Deploy to GitHub Pages with Advanced SettingsSend a Discord notificationPost a Slack message as a botSend an SMS from GitHub Actions using NexmoSend an SMS from GitHub Actions using ClockworksmsSend a Telegram MessageSend a File or Text Message to Discord (custom define color, username or avatar)Collaborate on tweets using pull requestsSend a Push Notification via Push by TechulusSend email with SendGridSend a Push Notification via JoinNew package version checker for npmNew package version checker for NuGetNew package version checker for GradleSend a Push Notification via PushbulletCreate an Outlook Calendar Event using Microsoft GraphWatch for GitHub Wiki page changes and post to SlackSend an SMS using MessageBirdReply to Stale BotsSend an Embed Message to DiscordKeep Your PRs in Sync With Teamwork TasksSend Microsoft Teams NotificationDeploy to NetlifyDeploy a Probot App using ActionsDeploy a playlist to SpotifyDeploy VS Code extensions with vscePurge Cloudflare cache after updating a websiteDeploy your DNS configuration using DNS ControlDeploy a Theme to ShopifyTrigger multiple GitLab CI PipelineTrigger multiple Jenkins JobsGitHub Action for Homebrew TapCopy files and artifacts via SSHExecuting remote ssh commandsPublish a Python distribution package to PyPIDeploy Static Website to Azure StorageCross platform Chocolatey CLI to build and publish packagesDeploy iOS Pod Library to CocoapodsGitHub Action for TencentCloud ServerlessPublish npm (pre)releasesDeploy a static site to Surge.shGitHub Action for GoReleaser, a release automation tool for Go projectsFTP Deploy Action, Deploys a GitHub project to a FTP server using GitHub actionsPublish Article to Dev.toAction For Semantic ReleaseDeploy a Collection to Ansible GalaxyPublish module to Puppet ForgeBuild and publish Electron appsPublish a Maven packageBuild and deploy a theme to Ghost CMSDeploy an Ansible role to Ansible GalaxyPublish one or more JS modules to a registryPublish a package with 2FA using SlackSerialize Workflow Runs in Continuous Deployment PipelinesNetlify Deploy GitHub Action for each commitRun Ansible PlaybooksPublish a Python Distribution Package to Anaconda CloudDeploy VS Code Extension to Visual Studio Marketplace or the Open VSX RegistryDeploy a YouTube Video to Anchor.fm PodcastDeploy with AWS CodeDeployUpdate a Docker Hub repository description from README.mdPublish Docker Images to the GitHub Package Registry (GPR)Update a repository's "Full description" on Docker HubBuild and publish docker images to any registry using KanikoMonitor and limit your docker image sizeA tool to keep an eye on your docker images size.
Publish Docker Images to the Amazon Elastic Container Registry (ECR)Build And Push Your Docker Images Caching Each Stage To Reduce Build TimeSet up Docker BuildxConvert Branch or Tag Name Into Docker-Compatible Image TagExpose slug of some GitHub variablesGitHub Action adding comments to pull requests with package health information about newly added npm dependencies.
Deploy to any Cloud or Kubernetes Using PulumiDeploy to Kubernetes with kubectlGet Kubeconfig File From Google Kubernetes Engine (GKE)Kustomize Kubernetes Config YAMLsCreate a Kubernetes Cluster for Testing Using KrucibleSync/upload a directory to an AWS S3 bucketDeploy Lambda code to an existing functionGenerate terraform documentationUses terraform-docs to generate docs for terraform modules.
An example of using Terraform to validate and apply GitHub administrationUse a JenkinsfileGitHub Action for FirebaseGitHub Action for Contentful Migration CLIGitHub Actions for Pixela (a-know/pi)GitHub Action for Google Cloud Platform (GCP)Upload files to any OpenStack Swift service providerGitHub Action for sending Stack Overflow posts to SlackAssume AWS roleGenerate Custom Response using JSONbinExecute Gradle taskJS Build ActionsRun Grunt or Gulp build tasks and commit file changes.
GitHub Action for Gatsby CLIRuns a WebPageTest audit and prints the results as commit commentGitHub Actions for Hugo extendedGenerate OG ImageGenerate customisable open graph images from Markdown files.
GitHub Actions for mdBookSetup MintSetup Mint (programming language for writing single page applications).
Gatsby AWS S3 DeploymentDeploy Gatsby to S3 (supports CloudFront).
Submitting Argo Workflows (Cloud Agnostic)Submitting Argo Workflows to GKEQuery Experiment Tracking Results From Weights & BiasesRun Parameterized Jupyter NotebooksCompile, Deploy and Run Kubeflow PipelineAutomatically Dockerize A Data-Science Repo As A Jupyter ServerAzure Machine Learning With GitHub Actionsrun-cmakeMulti platform action to build C/C++ software with CMake and Ninja.
run-vcpkgMulti platform action to build and install C/C++ dependencies with vcpkg.
Build Go applications for multiplatformGenerate ~/.m2/settings.xml for Maven buildsRun Pascal ScriptSetup BrainfuckSetup brainfuck interpreter.
Publish Go Binaries to GitHub Release AssetsSetup COBOLCheck Gradle versionKeep your Gradle version up to date.
Setup Cassandra SchemaRunning scripts from the provided folder on top of Cassandra cluster.
Setup ZeroTierConnect your runner to a ZeroTier network.
Find and automatically fix typos and grammar issues in your codeTranslationTranslate text from any language to any language.
Add equivalent of a like button in your READMEVisualize community approval on some part of your readme (can be used as a poll).
GitHub Actions Branding Cheat SheetContinuous deployment of Next.js app with UpConverting Docker-based Actions to JavaScript/TypeScriptGitHub Actions CI for Swift/iOS ProjectsWorking with GitHub ActionsGitHub Actions for Rails DevelopersGitHub Actions Advent CalendarZero Downtime Laravel Deployments with GitHub ActionsBuilding Custom GitHub Actions Pluralsight CourseContinuously Deploying Django to DigitalOcean with Docker and GitHub ActionsDeploying Self-Hosted GitHub Actions Runners with DockerDeploy self-hosted GitHub Actions runners with Docker and Docker Swarm to DigitalOcean.
Setup Auto-scaled self-hosted GitHub Actions Runners on AWS Spot-instancesGetting the Gist of GitHub Actions