Github Actions - 1

Noah·2023년 9월 15일
0

CI/CD

목록 보기
3/3

Overview

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(지속적 통합 및 지속적 전달) 플랫폼이다. 리포지토리에 대한 모든 풀 요청을 빌드 및 테스트하거나 병합된 풀 요청을 프로덕션에 배포하는 워크플로를 생성할 수 있다.

또한 GitHub Actions는 DevOps 이상의 기능을 제공하며 저장소에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있게 해준다. 예를 들어 누군가 저장소에 새 이슈를 생성할 때마다 워크플로를 실행하여 적절한 레이블을 자동으로 추가할 수도 있다.

GitHub는 워크플로를 실행하기 위한 Linux, Windows 및 macOS 가상 머신을 제공하며, 자체 데이터 센터 또는 클라우드 인프라에서 자체 호스팅 실행기를 호스팅할 수도 있다.

Components

리포지토리에서 이벤트가 발생할 때 트리거되도록 GitHub Actions 워크플로를 구성할 수 있다. 워크플로에는 순차적 또는 병렬로 실행될 수 있는 작업이 하나 이상 포함되어 있다. 각 작업은 자체 가상 머신 실행기 또는 컨테이너 내부에서 실행되며, 정의한 스크립트를 실행하거나 작업 흐름을 단순화할 수 있는 재사용 가능한 확장인 작업을 실행하는 하나 이상의 단계가 있다.

Workflows

워크플로우는 하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스다. 워크플로는 YAML 파일이며 .github/workflows 디렉터리에 정의되어 저장소의 이벤트에 의해 트리거될 때 실행되거나 수동으로 또는 정의된 일정에 따라 트리거될 수 있다.

리포지토리에는 여러 워크플로가 있을 수 있으며 각 워크플로는 서로 다른 작업 집합을 수행할 수 있다. 예를 들어 풀 요청을 빌드하고 테스트하는 워크플로, 릴리스가 생성될 때마다 애플리케이션을 배포하는 워크플로, 그리고 누군가가 새 이슈를 열 때마다 레이블을 추가하는 워크플로가 있을 수 있다.

Events

이벤트는 말 그대로 워크플로 실행을 트리거하는 이벤트다. 예를 들어, 누군가 풀 요청을 생성하거나, 이슈를 열거나, 커밋을 저장소에 푸시할 때를 말한다.

Jobs

작업은 동일한 실행기에서 실행되는 워크플로의 일련의 단계다. 각 단계는 실행될 쉘 스크립트이거나 실행될 조치다. 단계는 순서대로 실행되며 서로 종속된다. 각 단계는 동일한 실행기에서 실행되므로 한 단계에서 다른 단계로 데이터를 공유할 수 있다. 예를 들어, 애플리케이션을 빌드하는 단계와 빌드된 애플리케이션을 테스트하는 단계가 있을 수 있다.

다른 작업과의 종속성을 구성할 수 있습니다. 기본적으로 작업은 종속성이 없으며 서로 병렬로 실행된다. 작업이 다른 작업에 종속되면 종속 작업이 완료될 때까지 기다렸다가 실행한다. 예를 들어 종속성이 없는 다양한 아키텍처에 대한 여러 빌드 작업과 해당 작업에 종속되는 패키징 작업이 있을 수 있다. 빌드 작업은 병렬로 실행되며 모두 성공적으로 완료되면 패키징 작업이 실행된다.

Actions

액션은 복잡하지만 자주 반복되는 작업을 수행하는 GitHub Actions 플랫폼용 사용자 지정 애플리케이션이다.액션업을 사용하면 워크플로 파일에 작성하는 반복적인 코드의 양을 줄이는 데 도움이 된다. 자신만의 액션을 작성하거나 GitHub Marketplace의 워크플로에 사용할 액션을 찾을 수 있다.

Runners

러너는 워크플로가 트리거될 때 워크플로를 실행하는 서버다. 각 실행기는 한 번에 하나의 작업을 실행할 수 있다. GitHub는 워크플로를 실행하기 위한 Ubuntu Linux, Microsoft Windows 및 macOS 실행기를 제공한다. 각 워크플로 실행은 새로 프로비저닝된 새로운 가상 머신에서 실행된다.

Example

하나의 워크플로에 대한 예제 파일이다. 단일 워크플로 파일 안에 여러 작업을 정의할 수 있고 단일 작업은 여러 단계로 이루어지는 것을 확인할 수 있다. 첫 번째 단계와 두 번째 단계를 보면 다른 사용자가 만들어 놓은 액션을 활용해 반복적인 코드의 양을 줄인 것을 확인할 수 있다.

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v
profile
개발 공부는 🌳 구조다…

0개의 댓글