[GitHub-Action] 개요 (1)
카테고리: github-action
태그: github-action
개요
- GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼입니다.
- GitHub Actions는 리포지토리에서 이벤트가 발생할 때 워크플로를 실행할 수 있습니다.
GitHub Actions의 구성요소
workflow: pull request, new issue 등 리포지토리에서 이벤트가 발생할 때 트리거되도록 workflow를 구성할 수 있습니다. workflow 에는 순차적 또는 병렬로 실행할 수 있는 하나 이상의 작업이 있습니다.jobs: 각 작업은 자체 가상 머신 runner 또는 컨테이너 내부에서 실행되며 사용자가 정의한 스크립트를 실행하거나action을 실행할 수 있는 하나 이상의steps이 있습니다.

Workflow
- workflow는 하나 이상의 job 으로 이루어진 자동화 프로세스입니다. 리포지토리의
.github/workflows디렉터리에 YAML 파일로서 정의됩니다. - 리포지토리에는 각각 다른 작업을 수행하는 여러 workflow가 있을 수 있습니다. 또한 workflow 간에는 서로 참조할 수 있습니다.
Events
- 이벤트는 workflow 실행을 트리거하는 리포지토리의 특정한 활동입니다. 예를 들어
pull request,new issue,commit push활동은 이벤트로서 동작할 수 있습니다. workflow를 트리거하는데 사용가능한 전체 이벤트 목록은 여기를 참고하세요. - 또한 REST API을 이용하거나 수동으로 일정에 따라 workflow 실행을 트리거할 수 있습니다.
jobs
- job은 동일한
runner에서 실행되는 workflow의 일련의 step을 정의합니다. 각 step에는 쉘 스크립트 또는action여러 개로 이루어집니다. - step은 하나의
runner에서 순서대로 실행됩니다. - 서로 다른 job 간에는 종속성을 구성할 수 있습니다. 기본적으로 job에는 종속성 없이 병렬로 실행되지만 A 작업이 B 작업이 완료된 후에 실행되도록 할 수 있습니다.
Actions
- Action은 복잡하고 자주 반복되는 작업을 수행하는 custom application입니다. 예를 들어 Github에서 git 리포지토리를 가져오거나 빌드 환경을 구성하는 등의 작업을 Action을 통해 수행할 수 있습니다.
- Action은 스스로 작성하거나
GitHub Maketplace에서 유용한 Action을 찾을 수 있습니다.
runner
- runner는 트리거될 때 workflow를 실행하는 서버입니다. 각 runner는 한 번에 하나의 job을 실행할 수 있습니다.
- GitHub는 Ubuntu, Windows, macOS runner를 제공합니다.
- 각 workflow의 실해은 새로 프로비저닝된 새로운 가상 머신에서 실행됩니다.
- 다른 운영 체제가 필요하거나 특정 하드웨어 구성이 필요한 경우 자체 runner를 호스팅할 수 있습니다. 자체 runner에 대한 자세한 내용은 여기를 참고하세요
예시 workflow
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
name: Node.js Package
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- run: cat .github/workflows/unit-test.yml
- run: npm ci
- run: npm test
name: (optional) GitHub 리포지토리의 Action 탭에 표시되는 workflow의 이름입니다.on: 이 workflow의 트리거를 지정합니다. 이 예제에서는 master 브랜치에 push 또는 pull request 시 트리거됩니다.jobs: 이 workflow에서 실행되는 모든 작업을 함께 그룹화합니다.build: build라는 job을 정의합니다.runs-on: 최신 버전의 Ubuntu Linux runner에서 실행되도록 job을 구성합니다. 이것은 job이 GitHub에서 호스팅하는 새로운 가상 머신에서 실행됨을 의미합니다.steps:buildjob에서 실행되는 모든 step을 함께 그룹화합니다.uses: action/checkout@v3: uses 키워드는 action을 실행할 것을 지정합니다. 이 Action은 workflow에서 저장소를 액세스할 수 있도록 checkout 합니다.uses: action/set-dnoe@v3: 이 Action은 Node.js의 지정된 버전을 설치합니다.with키워드는 Action에서 사용가능한 인수를 포함합니다.run: run 키워드는 runner에서 명령을 실행하도록 job에 지시합니다. run: 키워드 이후 후속되는 명령은 runner에서 실행 가능한 쉘 명령 또는 스크립트입니다.
workflow 실행
workflow가 트리거되면 workflow가 실행됩니다. GitHub에서는 각 step의 활동을 시각화하여 볼 수 있는 기능을 제공합니다.
1️⃣ GitHub.com에서 리포지토리의 기본 페이지로 이동합니다.
2️⃣ 리포지토리 이름 아래의 Action 탭을 클릭 합니다.

3️⃣ 왼쪽 사이드바에서 보려는 workflow를 클릭합니다.

4️⃣ 보려는 workflow run을 클릭합니다.

5️⃣ 보려는 job을 선택합니다.

6️⃣ 각 단계의 결과를 확인합니다.

📌출처
깃허브 액션 /GitHub 작업 알아보기 /GitHub 작업 이해
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기