안녕하세요 오늘은 GitHub Actions 에 대한 설명과 사용 방법에 대해서 소개하도록하겠습니다. 우선 github action이 무엇인지 그리고 이를 위해서 어떤 구성요소들이 필요한지, 설정 방법과 yaml파일 작성 방법에 대해서도 알려드리겠습니다.
GitHub Actions 이란 무엇일까요
GitHub Actions는 GitHub의 지속적 통합 및 배포(CI/CD) 기능을 제공하는 강력한 플랫폼입니다. 이 도구를 사용하면 소프트웨어 개발 워크플로우를 자동화하고, 테스트 및 배포 과정을 간소화할 수 있습니다.
GitHub Actions의 기본 개념
GitHub Actions는 워크플로우를 자동화하기 위한 일련의 명령입니다. 이 워크플로우는 GitHub 리포지토리 내의 특정 이벤트(예: 푸시, 풀 리퀘스트, 이슈 생성 등)에 반응하여 실행됩니다.
워크플로우의 구성 요소
- 이벤트: 워크플로우를 트리거하는 특정 활동(예:
push
,pull_request
). - 작업(Job): 실행할 작업의 집합.
- 스텝(Step): 각 작업 내에서 수행될 일련의 명령어 또는 작업.
GitHub Actions 설정하기
GitHub Actions를 사용하기 위해서는 .github/workflows
디렉토리에 YAML 형식의 워크플로우 파일을 생성해야 합니다.
기본 워크플로우 파일 생성방법입니다.
1 2 3 4 5 6 7 8 9 10 11 12 | name: CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run a script run: echo Hello, world! |
이 YAML 파일은 push
이벤트가 발생할 때마다 “Hello, world!”를 출력하는 간단한 워크플로우를 정의합니다.
테스트, 빌드 프로세스, 배포 작업 수행하기
GitHub Actions는 다양한 작업을 자동화하는 데 사용할 수 있습니다. 예를 들어, 테스트 실행, 빌드 프로세스, 배포 작업 등이 있습니다.
테스트 자동화 코드를 작성해보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | name: Test on: [pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Run tests run: npm test |
이 워크플로우는 풀 리퀘스트가 생성될 때마다 종속성을 설치하고 테스트를 실행합니다.
고급 워크플로우 기능
GitHub Actions는 더 복잡한 시나리오에 대한 다양한 고급 기능을 제공합니다. 예를 들어, 여러 운영 체제에서 테스트를 실행하거나, 시크릿을 사용하여 민감한 데이터를 보호할 수 있습니다.
멀티 OS 테스트 코드를 작성해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | name: Multi-OS Test on: [push] jobs: test: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Run tests run: npm test |
이 워크플로우는 Ubuntu, Windows, macOS에서 테스트를 실행합니다.
GitHub Actions의 장점
GitHub Actions를 사용하면 개발 워크플로우를 자동화하고, 생산성을 높이며, 소프트웨어 배포 과정을 간소화할 수 있습니다. 현대 소프트웨어 개발의 필수적인 부분으로 자리 잡았습니다.
GitHub Actions는 개발자가 복잡한 워크플로우를 쉽게 관리하고 자동화할 수 있게 해주는 강력한 도구라는 생각이 듭니다. 이 글을 통해 GitHub Actions의 기본 개념과 사용 방법에 대해 이해하고, 실제 프로젝트에 적용하는 데 도움이 되기를 바라겠습니다. 도커에 대해서 궁금하시면 여기를 참고해주세요. 감사합니다.