ばぁど・うぉっちんぐ

セキュリティに強いWeb屋。自由と春を求めて羽ばたく渡り鳥。

このブログはGoogle Analyticsを利用しています

【備忘録】GitHubのDjangoプロジェクトにCIを設定した話

どーも。ばぁどです。 CI 最高ーーー。

ということで、GitHubDjango プロジェクトにCIを設定した話を備忘録として残そうと思います。

GitHub Actions

詳細は下記の"さくらのナレッジ"さんの記事がわかりやすかったです。

knowledge.sakura.ad.jp

触った感じだと、クリックだけでCIを設定することができ非常に簡易的にCIの設定をすることができました。 Actionsタブの中にはGitHub側で一定のテンプレートは用意してくれており、Djangoのテンプレートを選ぶことで基本的な初期設定が導入されていました。

f:id:UltraBirdTech:20210704154248p:plain

生成された設定ファイル

上記フローでクリックした後、 ./github/workflows/django.yml として設定ファイルが作成されます。

name: Django CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.7, 3.8, 3.9]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run Tests
      run: |
        python manage.py test

ポイントとして、Djangoのテスト実行コマンドであるpython manage.py testが最初から書かれていることとか感動したポイントです。 Djangoプロジェクトだと言えば、ユニットテストの実行コマンドも最初から設定ファイルに記述しておいてくれるって、すごい便利になりましたね。

実行結果

PullRequestの作成時にCIが起動することを確認

masterブランチへのPullRequestの作成時に、CIで設定したいくつかの動作が起動することを確認しました。 f:id:UltraBirdTech:20210704154635p:plain

ユニットテストが実行されていることを確認

python manage.py testが実行されたことも確認しました。 f:id:UltraBirdTech:20210704154702p:plain

まとめ

コロナ前にGitHubだけでCI/CDができるようになっていたのが驚きでした。 CircleCIなどを活用しないとできない認識だったのですが、時代は前に進むんですね・・・

今後はカバレッジの確認やSASTなどもCIに追加していこうと考えています。