dbtのリポジトリに、コードスタイル用のpre-commitを設定する

次のページに、dbt BestPracticeとしてコードスタイルの記載があり、
pre-commit hooksで自動化しようとかも書かれているのですが、
設定例が見当たらなかったので書いてみました。

How we style our dbt projects | dbt
https://docs.getdbt.com/best-practices/how-we-style/0-how-we-style-our-dbt-projects

BestPracticeのコードスタイルでは、以下のようにツールへの …

pre-commitでdbt-coreのyamlファイルのスキーマをチェックする

dbt-coreを使って開発をしているといろいろとyamlファイルを作ることになるので、
これらのスキーマ検証を自動的に行えると便利です。

dbt-core | GitHub
https://github.com/dbt-labs/dbt-core

次のリポジトリで、dbtのjsonschemaが公開されているので、
このエントリでは、
pre-commitのcheck-jsonschemaフックで検証する手順を記載したいと思います。

dbt-jsonschema | GitHub …

GitのcommitコメントをConventional Commitsに従わせるGitHubActionsとpre-commitの設定

Git等のコミットメッセージの書き方のルールに、
「Conventional Commits」という仕様があります。

Conventional Commits
https://www.conventionalcommits.org/ja/v1.0.0/

本エントリでは、
このルールに従っているかをチェックする仕組みを、
GitHubActionsとpre-commitで設定する手順を示します。

GitHubActionsでの設定

次のActionを使うと、
GitHubActions …

pre-commitをGitHub Actionsで動かす時に、差分のみに適用する

以下のActionを使って、GitHubActionsでpre-commitを動かす場合、
既定では全ファイルに対して適用されます。

pre-commit/action | GitHub
https://github.com/pre-commit/action

このエントリでは、
該当のPullRequestで変更したファイルのみに適用したい場合の設定方法を示します。

# ユースケースとしては、
# リンター類を導入して無かったリポジトリに対して、
# 新規・変更部分から段階的に適用していきたい場合など。

AllureのレポートをMarkdownに変換し、GitHubActionsのJobSummariesで閲覧する

CucumberやBehave等のテスト結果はAllureを使うと、
エビデンスの保存もでき、レポートも綺麗に確認ができます。

ただHTML形式のレポートではHostingする環境が必要が必要になります。
GitHubを使っている場合、Markdown形式であれば、
PullRequestのコメント・ActionsのJob Summaries等でお手軽に表示できるので、
このエントリでは、Markdown形式に変換する事を考えてみます。

結論からになりますが、
次に示すファイル構成でリポジトリを作っ …

BehaveからSeleniumWebDriverを使ってスクリーンショットを撮り、Allureのレポートに添付する流れ

このエントリでは、
BehaveからSeleniumWebDriverを使って、
ブラウザのスクリーンショットを撮り、Allureのレポートに添付する流れを記載します。

BehaveからSeleniumWebDriverを使うならbehave-webdriverと言うライブラリがありますが、
対応しているSeleniumがやや古いのと、日本語でシナリオ書けないので、
このエントリでは、ライブラリを使用せずに対応することにします。

behave-webdriver …

Behaveでの非同期処理のやり方

このエントリでは、Behaveの非同期処理を試したメモを残します。

Behaveの非同期処理については、以下で紹介されています。

Testing asyncio Frameworks | Noteworthy in Version 1.2.6 | behave https://behave.readthedocs.io/en/stable/new_and_noteworthy_v1.2.6.html#testing-asyncio-frameworks

非同期処理には、以下の2種類があります。 …

Behaveでテスト中のステップを把握する

このエントリでは、
Behaveで、現在テスト中のステップを把握する方法を記載します。

シナリオ下のステップ一覧表示

シナリオ下のステップは、次のようなコードで一覧表示することができます。

# -- FILE: sample.feature
Feature: sample feature
    Scenario: sample scenario
        Given sample step
        When sample step
        Then sample step
# -- …

Allure Behaveで検査結果にMarkdown文書を添付する

