GitHub Actions를 이용하여 자동화하고 배포하는 방법
GitHub Actions를 사용해 이 프로그램의 업데이트를 자동화하고 배포하는 방법을 단계별로 설명드리겠습니다. 이를 통해 코드 푸시(push) 시 자동 테스트와 빌드 프로세스가 실행되며, 최종 HTML 변환 프로그램을 릴리스할 수 있습니다.
1. GitHub Actions 개요
- GitHub Actions는 리포지토리에 이벤트(예: 코드 푸시)가 발생할 때 워크플로(빌드, 테스트, 배포 등)를 자동으로 실행하는 CI/CD 도구입니다.
- 이 예제에서는 Python 프로그램 테스트와 자동 배포를 목표로 설정합니다.
2. 기본 GitHub Actions 설정
GitHub Repository에 워크플로 추가:
- 리포지토리에
.github/workflows
폴더를 생성합니다. - 폴더 내에
python-app.yml
이라는 이름으로 YAML 파일을 만듭니다.
- 리포지토리에
YAML 파일 내용 (테스트 및 릴리스 프로세스)
yamlname: Python Markup to HTML Converter CI
on:
push:
branches: [main] # main 브랜치에 푸시될 때 워크플로 실행
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.x # Python 3.x 버전 설치
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install markdown
- name: Run tests
run: |
python -m unittest discover tests
release:
needs: build
runs-on: ubuntu-latest
if: github.event_name == 'push'
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Create Release
uses: softprops/action-gh-release@v1
with:
body: "Markup to HTML Converter latest release"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3. 주요 설정 설명
워크플로 실행 조건:
push
이벤트가main
브랜치에 발생하면 빌드와 테스트가 수행됩니다.- PR(풀 리퀘스트)도 동일하게 처리됩니다.
빌드 작업:
- GitHub Actions가 Ubuntu 환경에서 실행됩니다.
- Python을 설치하고 필요한 라이브러리(
markdown
)를 설치합니다. unittest
로 테스트를 실행합니다. (테스트 코드는tests
폴더에 배치)
릴리스 작업:
- 빌드가 성공한 후,
main
브랜치에 푸시가 발생하면 자동으로 새 릴리스를 만듭니다. - GitHub의 내장 토큰(
GITHUB_TOKEN
)을 사용해 릴리스를 생성합니다.
- 빌드가 성공한 후,
4. 테스트 코드 추가 (선택 사항)
tests/test_markup.py
파일을 생성하고 다음과 같이 간단한 테스트 코드를 작성합니다.
pythonimport unittest
import markdown
class TestMarkupToHTML(unittest.TestCase):
def test_conversion(self):
markup = "# Hello"
expected_html = "<h1>Hello</h1>"
self.assertEqual(markdown.markdown(markup), expected_html)
if __name__ == "__main__":
unittest.main()
5. 실행 결과 확인
- 코드가 푸시되면 GitHub Actions 탭에서 워크플로 진행 상황을 확인할 수 있습니다.
- 성공적으로 빌드되면 GitHub Release 탭에 새 릴리스가 생성됩니다.
6. 자동화된 배포를 위한 확장
- PyInstaller를 사용해 Python 코드를 실행 가능한 파일로 빌드하고, GitHub 릴리스에 해당 파일을 포함할 수 있습니다.
- YAML 파일에 빌드 후
.exe
또는.app
파일을 릴리스에 업로드하는 단계 추가:
yaml - name: Build executable
run: pyinstaller --onefile converter.py
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
with:
asset_path: dist/converter.exe
asset_name: converter.exe
content_type: application/octet-stream
7. 요약
이제 GitHub에 코드를 푸시할 때마다:
- 자동 테스트가 실행됩니다.
- 성공 시 릴리스가 생성됩니다.
- 필요에 따라 빌드된 실행 파일을 자동으로 업로드할 수도 있습니다.
함 해봅시다. 위드 메이커였습니다.
댓글 쓰기