GitHub Actions의 이해
워크플로를 사용하여 배포 프로세스의 단계를 자동화할 수 있습니다. 코드를 변경하고 Git 리포지토리에 변경 내용을 커밋할 때마다 워크플로는 미리 정의된 프로세스를 실행합니다. 워크플로는 Bicep 코드가 품질 표준을 충족하는지 확인한 다음 Azure에 리소스를 배포하는 작업을 자동화할 수 있습니다. 프로세스는 사용자가 만드는 워크플로 정의에서 정의됩니다.
GitHub Actions는 GitHub의 기능입니다. GitHub는 코드를 저장하고 협력자와 공유하는 데 사용하는 Git 리포지토리를 호스트합니다. Bicep 코드를 GitHub에 저장하면 GitHub Actions는 코드에 액세스하여 배포 프로세스를 자동화할 수 있습니다. 이 단원에서는 GitHub Actions에 대해 알아봅니다.
워크플로란 무엇일까요?
워크플로는 코드를 테스트하고 배포하는 데 사용되는 파일에 정의된 구성 가능한 반복 가능한 프로세스입니다. 워크플로는 실행해야 하는 모든 단계를 적절한 순서로 구성합니다.
GitHub Actions로 작업할 때는 워크플로를 YAML 파일에서 정의합니다. 워크플로 YAML 파일이 코드 파일이기 때문에 파일은 .github/workflows
라는 폴더의 Git 리포지토리에 Bicep 코드와 함께 저장됩니다. YAML 파일은 Bicep 구조적 텍스트 파일과 유사한 구조적 텍스트 파일입니다. 모든 텍스트 편집기를 사용하여 YAML 파일을 만들고 편집할 수 있습니다. 이 모듈에서는 Visual Studio Code를 편집기로 사용합니다. GitHub 웹 인터페이스는 워크플로 YAML 파일을 보고 편집하고, 워크플로 정의에 대해 공동으로 작업하고, 커밋 및 분기를 사용하여 워크플로 파일의 여러 버전을 관리하는 데 사용할 수 있는 도구를 제공합니다.
실행기
지금까지는 로컬 컴퓨터에서 Bicep 파일을 배포했습니다. Bicep 템플릿을 쓴 후에는 이를 Azure CLI나 Azure PowerShell을 사용하여 Azure에 배포합니다. 이러한 도구는 컴퓨터의 리소스를 사용하여 템플릿을 Azure에 제출합니다. 도구는 사용자의 개인 ID를 사용하여 Azure에 인증하고 리소스를 배포할 수 있는 권한이 있는지 확인합니다.
또한 워크플로는 배포 작업을 실행할 수 있도록 올바른 운영 체제 및 하드웨어 플랫폼을 사용하여 컴퓨터 또는 GPU에 액세스할 수 있어야 합니다. GitHub 작업은 워크플로에 대한 배포 단계를 실행하도록 구성된 컴퓨터인 ‘실행기’를 사용합니다. 각 실행기는 이전 모듈에서 사용한 Bicep 및 Azure 도구를 이미 가지고 있으므로 사용자의 컴퓨터에서 수행하는 것과 동일한 작업을 수행할 수 있습니다. 사람이 명령을 실행하는 대신 GitHub Actions 서비스가 워크플로 YAML 파일로 정의한 단계를 실행하도록 실행기에 지시합니다.
GitHub Actions에서는 Linux 또는 Windows와 같은 다양한 운영 체제를 위한 여러 유형의 실행기와 도구 집합을 제공합니다. GitHub에서 이러한 실행기를 관리하므로 사용자는 실행기용 컴퓨팅 인프라를 유지 관리하지 않아도 됩니다. 실행기는 사용자를 대신해 호스트되기도 하므로 GitHub 호스팅 실행기 또는 호스트된 실행기라고도 불립니다. 워크플로가 실행되면 호스트된 실행기가 자동으로 만들어집니다. 워크플로의 실행이 완료되면 호스트된 실행기가 자동으로 삭제됩니다. 호스트된 실행기에 직접 액세스할 수 없으므로 솔루션을 배포하는 데 필요한 모든 단계가 워크플로에 포함되어야 합니다.
참고 항목
자체 호스팅 실행기라고 하는 사용자 지정 실행기를 만들 수 있습니다. 워크플로의 일부로 실행해야 하는 특정 소프트웨어가 있거나 실행기 구성 방식을 정확하게 제어해야 하는 경우 자체 호스팅 실행기를 만들 수 있습니다. 이 모듈에서는 자체 호스팅 실행기를 다루지 않지만 요약 섹션의 자세한 정보에 대한 링크를 제공합니다.
트리거
GitHub Actions에 워크플로의 실행 ‘시점’을 지시하려면 ‘트리거’를 만듭니다. 여러 유형의 트리거 중에서 선택할 수 있습니다. 이제 ‘수동 트리거’를 사용하여 워크플로 실행을 시작할 시점을 GitHub Actions에 알립니다. 이 모듈의 후반부에서 다른 트리거에 대해 알아봅니다.
단계
단계는 워크플로가 수행하는 단일 작업을 나타냅니다. 단계는 Bash 또는 PowerShell에서 실행하는 개별 명령과 비슷합니다. 대부분의 배포에서는 여러 단계를 순서대로 실행합니다. 워크플로 YAML 파일에서 각 단계의 시퀀스 및 모든 세부 정보를 정의합니다.
GitHub Actions에서는 다음과 같은 두 가지 유형의 단계를 제공합니다.
- 실행 단계: 실행 단계를 사용하여 Bash, PowerShell 또는 Windows 명령 셸에서 단일 명령 또는 명령 시퀀스를 실행할 수 있습니다.
- 작업 단계: 작업 단계는 스크립트 문을 작성하지 않고 다양한 기능에 액세스하는 편리한 방법입니다. 예를 들어 Bicep 파일을 Azure에 배포하는 기본 제공 작업이 있습니다. 누구나 동작을 작성하고 다른 사용자와 공유할 수 있습니다. 방대한 상용 및 오픈 소스 작업을 사용할 수 있습니다.
일부 사용자는 동작보다는 스크립트 문을 선호하는데, 이는 실행된 작업을 정확하게 제어할 수 있기 때문입니다. 스크립트를 작성하고 관리할 필요가 없도록 동작을 사용하는 것을 선호하는 사용자도 있습니다. 이 모듈에서는 두 방법을 혼합하여 사용합니다.
작업
GitHub Actions에서 작업은 정렬된 단계 집합을 나타냅니다. 워크플로에는 항상 하나 이상의 작업이 있으며 복잡한 배포를 만들 때 둘 이상의 작업이 있는 것이 일반적입니다.
참고 항목
각 작업이 다른 실행기에서 실행되도록 설정할 수 있습니다. 작업을 서로 다른 실행기에서 실행하는 것은 작업 워크플로의 여러 부분에서 서로 다른 운영 체제를 사용해야 하는 솔루션을 빌드하고 배포할 때 유용합니다.
예를 들어 iOS 앱과 앱 백엔드 서비스를 빌드한다고 가정합니다. iOS 앱을 빌드하기 위해 macOS 실행기에서 실행되는 작업 하나가 있고, 백엔드를 빌드하기 위해 Ubuntu 또는 Windows 실행기에서 실행되는 다른 작업이 있을 수 있습니다. 두 작업을 동시에 실행하도록 워크플로에 지시하여 워크플로의 실행 속도를 높일 수도 있습니다.
기본 워크플로 예제
이제 기본 GitHub Actions 개념을 알고 있으므로 YAML에서 간단한 워크플로 정의를 살펴보겠습니다.
name: learn-github-actions
on: [workflow_dispatch]
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- name: 'Run a one-line command'
run: echo "hello from GitHub Actions"
- name: 'Run a multi-line command'
run: |
echo "We'll add more steps soon."
echo "For example, we'll add our Bicep deployment step."
파일의 각 부분을 자세히 살펴보겠습니다.
name
은 워크플로의 이름입니다. 이 이름은 GitHub 웹 인터페이스에 표시됩니다.on
은 실행 시점을 워크플로에 알려 줍니다. 이 경우에는 워크플로를 수동으로 트리거하려 한다는 사실을on: [workflow_dispatch]
가 GitHub Actions에 알려줍니다.jobs
는 워크플로의 모든 작업을 그룹화합니다.say-hello
는 이 워크플로의 첫 번째이자 유일한 작업의 이름입니다.runs-on
은 작업을 실행할 때 사용할 실행기를 워크플로에 지시합니다. 이 예제에서 워크플로는 GitHub 호스팅 실행기의 풀에서 가져온 Ubuntu 운영 체제에서 실행됩니다.steps
는 작업 내에서 실행할 단계의 시퀀스를 나열합니다. 예제 YAML에는 두 단계가 있습니다. 두 단계 모두 일부 텍스트를 에코하는 간단한 스크립트를 실행합니다. 각 단계에는 사람이 읽을 수 있는name
값이 있습니다. 워크플로 로그에 이름이 표시됩니다. 여러 줄 스크립트 단계를 만들려면 예제와 같이 파이프 문자(|
)를 사용합니다. 단계가 실행된 후에 워크플로 로그에 출력이 표시됩니다.
중요
YAML 파일에는 들여쓰기가 중요합니다. 예제 YAML을 한번 보세요. YAML에서 일부 줄은 두 개 또는 네 개의 공백으로 들여쓰기 됩니다. 들여쓰기를 제대로 하지 않으면 GitHub Actions가 파일을 해석할 수 없습니다. Visual Studio Code는 YAML 파일 들여쓰기에서 오류를 찾고 수정하는 데 도움이 됩니다.