このエントリでは、
Allure Behaveで検査結果にMarkdown文書を添付する方法を記載します。

Allureのレポートには、次のページで示されているように、
Screenshots, Videos, Text(html/plain), Tables, URI lists, Documents(xml/json/yaml)
などの形式のデータを添付できます。

Attachments | Allure Report
https://allurereport.org/docs/attachments/ …

Behaveで(allure-resultの結果を見て)未実施・失敗したシナリオのみを実行する

Behaveでテストを繰り返し実施していると、
失敗したシナリオだけを再実行したい時があります。

そのような場合、
次のリンク先にあるように、テスト結果のフォーマットを「rerun」にすると、
失敗したシナリオのみ再実行することができます。

features/formatter.rerun.feature | behave/behave | GitHub https://github.com/behave/behave/blob/main/features/formatter.rerun.feature

こ …

Allure Behaveでログ出力を検査結果に添付する

Allure Behaveでテストをする際に、
標準出力・標準エラー出力を検査結果に添付する方法は、
次のエントリでまとめました。

Allure Behaveで標準出力・標準エラー出力を検査結果に添付する
https://takemikami.com/2024/0605-allure-behave-stdout.html

このエントリでは、同様にしてログも添付できると便利だと思うので、
その手順をまとめておきます。

テストコードの作成

以下のように、ログを出力するテストコードを用意します。 …

MLflowをnginxのreverse-proxyからforwardして動かす時にsubpathを用いる設定手順

このエントリでは、
nginxのreverse-proxyの後ろで、MLflowを動かすときの設定メモを残しておきます。

MLflowのセットアップは、以下の手順で行った想定で記載します。

UbuntuLinuxにMLflowをセットアップする手順
https://takemikami.com/2024/0319-ubuntulinuxmlflow.html

試した環境:

  • Ubuntu Linux 22.04.3
  • nginx 1.18.0
  • MLflow 2.11.1

MLflowでsubpathを有効に …

Forgejoをnginxのreverse-proxyからforwardして動かす時にsubpathを用いる設定手順

このエントリでは、
nginxのreverse-proxyの後ろで、Forgejoを動かすときの設定メモを残しておきます。

Forgejoのセットアップは、以下の手順で行った想定で記載します。

UbuntuLinuxにForgejoをセットアップする手順
https://takemikami.com/2024/0318-ubuntulinuxforgejo.html

試した環境:

  • Ubuntu Linux 22.04.3
  • nginx 1.18.0
  • Forgejo 1.21.7

基本的には、以下の公式の説 …

Allure Behaveで標準出力・標準エラー出力を検査結果に添付する

Allure Behaveを使うと、検査結果レポートを見やすく表示できます。

Allure Behave | Allure Report
https://allurereport.org/docs/behave/

また、検査結果にテキスト・画像などの情報を添付して、
付加情報やエビデンスとして活用することもできます。

Attach screenshots and other files | Allure Behave | Allure Report …

自分用にpre-commitとactを動かす環境を作る手順

pre-commit(git hookの管理ツール)やCIを、
Gitのリポジトリに導入することで、コードの品質管理を行いやすくすることができます。

ただし複数人が関わるリポジトリへの導入・機能追加は、
開発者間の調整や、プロジェクトの管理方針うんぬんが関わってきて、
ちょっとしたツールを小回りよく導入することが難しいことが多々あります。

そこで、このエントリでは自分個人の作業効率のために、
pre-commitとact(GitHub Actionsのworkflowを手元のPCで動かすことができる)を導入 …

Author
takemikami
データエンジニア
・データ分析基盤の開発運用
・マーケティングデータ分析
研究履歴 / 執筆履歴 / プロダクト
facebook
X(twitter)
BlueSky
Instagram
LinkedIn
Hatena::Bookmark
YouTube
GitHub
SpeakerDeck
slideshare
GoogleScholar
読書メーター
Books
takemikami's shop
Recent Posts
    [PR]
    PlayStation
    Steam
    About