Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

新しい機能を追加する前に、CIを導入してみよう #9

Closed
sotetsuk opened this issue Oct 7, 2020 · 0 comments · Fixed by #10
Closed

新しい機能を追加する前に、CIを導入してみよう #9

sotetsuk opened this issue Oct 7, 2020 · 0 comments · Fixed by #10

Comments

@sotetsuk
Copy link
Owner

sotetsuk commented Oct 7, 2020

CIとは、 Continuous Integration の略となります。前回までにユニットテストを使った開発を導入してきましたが、CIを用いることで、ユニットテストを定期的に繰り返し実行することで、ユニットテスト実行タイミングから恣意性を減らし、バグの早期発見に貢献できます。

1. ローカルでターミナルからテストを実行できるようにする

今まではPyCharmから手動でテストを実行できるようにしていたが、自動でテストをするための準備として、ターミナルからテストを実行できるようにしましょう。

新しいブランチで Makefile を作り、make コマンドを使ってテストを実行できるようにします。
(簡単な例なので、 make を使わずに直接コマンドを実行してもかまいません)

make - ビルド作業を自動化するツールの使い方

image

次のように、ターミナルからテストが実行できていることを確認しましょう。

image

2. GitHub上で自動でテストが回るように設定する

.github/workflows の下に tests.yml を作り、次のようにテストの設定をする。このファイルを用意することで、GitHub Actions を使ってCIを実現することが出来ます。

name: tests

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
      with:
        python-version: '3.8'
        architecture: 'x64'
    - name: unittest
      run: |
        make unittest
    - name: doctest
      run: |
        make doctest

参照: github.com/actions/setup-python

3. PRを作り、CIが回っていることを確認してみよう

これまでと違い All checks have passed というメッセージが出ていることに注目しましょう。

image

Details からテスト結果の詳細を確認することができる。

image

4. READMEにバッジをつけてみよう

Actions タブから実行しているCIに飛んで、 Create status badge をクリックします。

image

表示されたメッセージをコピーしてREADMEに貼ります。

image

変更をコミットしてプッシュします。

5. PRをmainにマージしよう

実際に作成されたPRは #10 から確認できます。

目次

  1. プロジェクトを初期化しよう
  2. 仕様を決めて、ユニットテストを追加してみよう
  3. ユニットテストが通るように本体を実装してみよう
  4. (Optional) doctestを導入してみよう
  5. [現在] 新しい機能を追加する前に、CIを導入してみよう
  6. [つぎ] 新しい機能を追加してみよう
  7. ライブラリとして使えるようにしてみよう
  8. CLIツールとして使えるようにしてみよう
  9. (Optional) 便利な外部ライブラリをインストールして使ってみよう (Pytest編)
  10. (Optional) 便利な外部ライブラリをインストールして使ってみよう (Click編)
  11. 型チェックを使ってみよう
  12. しっかりとしたREADMEを書こう
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant