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
- Community Resources
- Official Site
- Official Community Forum Board
- Official Documentation
- Official Actions organization
- GitHub Blog Announcement
- actions/starter-workflows - Starter workflow management.
- actions/example-services - Example workflows using service containers.
Workflow Tool Actions
Tool actions for your workflow.
- actions/github - Wraps actions-toolkit into an Action for common GitHub automations.
- 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.
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
Create your Actions
- actions/toolkit - The GitHub ToolKit for developing GitHub Actions.
- 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.
GitHub Tools and Management
- Declaratively setup GitHub Labels
- Action to sync GitHub labels in the declarative way
- Run GitHub Actions Locally
- Alternative (Python-based) for Running GitHub Actions Locally
- Manage GitHub Action workflows and actions by cli - Allows you to script edition.
- GitHub Action Builder and Previewer
- 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. Supports new YAML syntax
- 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
- Manually trigger your GitHub Actions from a UI
- Get a list of file changes with PR/Push
Collection of Actions
- Many linters and autofixers for various languages
- Node.js Actions Toolkit
- Use HashiCorp's Terraform
- GitHub Actions for Yarn
- GitHub Actions for Golang
- Android Build and Emulator Actions
- 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 Yarn - new syntax
- 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
- Wait for 200
- Run Cake tasks
- Run psake tasks
- SSH - Run SSH commands on a server.
ssh-agentwith additional SSH keys to access private repositories.
- General purpose HTTP client for Actions, wrapping HTTPie
- Run pandoc - The swiss army knife for document conversions.
- Debug Action - Print environment variables and event to the Actions logs.
- Gate actions by filtering if files matching a pattern have been touched
- Scan for secrets in your source code
- Review the licenses of your node dependencies
- A GitHub Action to check your project's dependencies
- Check if package.json dependencies have changed
- Update a repository's "Full description" on Docker Hub
- GitHub Actions Badges for your README
- GitHub Actions for Python project with poetry
- GitHub Actions to compile LaTeX documents
- Create an envfile
- 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
- Export global environment variables for succeeding build steps
- Programmatically set environment variables for use in subsequent steps
- 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.
- Next SemVers - Output the next version for major, minor, and patch version based on the given semver version.
- 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
- Install NPM dependencies with caching
- Expose slug of some GitHub variables
- AWS Secrets Manager Actions - Define AWS Secrets Manager secrets to environment values.
- awesome-lint as a GitHub Action
- Action to lint Awesome lists - Uses awesome-lint to lint awesome lists as an Action.
- Edit JSON File
- Build Slate documentation
- 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.
- Generate terraform documentation - Uses terraform-docs to generate docs for terraform modules.
- Increment Semantic Version - Bump a given semantic version (SemVer), depending on given release type.
Testing and Linting
- Runs Hadolint against a Dockerfile within a repository
- Test your Actions Locally
- Lint a Dockerfile (using replicatedhq/dockerfilelint)
- NPM Audit
- PHP Code fixer Action
- PHP Psalm Static code analyzer Action
- PHPStan Static code analyzer Action
- PHPQA toolsuite Action
- GraphQL Inspector Action
- Snyk CLI Test Action
- PowerShell static analysis with PSScriptAnalyzer
- Run web performance audits using Sitespeed.io
- Run Tests through Puppeteer, the Headless Chrome Node API
- Run ESLint with status checks and file diff annotations
- Run ESLint, with reviewdog output on the PR
- Send your latest code coverage score to Coveralls.io
- Lint a Dockerfile using Hadolint
- Lint terraform files using tflint
- Lint terraform files using tflint, with reviewdog output on the PR
- Run tfsec, with reviewdog output on the PR
- Validate Puppet modules using Puppet PDK
- Scan git commits for secrets with gitleaks
- Scan code with SonarCloud
- Send your code coverage to codecov.io
- autopep8: Automatically formats Python code to conform to the PEP 8 style guide
- xUnit Slack Reporter: Sends summary of tests from xUnit reports to a Slack channel
- Publishing code coverage to CodeClimate
- Run codeception tests
- Audit a webpage with Google Chrome's Lighthouse tests
localheinz/composer-normalizeto ensure your PHP project has a normalized
- Run Go lint checks on PR event
- Node.js - Automatically run the
lintscript used by the package
- Continuous Benchmarking and Benchmark Visualization for Go
- 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
- Build Go applications for multiplatform
- Catch insensitive, inconsiderate writing in your markdown docs
- Run TestCafe tests
- Run Unity tests
- Run Cypress E2E tests
- 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
- Test Ansible roles with Molecule
- A vulnerability scanner for your docker images
- Automatically approve and merge Dependabot updates
- Run dlint security linter on your Python code
- Set pull request reviewers based on assignees
- Open or update pull request on branch push (with branch selection)
- Post gif on check fail
- Cleanup branches after merge
- Automatically rebase a PR
- Evaluate Clojure in the issue comment
- Create Pull Request when branch is pushed
- Label pull request once it has a specified number of approvals
- Add labels to Pull Request based on matched file patterns
- Auto approve pull requests
- Automatically add reviewers to pull request based on the configuration file
- Auto-commit back any changes made by previous actions
- Add labels to Pull Request based on branch name patterns
- Add labels to Pull Request based on total size of the diff
- Automatically merge Pull Requests that are ready
- Verify pull requests contain a ticket reference
- Create a pull request for changes to your repository in the actions workspace
- Pull Request Lint
- ChatOps For Pull Requests
- 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 pull requests
- Enforce naming convention on pull request title
- Pull Request Stuck Notifier
- Deploy a Zola site to GitHub Pages
- Visualize your Dockerfile with a Container Tree
- 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.
- Deploy assets to GitHub pages - No building, just deploying.
- GitHub Actions for deploying to GitHub Pages with Static Site Generators
- GitHub Action for Hexo
- Deploy Google Analytics stats to GitHub Pages
Notifications and Messages
- Confucious Wisdom (Pull Request Failure Message)
- Send a Discord notification
- Send a Slack message
- Post a Slack message as a bot
- Update Twitter status
- Generate Tweet content to share pull request file(s) after merge
- Send an SMS from GitHub Actions using Nexmo
- Trigger emails with release notes with SendGrid
- Send email on failed GitHub Checks
- Report webpack stats to packtracker.io
- 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 Pushover.net
- Send a dynamic notification to any service using Apprise
- 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
- Deploy to Netlify
- Deploy a Probot App using Actions
- Deploy a playlist to Spotify
- Deploy a serverless app to AWS Lambda with Up
- Deploy serverless infrastructure with AWS SAM
- Deploy a Node.js function to AWS Lambda and invoke it using the Serverless framework
- Deploy VS Code extensions with vsce
- Deploy a Node.js App to Azure
- Deploy via rsync over ssh
- Deploy to any Cloud or Kubernetes Using Pulumi
- Deploy a Cloudflare worker
- Deploy your DNS configuration using DNS Control
- Using surge.sh, deploy your branch specific storybook as a pull request deployment
- Create Release Archive
- Publish WordPress Plugin
- Deploy a Theme to Shopify
- Trigger multiple GitLab CI Pipeline
- Trigger multiple Jenkins Jobs
- GitHub Deployment API
- GitHub Action for zem
- GitHub Action for Homebrew
- GitHub Action for Homebrew Tap
- Deploy Lambda code to an existing function
- Copy files and artifacts via SSH
- Executing remote ssh commands
- Deploy to Kubernetes with kubectl
- Update a Docker Hub repository description from README.md
- Purge Cloudflare cache after updating a website
- Sync/upload a directory to an AWS S3 bucket
- 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
- Publish Docker Images to the GitHub Package Registry (GPR)
- Get Kubeconfig File From Google Kubernetes Engine (GKE)
- 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
- An example of using Terraform to validate and apply GitHub administration
- 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
- Use a Jenkinsfile
- Configure a DNS Record on Cloudflare
- GitHub Action for Firebase
- GitHub Action for JFrog CLI
- 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
- Execute Gradle task
- JS Build Actions - Run Grunt or Gulp build tasks and commit file changes.
- Ember CLI Actions
- 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.
- Runs Lighthouse and posts results to PRs and Slack
- GitHub Actions for mdBook
Internet of Things (IOT)
Machine Learning Ops
- Submitting Argo Workflows (Cloud Agnostic)
- Submitting Argo Workflows to GKE
- Query Experiment Tracking Results From Weights & Biases
- Run Parameterized Jupyter Notebooks
- 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.
- Introducing GitHub Actions
- Deploying to Firebase Hosting with GitHub Actions
- Building GitHub Actions in Node.js
- GitHub Actions on Android project
- GitHub Actions for PHP Developers
- Continuous deployment of Next.js app with Up
- GitHub Actions CI for Swift/iOS Projects
- Working with GitHub Actions
- GitHub Actions for Rails Developers
- GitHub Actions Advent Calendar
Please don't hesitate to make a PR if you have more resources to share. Check out contributing.md for more information