ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    https://github.com/marketplace/actions/merge-branch

    댓글