GitHub Actions GitHub Actions

アイデアからリリースまでのワ
ークフローを自動化

GitHub Actionsを使用すると、ワールドクラスのCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。

GitHub Actionsを使ってみる
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

GitHubのすべてのイベントでワークフローを起動

プッシュ、Issue、リリースなどのGitHubプラットフォームのイベントをトリガーとしてワークフローを起動しましょう。コミュニティが開発・保守し、ユーザが熟知・愛用しているサービスについて、対応するアクションを組み合わせて設定できます。

コンテナアプリの構築、Webサービスの展開、レジストリへのパッケージの公開、またはオープンソースプロジェクトへの新しいユーザーのウェルカムメッセージを自動化するなど、さまざまな用途でActionsを利用できます。 GitHub PackageとActionsを連携させパッケージ管理を簡素化できます。バージョンのアップデート、グローバルCDNによる高速配布、既存の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

Linux、 macOS、 Windowsおよびコンテナに対応

すべての主要なOSに対応しているためプロジェクトを簡単にビルドおよびテストできます。 VM上またはコンテナ内で直接実行できます。

マトリックスビルド

複数のオペレーティングシステムとランタイムのバージョンを同時にテストするマトリックスワークフローで時間を節約できます。

あらゆる言語に対応

GitHub ActionsはNode.js, Python, Java, Ruby, PHP, Go, Rust, .NETなど、さまざまな言語に対応しています。自分が利用している言語でアプリのビルド、テストそしてデプロイが可能です。

        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.

      
PR checks

ライブログ

ワークフローの実行ログは色や絵文字付きでリアルタイムに確認することが出来ます。ログの行を1回クリックするだけで、その行をハイライトしてリンクをコピーすることができるので、簡単にCI/CDの失敗を共有することができます。

組み込みのシークレット管理機能

ソフトウェア開発の自動化をリポジトリ上のワークフローファイルにコード化することで、自動化プロセスの変更にGitフローを使うことができます。

マルチコンテナテスト

ワークフローファイルにdocker-composeを追加するだけで、ワークフローでWebサービスとそのDBをテストできます。

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: $
          steps:
          - uses: actions/checkout@v3
          - uses: actions/setup-node@v3
          with:
            node-version: 16
          - run: npm install-ci-test
          - uses:
          publish:
          needs: [test]
          steps:
          - uses: actions/checkout@v3
        

コミュニティが作るワークフロー

GitHub Actionsは、すべてのツールを連携して、開発ワークフローのすべてのステップを自動化します。任意のクラウドに簡単にデプロイしたり、Jiraでチケットを作成したり、npmにパッケージを公開することが可能です。

GitHub Actionsを試してみませんか? GitHubで利用可能な数百万のオープンソースライブラリを使用して、独自のアクションを作成しましょう。 JavaScriptで記述するか、または、コンテナでActionsを作成しましょう。どちらも全てのGitHub APIおよびその他のパブリックAPIと連携できます。

コミュニティのフィードバック

SciPy
「Actionsはエキサイティングな開発であり、CI / CDを超えた多くの可能性を引き出します。 Webサイトのデプロイから、カスタムステータスレポートのGitHub APIへの問い合わせ、通常のCIビルドまで、さまざまなタスクのワークフローを合理化できるようになります。」

Ralf Gommers

SciPy maintainer

Yarn
「オープンソースプロジェクトの場合、インフラストラクチャの摩擦が少ないほど、外部の貢献者との作業が容易になります。 GitHub ActionsをCIやイシューのトリアージのような一般的なタスクに使用すると、障壁をさらに下げることができるため、優れた製品の開発に集中できます。」

Maël Nison

Yarn maintainer

UBS
「GitHubアクションを使用すると、CI / CDワークフローをコードで簡潔に定義し、数千のリポジトリで標準化して、Pull Requestと連携して進化させることができます。このソリューションにより、開発者のエクスペリエンスが向上し、チームの生産性が向上すると同時に、ソフトウェア開発ライフサイクルの管理が簡素化および強化されます。」

Mike Dargan

Group Head of Technology

LaunchDarkly
「Code ReferencesとGitHub Actionsの統合により、開発者はコード内の機能フラグを簡単に見つけることができます。内部的には、アクションを使用することで、CIインフラストラクチャを最適化し、Windows、Linux、OSXでクライアントを並行してテストすることでビルドプロセスを合理化できると考えています。」

Edith Harbaugh

CEO of LaunchDarkly

シンプルな従量課金

パブリックリポジトリ

無料

love GitHubはオープンソースを支援します。

プライベートリポジトリ

含まれる利用時間

  • Free

    2,000分

    1か月あたり

  • Pro

    3,000分

    1か月あたり

  • Team

    1か月あたり

  • Enterprise

    50,000分

    1か月あたり

追加購入

  • Linux

    2 cores, 7GB

    $0.008

    1分あたり

  • Windows

    2 cores, 7GB

    $0.016

    1分あたり

  • macOS

    3 cores, 7GB

    $0.08

    1分あたり

  • セルフホスト

    Free

GitHub Actionsはレガシープランユーザーではご利用できません。

未来のワークフローの自動化を今すぐ実現しましょう。

GitHubアクションをぜひご利用ください。どのようなワークフローが実行できるかは、GitHub Marketplaceにあるコミュニティが作成したActionsを参考にしてください。

GitHub Actionsを使ってみる