Skip to content
The Super Early Bird sale is extended! Get tickets to GitHub Universe 35% off by July 15.

GitHub ActionsGitHub Actions

Automate your workflow
fromideatoproduction

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

> [email protected] 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
buildSuccessfully in 59s — build
testSuccessfully in 59s — build
publishSuccessfully 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 alsoopen this in GitHub Desktopor viewcommand line instructions.

Live logs

Built in secret store

Multi-container testing

ci.yml
1
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

Philips

GitHub Actions empowers teams to define highly advanced pipelines without losing the focus on simplicity. It brings the power of the pipeline as code, matrix builds, and predefined environment together in one place. GitHub Actions makes it possible to build and share workflows via reusable steps and delivers what’s required to build the next-generation CI/CD pipeline.”

Jeroen Knoops Senior Software Engineer
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
Autodesk

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

Patrick Lühne Senior Software Engineer

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 viewdocs 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