[Github Actions] Python + Poetry


こちらのコードを使って GitHub Actions を試す。

ソースを持ってくる

mkdir -p /tmp/$(date +%Y%m%d) && cd $_
git clone https://github.com/mykysyk/zip-code.git
cd /tmp/$(date +%Y%m%d)/zip-code

こんな感じになる

/tmp/$(date +%Y%m%d)/zip-code
├── LICENSE
├── README.rst
├── poetry.lock
├── pyproject.toml
├── src
│   └── zip_code_app
│       ├── __init__.py
│       └── core.py
└── tests
    ├── __init__.py
    └── test_zip_code_app.py

テンプレート作成

git switch feat/github_actions
mkdir -p  /tmp/$(date +%Y%m%d)/zip_code_app.github/workflows
vi /tmp/$(date +%Y%m%d)/zip_code_app/.github/workflows/sample.yaml
sample.yaml
name: Python Lint & Test
on: push
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: [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: Update pip
        run: |
          python -m pip install --upgrade pip
      - name: Install Poetry
        run: |
          pip install poetry
          poetry install --no-interaction
      - name: Lint with flake8
        run: |
          pip install flake8
          flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
          flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
      - name: Test with pytest
        run: poetry run pytest -vv

github に push する

git push origin feat/github_actions

Python の Lint と TEST が完了するのを確認

https://github.com/mykysyk/zip-code/actions/

参考