はじめに
大概の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
確認




