LoginSignup
20
11

More than 3 years have passed since last update.

GitHub Actionsを使ってGitHub PagesにReactアプリを公開する

Posted at

背景・動機

先日、以下の記事で簡単なReactアプリを開発した話を投稿しましたが、masterへpushで簡単にデプロイしたいなと思いはじめました。
https://qiita.com/nouka/items/a4c25ce685294dc17ce3

  • スマホにインストールしたGitHubクライアントアプリで、通勤中に開発したいと思った。
  • GitHub Actionsの勉強のため。
  • Advent Calendarのネタのため。

事前準備

1. 秘密鍵、公開鍵を生成

以下のコマンドを実行し秘密鍵と公開鍵を生成します。

ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""

参考:https://qiita.com/peaceiris/items/d401f2e5724fdcb0759d

2. gh-pages.pub(公開鍵)をDeploy keysに登録

生成したgh-pages.pub(公開鍵)をリポジトリの[Settings]->[Deploy keys]->[Add deploy key]から登録します。

スクリーンショット 2019-12-19 23.48.12.png

3. gh-pages(秘密鍵)をSecretsに登録

gh-pages(秘密鍵)はリポジトリの[Settings]->[Secrets]->[Add a new secret]からACTIONS_DEPLOY_KEYという名前で登録します。

スクリーンショット 2019-12-19 23.49.43.png

ワークフローを設定

リポジトリの.github/workflowsディレクトリに任意の名前のymlファイルを生成します。
今回はbuild.ymlというファイルを作成します。内容は以下の通りです。

.github/workflows/build.ymlの内容

# ワークフローの名前
name: Release GitHub Page

# 起動のタイミング
# 今回はmasterブランチへのpush
on:
  push:
    branches:
      - master

# ジョブの定義
jobs:
  build:
    # 実行するインスタンス
    runs-on: ubuntu-latest

    # nodeのバージョン一覧
    strategy:
      matrix:
        node-version: ['12.x']

    # 各ステップの実行
    steps:

    # チェックアウト
    - uses: actions/checkout@v1

    # 使用するnodeのバージョンを指定
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}

    # パッケージのインストールとアプリのビルド
    - name: install and build
      run: |
        npm ci
        npm run build
      env:
        CI: true

    # gh-pagesを使って公開
    - name: deploy
      uses: peaceiris/actions-gh-pages@v2
      env:
        ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        PUBLISH_BRANCH: gh-pages
        PUBLISH_DIR: ./build

これでmasterブランチにpushすれば、ワークフローで定義した通りコンテナが起動し、アプリを公開してくれます。
GitHub Actionsを使えば、lintやユニットテストもGitHubだけで実行できそうなので、今度やってみたいと思います。

20
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
11