자동화하고 배포하는 방법

 GitHub Actions를 이용하여 자동화하고 배포하는 방법

 GitHub Actions를 사용해 이 프로그램의 업데이트를 자동화하고 배포하는 방법을 단계별로 설명드리겠습니다. 이를 통해 코드 푸시(push) 시 자동 테스트와 빌드 프로세스가 실행되며, 최종 HTML 변환 프로그램을 릴리스할 수 있습니다.


1. GitHub Actions 개요

  • GitHub Actions는 리포지토리에 이벤트(예: 코드 푸시)가 발생할 때 워크플로(빌드, 테스트, 배포 등)를 자동으로 실행하는 CI/CD 도구입니다.
  • 이 예제에서는 Python 프로그램 테스트와 자동 배포를 목표로 설정합니다.

2. 기본 GitHub Actions 설정

  1. GitHub Repository에 워크플로 추가:

    • 리포지토리에 .github/workflows 폴더를 생성합니다.
    • 폴더 내에 python-app.yml이라는 이름으로 YAML 파일을 만듭니다.
  2. YAML 파일 내용 (테스트 및 릴리스 프로세스)

yaml
name: 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. 주요 설정 설명

  1. 워크플로 실행 조건:

    • push 이벤트가 main 브랜치에 발생하면 빌드와 테스트가 수행됩니다.
    • PR(풀 리퀘스트)도 동일하게 처리됩니다.
  2. 빌드 작업:

    • GitHub Actions가 Ubuntu 환경에서 실행됩니다.
    • Python을 설치하고 필요한 라이브러리(markdown)를 설치합니다.
    • unittest로 테스트를 실행합니다. (테스트 코드는 tests 폴더에 배치)
  3. 릴리스 작업:

    • 빌드가 성공한 후, main 브랜치에 푸시가 발생하면 자동으로 새 릴리스를 만듭니다.
    • GitHub의 내장 토큰(GITHUB_TOKEN)을 사용해 릴리스를 생성합니다.

4. 테스트 코드 추가 (선택 사항)

tests/test_markup.py 파일을 생성하고 다음과 같이 간단한 테스트 코드를 작성합니다.

python
import 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. 실행 결과 확인

  1. 코드가 푸시되면 GitHub Actions 탭에서 워크플로 진행 상황을 확인할 수 있습니다.
  2. 성공적으로 빌드되면 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에 코드를 푸시할 때마다:

  1. 자동 테스트가 실행됩니다.
  2. 성공 시 릴리스가 생성됩니다.
  3. 필요에 따라 빌드된 실행 파일을 자동으로 업로드할 수도 있습니다.
함 해봅시다.  위드 메이커였습니다.


댓글 쓰기