mirror of
https://github.com/sdras/awesome-actions.git
synced 2024-10-01 00:55:38 -04:00
38e69b5e3c
My GitHub wiki page is based on one that is already listed https://github.com/Decathlon/wiki-page-creator-action but the mine is different in that it allows for any type of file, not just Markdown, and allows for deletion of pages if the file is deleted, unlike the other repository in which if the files are deleted, then the wiki DOES NOT reflect that (as in the wiki's page is still there). Repo: https://github.com/Andrew-Chen-Wang/github-wiki-action Marketplace: https://github.com/marketplace/actions/github-wiki-action
37 KiB
37 KiB
Awesome Actions
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
- 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
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
- Manually trigger your GitHub Actions from a UI
- 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/Update/Delete your GitHub wiki pages based on any file
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
Utility
- Setup
ssh-agent
- Runssh-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 commited 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.
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
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
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 normalizedcomposer.json
- Run Go lint checks on PR event
- Node.js - Automatically run the
format
and/orlint
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
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
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 pull request reviewers based on assignees
- Open or update pull request on branch push (with branch selection)
- Automatically rebase a PR
- 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
- 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
- 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
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.
Notifications and Messages
- Send a Discord notification
- Post a Slack message as a bot
- Send an SMS from GitHub Actions using Nexmo
- 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
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
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
Kubernetes
- Deploy to any Cloud or Kubernetes Using Pulumi
- Deploy to Kubernetes with kubectl
- Get Kubeconfig File From Google Kubernetes Engine (GKE)
AWS
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).
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
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
Database
- Setup Cassandra Schema - Running scripts from the provided folder on top of Cassandra cluster.
Localization
- Find and automatically fix typos and grammar issues in your code
- Translation - Translate text from any language to any language.
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
- Setup Auto-scaled self-hosted GitHub Actions Runners on AWS Spot-instances
Please don't hesitate to make a PR if you have more resources to share. Check out contributing.md for more information