どーも。ばぁどです。 CI 最高ーーー。
ということで、GitHubのDjango プロジェクトにCIを設定した話を備忘録として残そうと思います。
GitHub Actions
詳細は下記の"さくらのナレッジ"さんの記事がわかりやすかったです。
触った感じだと、クリックだけでCIを設定することができ非常に簡易的にCIの設定をすることができました。
Actions
タブの中にはGitHub側で一定のテンプレートは用意してくれており、Djangoのテンプレートを選ぶことで基本的な初期設定が導入されていました。
生成された設定ファイル
上記フローでクリックした後、
./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で設定したいくつかの動作が起動することを確認しました。
ユニットテストが実行されていることを確認
python manage.py test
が実行されたことも確認しました。
まとめ
コロナ前にGitHubだけでCI/CDができるようになっていたのが驚きでした。 CircleCIなどを活用しないとできない認識だったのですが、時代は前に進むんですね・・・
今後はカバレッジの確認やSASTなどもCIに追加していこうと考えています。