GitHub Actions
Automate your workflow
from idea to production
Run a workflow
on any GitHub event
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
-
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
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 : twenty - run : npm install-ci-test - uses : publish : needs : [test] steps : - uses : actions/ checkout@v4
Community-powered workflows
What our community is saying
“ With GitHub Actions, we get an excellent SaaS-based CI/CD solution that integrates seamlessly into GitHub and will soon allow us to run selected workloads on-premise through self-hosted runners across operating systems.”
“ CircleCI has been building a CI/CD platform since 2011, and GitHub has been a great partner. GitHub Actions is further validation that CI/CD is critical for the success of every software team. We believe that developers thrive in open, connected ecosystems, and we look forward to working with GitHub to lead the evolution of CI/CD.”
“ The ability to automate our workflows, as well as simplify and manage our issues, code, packages, CI, and deployment solutions, all in one place is powerful. We're excited about publishing CI/CD workflows and to discover, reuse and contribute to the Actions ecosystem within Globant and the GitHub community.”
“ 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
Every GitHub plan
includes free usage
Linux
-
2-vCPU Free plan minutes apply $0.008 USD per minute -
4-vCPU Free 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-vCPU Free plan minutes apply $0.016 USD per minute -
4-vCPU Free for public repos N/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-vCPU Free plan minutes apply Free 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
Documentation