-
[Github Action] python test 및 다른 브랜치에 머지하기저장소/git 2022. 1. 29. 23:43
여기서 할 예제는 main 브랜치에 push가 됐을 경우, python 3.7, 3.8, 3.9, 3.10 버전별로 test code 검증을 하고 전부 성공할 경우, develop 브랜치에 main 브랜치의 변경 사항을 merge 하는 케이스입니다.
name: Python build & Merge main to develop on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.7", "3.8", "3.9", "3.10"] steps: - name: Checkout uses: actions/checkout@v2 with: ref: main - 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 python -m pip install flake8 pytest if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | pytest sync-develop: needs: build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: ref: main - name: Merge main -> develop uses: devmasx/merge-branch@master with: type: now from_branch: main target_branch: develop github_token: ${{ github.token }}
여기서 주의해야 할 점은 test code가 없을 경우, pytest 부분에서 오류가 발생합니다. 그러므로 test할 코드가 반드시 1개는 있어야 합니다.
또한
${{ github.token }}
은 context값으로 따로 설정할 필요없이 사용할 수 있습니다.레퍼런스
https://docs.github.com/en/actions/learn-github-actions/contexts#github-context