GitHub ActionsにCI/CD機能を搭載〜パブリックリポジトリでは無料で利用可能

Image of Nat Friedman

GitHub Actionsを使うことで、開発ワークフローを自動化できます。いかなるワークフローも自動化できますし、GitHubのどのようなイベントであってもワークフローを起動することができます。そして、その処理はGitHub上で実行され、詳細に進捗を確認することができます。GitHub Actionsでは、ワークフローや処理内容はリポジトリ内のコードとして記述されるため、作成したワークフローを共有したり、再利用するだけでなく、開発プロセスを含めてforkすることも可能になります。

昨年のGitHub Actionsのリリース以来、多くの反響があり、数千ものすばらしいワークフローが作成されました。その一方で、ほぼ全員から、CI/CDで使いたいという明確なフィードバックも受け取りました。その結果、GitHub ActionsにCI/CD機能を実装するという結論にいたりました。

11月13日にGitHub Actionsの正式バージョンがリリースされる予定ですが、その前に、ぜひベータ版をぜひお試しください。そして、皆さんのご意見・ご感想をお聞かせください。

ベータ版のお申込み

あらゆるOS、言語、クラウドに対応した高速なCI/CD

GitHub Actionsを使うことで、Linux、macOS、Windowsなどの任意のプラットフォーム上での開発、テストおよびデプロイのプロセスを簡単に自動化できるようになります。GitHub Actionsで作成したワークフローは、コンテナまたは仮想マシン内で実行することができます。さらにGitHub Actionsは、Node.js、Python、Java、PHP、Ruby、C/C++、.NET、Android、iOSなど、多くの言語とフレームワークに対応しています。複数のコンテナを使ってテストを実行したい場合は、ワークフローファイルに ‘docker-compose‘ を記載するだけで、Webサービスとそのデータベースの両方を起動してテストを実行することができます。

マトリックスビルド

マトリックスビルドを使用すると、簡単に複数バージョンのプロジェクトを並列してテストできます。Actions YAMLファイルに数行追加するだけで、GitHubが残りの処理を行います。

jobs:
  test:
    name: Test on node ${{ matrix.node_version }} and ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node_version: [8, 10, 12]
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
    - uses: actions/checkout@v1

    - name: Use Node.js ${{ matrix.node_version }}
      uses: actions/setup-node@v1
      with:
        version: ${{ matrix.node_version }}
    
    - name: npm install, build and test
      run: |
        npm install
        npm run build --if-present
        npm test

ライブログでリアルタイムのフィードバックを表示

ライブログはビルドの実行時にその進捗についての詳細なフィードバックを提供する機能です。GitHub Actionsのコンソールにログをストリーミングして、リアルタイムでステータスを表示します。ログは、絵文字などを使用して、読みやすいようにフォーマットされています。🎉

また、各ログファイルの任意の行は簡潔なパーマリンクによって参照することができるため、ビルドの不具合やテスト結果についてチームメンバーと容易に議論できます。

コードのようにアクションとワークフローを記述して再利用可能

GitHub Actionsはコードです。一般のソースコードと同様に編集、再利用、共有、フォークが可能です。リポジトリをフォークすると、ソースコードと同時にActionsもフォークすることになります。これにより、元のプロジェクトと同じActionsを再利用してプロジェクトのテストやビルドをシームレスに実行できます。この方法で、コミュニティから学習することをお勧めします。お気に入りのプロジェクトの全ステップを複製し、独自の要件に合うようにフォークすることで、知識を得ることができます。

GitHub Actionsでは、シンプルでクリーンな新しい構文を使用し、YAML形式でワークフローを作成します。作成したアクションとワークフローは、リポジトリ参照という記法によって他のワークフローから再利用することができるため、複数のワークフローを組み合わせて強力なワークフローを作り上げることが容易になります。これらは簡単に統合できるので、多機能なワークフローを作成することができます。JavaScriptで記述したり、コンテナ上で動作するActionsを作成しましょう。どちらも全てのGitHub APIおよびその他のパブリックAPIと連携できます。

また、LaunchDarkly、mabl、Code Climate、GitKrakenなどのパートナーが提供するGitHub Actionsの豊富なエコシステムを再利用したり、CircleCIのような他のCIプロバイダーのビルドをトリガーしたりすることもできます。

独自のイベントも含め、あらゆるイベントでワークフローを自動化

GitHub Actionsではアプリケーションを開発、テスト、デプロイできるだけでなく、イシューのトリアージや管理、リリースの自動化、ユーザーとのコラボレーションなど、一般的なワークフローのタスクも自動化できます。GitHub Actionsのワークフローは、GitHubにおける開発ライフサイクル上のあらゆるイベントをトリガーとして実行できます。GitHub Appに独自のカスタムイベントを追加できるようになったため、開発者とパートナーはプロジェクトのニーズに合わせてGitHubをカスタマイズできるようになりました。

組み込みのパッケージ・コンテナレジストリとの連携

パッケージやコンテナの公開は、オープンソースライブラリや大規模Webサービスのデプロイに利用される、CI/CDワークフローの中核です。GitHub Actionsを使用することで、GitHub Package Registry または他のレジストリでパッケージを簡単に公開したり、利用したりすることができます。開発者がGitHub Actionsへのアクセスを許可されると、リリース前にGitHub Package Registryにもアクセスできるようになるため、開発からデプロイまでのイシューやコード全般におけるワークフロー全体の自動化が可能になります。

サンプルワークフローを使って簡単に開始

GitHubは、開発者がGitHub Actions上でCI/CDをできる限り簡単に開始できるようにしたいと考えています。リポジトリのActionsを有効にすると、GitHubはプロジェクトに適したActionsワークフローを提案します。

シンプルな従量課金制

GitHubは、あらゆるオープンソースプロジェクトが生産的で、ベストプラクティスを利用すべきだと考えています。そのため、パブリックリポジトリを使用する4,000万人のGitHubユーザーは無料でGitHub Actionsを利用できます。プライベートリポジトリでGitHub Actionsを利用する場合は、シンプルな従量課金制で利用できるようになります。自社のハードウェアまたは別のクラウド上で実行する場合、GitHubのセルフホスト型ランナーを無料で使用できます。詳細については、申し込みページの価格をご覧ください。なお、GitHub Actionsベータ版は誰でも無料で使用できます。

今後のGitHub Actionsについて

今回のアップデートでは、GitHub Actionsに多くの機能が実装されました。今後もさらに多くの機能の実装を予定しているので、その一部を紹介します。

  • セルフホスト型ランナー:ご自身のデータセンター、もしくはクラウド上にインスタンスを既にお持ちの場合は、GitHub Actionsを使用して、簡単に、そして迅速にワークフローを自動化できます。GitHub ActionsランナーをVMにインストールして、Actionsに登録します。セルフホスト型ランナー上で実行するワークロードは無料で利用できるようになる予定です。
  • GitHub Enterprise Serverへの対応:GitHub ActionsのGitHub Enterprise Serverへの対応は来年を予定しています。GitHubがワークフローを管理しつつ、コードやパッケージはデータセンター内のオンプレミスに保存するハイブリッド型の選択肢も提供予定です。

ベータ版のお申し込み

新機能を搭載したGitHub Actions ベータ版をリリースできたことを嬉しく思います。ベータ版の詳細とお申し込みは、こちらをご覧ください。11月13日にGitHub Universeで正式リリースするまでは、こちらのベータ版は無料で利用できます。