LoginSignup
19
7

More than 1 year has passed since last update.

GitHub Actionsを使ってSwaggerをGitHub Pagesにホスティングする

Last updated at Posted at 2022-01-30

OpenAPI形式で書かれたAPI仕様書は、SwaggerUIでGitHub Pagesにホスティングできます。
今回は、そのGitHub PagesへのホスティングをGitHub Actionsを使って簡単にデプロイする方法をまとめます。

ディレクトリ構成

.
├── .github
│   └── workflows
│       └── deploy-to-github-pages.yml
└── openapi.yml

Workflow

.github/workflows/deploy-to-github-pages.yml
name: Deploy to GitHub Pages

on:
  pull_request:
    branches:
      - main
    types:
      - opened
      - synchronize
      - closed
    paths:
      - openapi.yml
      - .github/workflows/deploy-to-github-pages.yml

jobs:
  deploy-to-github-pages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Install swagger-cli
        run: |
          npm install -g swagger-cli

      - name: Validate Swagger Files
        run: |
          swagger-cli validate -d openapi.yaml --type yaml

      - name: Generate Swagger UI
        if: github.event.pull_request.merged == true
        uses: Legion2/swagger-ui-action@v1
        with:
          output: swagger-ui
          spec-file: openapi.yaml

      - name: Deploy to GitHub Pages
        if: github.event.pull_request.merged == true
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: swagger-ui

Legion2/swagger-ui-action

OpenAPIファイルからSwaggerUIを生成する処理。

peaceiris/actions-gh-pages

生成したSwaggerUIをGitHub Pagesにホスティングする処理。

Options Description
github_token GITHUB_TOKENはGitHub Actions runnerで自動生成されるトークンであり、 Personal Access Tokenではない。${{ secrets.GITHUB_TOKEN }}を設定しておけば問題なし。
publish_dir オプション名が紛らわしいが、sourceディレクトリを指定する。
destination_dir 今回はリポジトリ直下に配置しているが、destinationディレクトリを指定することもできる。
publish_branch publishブランチの指定。デフォルトではgh-pagesブランチにpublishする。
external_repository 他のリポジトリにデプロイすることもできる。その場合deploy_key もしくはpersonal_tokenで権限を設定する必要がある。

実行条件

onで設定しているWorkflowの実行条件:
以下2つとも条件が合致したとき。

  • mainブランチへのプルリクエストを作成・更新・マージしたとき
  • openapi.ymldeploy-to-github-pages.ymlに変更があるとき

ifで設定しているStepの実行条件:

  • Generate Swagger UIDeploy to GitHub Pagesを実行するのはマージした時のみ

GitHub Pagesの設定

今回の場合、ブランチはgh-pages、ディレクトリは/(root)で設定する。
設定の詳細方法は下記参照。

GitHub Pagesの確認

GitHub Pagesの設定完了後、生成されたURLからホスティングされたSwaggerUIを確認することができる。
設定反映までに最大10分かかることがある模様。詳細は下記参照。

参考文献

19
7
0

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