Skip to content
Get your boss on board for GitHub Universe! Tickets are 35% off for a limited time. Use our quick email template today.

 GitHub Actions 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 Actions

Questions? Contact Sales

on: milestone
on: issue_comment
on: check_run
on: deployment
on: label
on: project_card
on: pull_request_comment
on: release
on: repository_vulnerability_alert
on: milestone
on: public
on: repository_dispatch
on: issue_comment
on: fork
on: deployment_status
on: page_build
on: watch
on: pull_request
on: delete
on: issue_comment
on: issues
on: check_suite
on: scheduled
on: pull_request_review
on: project_column
on: status
on: project
on: pull_request
on: delete
on: issue_comment
on: push
on: page_build
on: watch

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.

on: milestone
on: issue_comment
on: check_run
on: deployment
on: label
on: project_card
on: pull_request_comment
on: release
on: repository_vulnerability_alert
on: milestone
on: public
on: repository_dispatch
on: issue_comment
on: fork
on: deployment_status
on: page_build
on: watch
on: pull_request
on: delete
on: issue_comment
on: issues
on: check_suite
on: scheduled
on: pull_request_review
on: project_column
on: status
on: project
on: pull_request
on: delete
on: issue_comment
on: push
on: page_build
on: watch
 Illustration depicting the execution of 'npm test' as a push action on three different platforms: Linux, MacOS, and Windows.

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.
All checks have passed
4 successful checks
Hide all checks
build Successfully in 59s — build
test Successfully in 59s — build
publish Successfully in 59s — build
This branch has no conflicts with the base branch
Merging can be performed automatically.
Merge when ready
Select merge queue method
You can also open this in GitHub Desktop or view command line instructions .

Live logs

Built in secret store

Multi-container testing

ci.yml
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
twenty-one
twenty-two
twenty-three
twenty-four
twenty-five
twenty-six
twenty-seven
twenty-eight
twenty-nine
thirty
 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

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

 SAP

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.”

Ingo Sauerzapf Software Development Manager, CI/CD
 CircleCI

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.”

Jim Rose CEO of CircleCI
 Globant

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.”

Ezequiel Pellettieri Unix and Database Services Tech Lead
 SonarSource

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!”

Olivier Gaudin SonarSource CEO & Co-Founder

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 docs

Every 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 pricing

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

For a complete list of runner pricing and features please view docs about billing for GitHub Actions .

The future of workflow automation is now

Get started with GitHub Actions today and explore community created actions in the GitHub Marketplace.

Explore GitHub Actions
 Documentation

Documentation

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