레이블이 GitHub Actions인 게시물을 표시합니다. 모든 게시물 표시
레이블이 GitHub Actions인 게시물을 표시합니다. 모든 게시물 표시

2024년 10월 17일 목요일

자동화하고 배포하는 방법

 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. 필요에 따라 빌드된 실행 파일을 자동으로 업로드할 수도 있습니다.
함 해봅시다.  위드 메이커였습니다.


GitHub Actions를 사용해 이 프로그램의 업데이트를 자동화하고 배포하는 방법

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. 필요에 따라 빌드된 실행 파일을 자동으로 업로드할 수도 있습니다.