A curated list of awesome actions to use on GitHub by Sarah Drasner
GitHub Actions is a feature used to automate any workflow and automate the workflow from idea to production. Actions are triggered by GitHub platform events directly in a repository and run on-demand workflows on Linux, Windows, or macOS virtual machines, or inside a container.
The principal functionalities of GitHub Actions, as detailed by the curated list, cover a vast spectrum of software development, testing, and deployment:
Workflow Tool Actions: Includes setting up the repository (actions/checkout), and handling build outputs by uploading and downloading artifacts (actions/upload-artifact, actions/download-artifact).
Caching: Actions can cache dependencies and build outputs.
GitHub Automation: Automating management for issues, pull requests, and releases, such as creating releases, automatically labeling pull requests based on criteria, deleting package versions, and marking stale issues.
Utility: Providing general utility functions like running ssh-agent, generating release notes, enforcing policies on repositories, and managing GitHub labels as code.
Configuration Setup: Quickly setting up workflows with specific versions of major programming languages, including Node.js, Python, Go, Java, Ruby, and Elixir, and setting up environments, such as installing Conda.
Testing and Static Analysis: Running static code analyzers (e.g., PHPStan, GraphQL Inspector), and performing various tests using tools like Puppeteer, Cypress, Unity, and TestCafe.
Linting: Supporting extensive linting functionality for numerous languages and files (e.g., ESLint, Hadolint for Dockerfiles, TSLint, autopep8 for Python, golangci-lint, and linters for composer.json and .env files).
Code Coverage and Monitoring: Scanning code with SonarCloud or sending coverage results to Codecov/CodeClimate. Monitoring webpage health with Google Chrome's Lighthouse tests and continuously benchmarking.
Semantic Versioning: Functionalities exist to output the next version, cut release branches, and increment semantic versions based on the release type.
Vulnerability and Secret Scanning: Includes vulnerability scanners for Docker images and security linters for Python code.
Security Management: Defining and syncing secrets using tools like AWS Secrets Manager, SecretHub, and Secrets Sync Action.
Deployment to External Services: Supporting deployment to a wide range of external services and platforms, including Netlify, Spotify, PyPI, Docker registries, Azure Storage, and AWS CodeDeploy.
Cloud and Container Services: Specific integrations for Docker (building and pushing images to various registries like ECR and GitHub Package Registry) and Kubernetes (using kubectl, Pulumi, or Kustomize).
Static Site Deployment: Building and publishing static content sites built with various generators (Zola, Hugo, Jekyll, Hexo) to GitHub Pages.
Notifications and Messaging: Sending messages and notifications to various channels like Discord, Slack, Telegram, SMS (via Nexmo or Clockworksms), and creating Outlook Calendar Events.
Machine Learning Ops (MLOps): Functionalities supporting MLOps workflows, such as submitting Argo Workflows, running parameterized Jupyter Notebooks, and integrating with Azure Machine Learning.
Frontend Tools: Specific actions for Gatsby, Hugo extended, and running WebPageTest audits.
C/C++ Build: Supporting multi-platform builds using CMake and Ninja, and installing dependencies with vcpkg.
Database and Networking: Setting up Cassandra Schema and connecting the runner to a ZeroTier network.