GitHub Actions
Automate your workflow
from idea to production
GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.
Get started with ActionsQuestions? Contact Sales
Run a workflow
on any GitHub event
Kick off workflows with GitHub events like push, issue creation, or a new release. Combine and configure actions for the services you use, built and maintained by the community.
Whether you want to build a container, deploy a web service, or automate welcoming new users to your open source projects—there's an action for that. Pair GitHub Packages with Actions to simplify package management, including version updates, fast distribution with our global CDN, and dependency resolution, using your existing GITHUB_TOKEN.
Linux, macOS, Windows, ARM, and containers
Matrix builds
Any language
error-pages GET / ✓ should respond with page list Accept: text/html GET /403 ✓ should respond with 403 GET /404 ✓ should respond with 404 GET /500 ✓ should respond with 500 Accept: application/json GET /403 ✓ should respond with 403 GET /404 ✓ should respond with 404 GET /500 ✓ should respond with 500 Accept: text/plain GET /403 ✓ should respond with 403 GET /404 ✓ should respond with 404 GET /500 ✓ should respond with 500 error GET / ✓ should respond with 500 GET /next ✓ should respond with 500 GET /missing ✓ should respond with 404 markdown GET / ✓ should respond with html GET /fail ✓ should respond with an error multi-router GET / ✓ should respond with root handler GET /api/v1/ ✓ should respond with APIv1 root handler GET /api/v1/users ✓ should respond with users from APIv1 GET /api/v2/ ✓ should respond with APIv2 root handler GET /api/v2/users ✓ should respond with users from APIv2 mvc GET / ✓ should redirect to /users GET /pet/0 ✓ should get pet GET /pet/0/edit ✓ should get pet edit page PUT /pet/2 ✓ should update the pet GET /users ✓ should display a list of users (70ms) GET /user/:id when present ✓ should display the user ✓ should display the users pets when not present ✓ should 404 GET /user/:id/edit ✓ should display the edit form PUT /user/:id ✓ should 500 on error ✓ should update the user POST /user/:id/pet ✓ should create a pet for user (19ms) params GET / ✓ should respond with instructions GET /user/0 ✓ should respond with a user GET /user/9 ✓ should fail to find user GET /users/0-2 ✓ should respond with three users GET /users/foo-bar ✓ should fail integer parsing resource GET / ✓ should respond with instructions GET /users ✓ should respond with all users GET /users/1 ✓ should respond with user 1 GET /users/9 ✓ should respond with error GET /users/1..3 ✓ should respond with users 1 through 3 DELETE /users/1 ✓ should delete user 1 DELETE /users/9 ✓ should fail GET /users/1..3.json ✓ should respond with users 2 and 3 as json route-map GET /users ✓ should respond with users DELETE /users ✓ should delete users GET /users/:id ✓ should get a user GET /users/:id/pets ✓ should get a users pets GET /users/:id/pets/:pid ✓ should get a users pet route-separation GET / ✓ should respond with index GET /users ✓ should list users GET /user/:id ✓ should get a user ✓ should 404 on missing user GET /user/:id/view ✓ should get a user ✓ should 404 on missing user (13ms) GET /user/:id/edit ✓ should get a user to edit PUT /user/:id/edit ✓ should edit a user POST /user/:id/edit?_method=PUT ✓ should edit a user GET /posts ✓ should get a list of posts vhost example.com GET / ✓ should say hello GET /foo ✓ should say foo foo.example.com GET / ✓ should redirect to /foo bar.example.com GET / ✓ should redirect to /bar web-service GET /api/users without an api key ✓ should respond with 400 bad request with an invalid api key ✓ should respond with 401 unauthorized with a valid api key ✓ should respond users json GET /api/repos without an api key ✓ should respond with 400 bad request with an invalid api key ✓ should respond with 401 unauthorized with a valid api key ✓ should respond repos json GET /api/user/:name/repos without an api key ✓ should respond with 400 bad request with an invalid api key ✓ should respond with 401 unauthorized with a valid api key ✓ should respond user repos json ✓ should 404 with unknown user when requesting an invalid route ✓ should respond with 404 json 1123 passing (4s) ============================================================================= Writing coverage object [/home/runner/build/expressjs/express/coverage/coverage.json] Writing coverage reports at [/home/runner/build/expressjs/express/coverage] ============================================================================= =============================== Coverage summary =============================== Statements : 98.81% ( 1916/1939 ), 38 ignored Branches : 94.58% ( 751/794 ), 22 ignored Functions : 100% ( 267/267 ) Lines : 100% ( 1872/1872 ) ================================================================================ The command "npm run test-ci" exited with 0. $ npm run lint > express@4.17.1 lint /home/runner/build/expressjs/express > eslint . The command "npm run lint" exited with 0. store build cache $ # Upload coverage to coveralls Done. Your build exited with 0.
Live logs
Built in secret store
Multi-container testing
docker-compose
to your workflow file.
-
Find a LaunchDarkly feature flag
Search your code for references to LaunchDarkly feature flags
launchdarkly/find-code-references -
Deploy to Azure
Automate your workflows using GitHub Actions for Azure
Azure/actions -
Amazon ECR Login
Logs in the local Docker client to Amazon ECR
aws-actions/amazon-ecr-login -
Deploy to Kubernetes
Deploy your app on any Kubernetes cluster
Azure/k8s-actions -
Code Climate Velocity
In-depth code metrics to streamline your engineering processes
codeclimate/velocity-deploy-action -
Coveralls
Track your test coverage metrics
coverallsapp/github-action -
Glo Boards
Integrate your Glo boards into your code workflow
Axosoft/glo-actions -
Mabl
Integrate cross-browser testing into your GitHub Actions workflow
mablhq/github-mabl-actions -
Find a LaunchDarkly feature flag
Search your code for references to LaunchDarkly feature flags
launchdarkly/find-code-references -
Deploy to Azure
Automate your workflows using GitHub Actions for Azure
Azure/actions -
Amazon ECR Login
Logs in the local Docker client to Amazon ECR
aws-actions/amazon-ecr-login -
Deploy to Kubernetes
Deploy your app on any Kubernetes cluster
Azure/k8s-actions -
Code Climate Velocity
In-depth code metrics to streamline your engineering processes
codeclimate/velocity-deploy-action -
Coveralls
Track your test coverage metrics
coverallsapp/github-action -
Glo Boards
Integrate your Glo boards into your code workflow
Axosoft/glo-actions -
Mabl
Integrate cross-browser testing into your GitHub Actions workflow
mablhq/github-mabl-actions
-
Mark stale issues and pull requests
Automatically label and close stale issues and pull requests
actions/stale -
Mabl
Integrate cross-browser testing into your GitHub Actions workflow
mablhq/github-mabl-actions -
Label a pull request
Label pull requests based on changed files
actions/labeler -
Google Cloud Platform
A collection of GitHub Actions for Google Cloud Platform
GoogleCloudPlatform/github-actions -
Glo Boards
Integrate your Glo boards into your code workflow
Axosoft/glo-actions -
Code Cov
Improve your code review workflow and quality
codecov/codecov-action -
Coveralls
Track your test coverage metrics
coverallsapp/github-action -
Mark stale issues and pull requests
Automatically label and close stale issues and pull requests
actions/stale -
Mabl
Integrate cross-browser testing into your GitHub Actions workflow
mablhq/github-mabl-actions -
Label a pull request
Label pull requests based on changed files
actions/labeler -
Google Cloud Platform
A collection of GitHub Actions for Google Cloud Platform
GoogleCloudPlatform/github-actions -
Glo Boards
Integrate your Glo boards into your code workflow
Axosoft/glo-actions -
Code Cov
Improve your code review workflow and quality
codecov/codecov-action -
Coveralls
Track your test coverage metrics
coverallsapp/github-action
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
on: push jobs: test: strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: npm install-ci-test - uses: publish: needs: [test] steps: - uses: actions/checkout@v4
Community-powered workflows
GitHub Actions connects all of your tools to automate every step of your development workflow. Easily deploy to any cloud, create tickets in Jira, or publish a package to npm.
Want to venture off the beaten path? Use the millions of open source libraries available on GitHub to create your own actions. Write them in JavaScript or create a container action—both can interact with the full GitHub API and any other public API.
What our community is saying
“For open source projects, the lower the infrastructure friction we have, the easier it becomes to work with external contributors. Using GitHub Actions for CI and common tasks like triaging issues allows us to lower the barriers even more, so we can focus on writing a good product.”
“We love the repo-native GitHub Actions CI/CD to fully self-contain end-to-end systems, applications, and now their deployment from a single repository! Our tokendito tool for generating credentials fits perfectly into Actions to securely authenticate to our cloud. It enables us to automate and standardize our software development lifecycle and security governance across all of our organizations.”
“Compared to other offerings, GitHub always has a head start and introduces bleeding edge features first. GitHub Actions, for example, is currently unparalleled by other vendors.”
“Our mission is to empower all development teams with Code Quality and Security tools. For SonarCloud that means detecting bugs and security vulnerabilities, all while contributing to simple yet powerful pipelines, where multiple tools can play together as a team. GitHub Actions allows just that!”
Simple, pay-as-you-go pricing
GitHub Actions is free
for public repositories
We take pride in our Open Source legacy, and are happy to provide free CI/CD for public repositories. Check out the doc to see which runners are included.
View docsEvery GitHub plan
includes free usage
Check out plan details to see how many minutes are included and the pricing table below to see which runners you can use your free minutes on.
View pricingLinux
-
2-vCPUFree plan minutes apply$0.008 USD
per minute
-
4-vCPUFree for public repos$0.016 USD
per minute
-
8-vCPU
$0.032 USD
per minute
-
16-vCPU
$0.064 USD
per minute
-
32-vCPU
$0.128 USD
per minute
-
64-vCPU
$0.256 USD
per minute
Windows
-
2-vCPUFree plan minutes apply$0.016 USD
per minute
-
4-vCPUFree for public reposN/A
-
8-vCPU
$0.064 USD
per minute
-
16-vCPU
$0.128 USD
per minute
-
32-vCPU
$0.256 USD
per minute
-
64-vCPU
$0.512 USD
per minute
macOS
-
3-vCPUFree plan minutes applyFree for public repos$0.08 USD
per minute
-
12-vCPU
$0.12 USD
per minute
-
6-vCPU (M1)
$0.16 USD
per minute
The future of workflow automation is now
Get started with GitHub Actions today and explore community created actions in the GitHub Marketplace.
Explore GitHub ActionsDocumentation
Read the workflow language reference and how to’s for many popular languages.
Learn how to create an action and share it with everyone on GitHub.
View docs