はじめに
大概のWeb現場はCIが整備してあるだろう。いつかやりたいと思いながらも、結局やり方はわからないままだったのでチャレンジしたらすごく難しかったという話
stackoverflowに助けを求めた
thax Azeem san! 2,000円分ぐらいpaypal送金しようとしたけど結局アカウントを教えてはくれなかった。いい人だな。
英語で質問すると英語力もついていいことずくめやで(急いでると翻訳サイトつかっちゃうけど...)
手順
requirements
-
requirements.txt
の書き出し - リポジトリに push(CIが
requirements.txt
を使用する)
console
dev\Portfolio> pip freeze > requirements.txt
workflowの新規作成
-
データベースにアクセスするようなテストがなければ、ほぼ初期設定でよくて、
requirements.txt
を使用して、djangoのテストが流せそう -
master
にコミットするぞって言われるので OK したあと pull でローカルPCに引き込める
Actions最終版
結局
- 事前に
test_portfolio_db
はつくらなくて良い - mysqlの起動が必要
-
python
ユーザは必要 - 権限付与は必要
-
makemigrations
は必要(※ただし、テストには合格するがログをよく見るとportfolio_db
へのアクセスを試みて失敗している) -
DJANGO_SECRET_KEY
は必要
最終版Actions
name: Django CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 1
matrix:
python-version: [ 3.12 ]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Set up
run: |
sudo systemctl start mysql
mysql -u root -proot -e "CREATE USER 'python'@'localhost';"
mysql -u root -proot -e "GRANT ALL ON test_portfolio_db.* TO 'python'@'localhost';"
python -m pip install setuptools
python -m pip install -r requirements.txt
python manage.py makemigrations vietnam_research gmarker shopping linebot_engine warehouse taxonomy soil_analysis securities
- name: Run tests
run: |
export DJANGO_SECRET_KEY="$(base64 <<< "$RANDOM|TeStiNg|$RANDOM" | tr -d '\n')"
python manage.py test
確認