7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub ActionsでPullRequestをトリガーに、SQLFluffでSQLを整形してみる

Last updated at Posted at 2022-05-14

この記事はなに?

PullRequestのオープン時にSQLを整形することで、可読性を上げレビューをしやすくしたり、SQLの書き方に対する負荷を軽減できると思い、GitHub ActionsでPullRequestのオープンをトリガーに、SQLのリントツールであるSQLFluffを使って整形する処理を実装してみました。

※本記事では、GitHub Actionsの概念や仕組みの説明は省略させていただきます。

今回実装したファイル

sqlfluff.yml
# 画面に表示されるワークフローの名前
name: SQLFluff

# .sql ファイルの変更を含む Pull Request の Opened もしくは Reopened をトリガーとする
on:
  pull_request: 
    types: [opened, reopened] 
    paths:
      - '**.sql'

# .sql ファイルを整形(変更)する権限を付与
permissions: write-all

jobs:
  format-sql:
    # ubuntu の最新版の環境で実行する
    runs-on: ubuntu-latest 
    steps:
      # 指定したバージョンの python をインストール
      - uses: 'actions/setup-python@v2' 
        with:
            python-version: '3.8'
      # SQLFluff をインストール
      - name: install SQLFluff
        run: 'pip install sqlfluff==0.13.1'
      # Github のホストランナーでは TTY が使えないため faketty をインストール
      - name: setup faketty
        uses: Yuri6037/Action-FakeTTY@v1.1
      # Pull Request のソースブランチにチェックアウト
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
          ref: ${{ github.head_ref }}
      # 変更が発生した .sql を対象にループ処理で SQLFluff を実行
      - name: format
        run: |
          for file in $(git diff origin/${GITHUB_BASE_REF}..origin/${GITHUB_HEAD_REF} --name-only --diff-filter=d -- '*.sql') 
          do
            faketty sqlfluff fix $file --rules L001,L002,L003,L004,L005,L006,L010,L011,L012,L017,L018,L019,L022,L023 --dialect bigquery -f
          done
      # 変更内容をコミット
      - name: commit
        uses: stefanzweifel/git-auto-commit-action@v3.0.0
        with:
          commit_message: run sqlfluff
7
3
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?