GitHub Actions와 통합

GitHub Actions는 소프트웨어 개발 워크플로를 자동화하는 데 도움이 되는 GitHub의 기능입니다. 소스 코드가 GitHub 리포지토리에 저장된 경우 GitHub Actions에서 사용자 지정 워크플로를 만들어 코드 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포할 수 있습니다.

이 문서에서는 GitHub Actions를 사용하여 CI/CD 워크플로를 만들고 Stream Analytic 작업을 Azure에 배포하는 방법을 알아봅니다. 따라서 다음에 GitHub 리포지토리를 변경할 때 워크플로를 자동으로 트리거하고 Stream Analytics 프로젝트를 Azure에 배포합니다.

필수 조건

시작하기 전에 다음 필수 조건을 충족해야 합니다.

  • 활성 구독이 있는 Azure 계정.
  • GitHub 리포지토리를 구성하고, 워크플로를 만들고, GitHub 비밀을 구성하는 GitHub 계정.
  • PowerShell에서 az 명령을 실행합니다. 이 가이드에 따라 로컬 컴퓨터에 Azure CLI(명령줄 인터페이스)를 설치하거나 업데이트합니다.

1단계: GitHub 리포지토리에 Stream Analytics 프로젝트 푸시

VS Code(Visual Studio Code)용 Azure Stream Analytics 확장을 사용하여 Stream Analytics 프로젝트를 관리합니다. 설치하지 않은 경우 이 가이드를 따릅니다.

  1. Azure Portal에서 쿼리 편집기로 이동하여 VS Code에서 열기를 선택합니다.

    Screenshot of the Azure portal using open in VS Code feature in the query file.

  2. 완료되면 VS Code 작업 영역에 Stream Analytics 프로젝트가 표시됩니다.

    Screenshot of the VS Code workspace after export job.

  3. Ctrl+J를 눌러 VS Code에서 터미널을 엽니다. git 명령을 입력하여 GitHub 리포지토리에 프로젝트를 푸시합니다.

    Screenshot of the VS Code terminal.

2단계: GitHub에서 비밀 설정

Stream Analytics 작업을 배포하려면 3개 이상의 GitHub 비밀을 만들어야 합니다. Azure 자격 증명에 대한 하나의 비밀과 입력/출력 Azure 리소스에 대한 비밀입니다.

  1. GitHub 리포지토리로 이동하여 설정 탭을 선택합니다. 왼쪽 메뉴에서 비밀 및 변수> 작업을 선택하고 새 리포지토리 비밀을 선택하여 새 비밀을 만듭니다. Screenshot of the GitHub setting up a secret for the repository.

  2. Azure 자격 증명에 대한 비밀을 만듭니다. PowerShell을 열고 다음 명령을 실행합니다. 그런 다음 출력 JSON을 비밀 값에 복사합니다.

    1. {subscription-id} 및 {resource-group}을 Azure 리소스로 대체합니다. Azure CLI의 최신 버전을 사용하고 있는지 확인합니다.

      az login 
      az ad sp create-for-rbac --name "myApp" --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} --json-auth 
      

      Screenshot of the PowerShell running az command.

    2. AZURE_CREDENTIALS와 같은 비밀 이름을 입력하고 출력 JSON을 비밀 값에 복사합니다. 그런 다음 비밀 추가를 선택합니다.

      Screenshot of the GitHub creating a secret for Azure credential.

    3. 서비스 주체 암호와 함께 Azure 로그인 작업을 사용하는 방법에 대한 자세한 내용은 여기를 참조 하세요.

  3. 입력 및 출력 리소스에 대한 비밀을 만듭니다. 둘 이상의 입력/출력 리소스의 경우 각 Azure 리소스에 대한 비밀을 각각 만들어야 합니다.

    1. 예를 들어 이벤트 허브에 대한 비밀을 만들려면 Azure Portal에서 Event Hubs로 이동하여 공유 액세스 정책에서 기본 키를 복사합니다.

      Screenshot of the event hub opening the access key.

    2. 액세스 키를 비밀 값에 복사합니다.

      Screenshot shows the event hub opening the access key.

완료되면 GitHub 리포지토리에 대해 세 개 이상의 비밀을 만들어야 합니다.

Screenshot of the GitHub finishing setup three secrets.

3단계: GitHub Actions를 사용하여 워크플로 만들기

  1. 작업 탭으로 이동하여 새 워크플로>직접 워크플로 설정을 선택합니다.

    Screenshot of the GitHub creating a workflow.

  2. 이 템플릿을 YAML 파일에 복사하고 매개 변수를 편집합니다.

    1. PROJECT_NAME: Stream Analytics 작업의 이름입니다.

    2. OUTPUT_PATH: 그대로 둡니다.

    3. TARGET_RESOURCE_GROUP: Azure 리소스 그룹입니다.

    4. LOCATION: 배포를 위한 Azure 지역입니다. 사용 가능한 지역은 여기에서 확인할 수 있습니다.

    5. OVERRIDE_PARAMETERS: Azure 리소스에 대한 자격 증명입니다. 자격 증명을 올바르게 구문 분석하려면 매개 변수를 다음 형식의 키-값 쌍으로 설정해야 합니다.

      #               Inputs_ehinput_DataSource_SharedAccessPolicyKey
      #               \____/ \_____/ \________/ \__________________/
      #                  |      |                        |
      #          input/output  name                credential name
      

      예를 들어 Event Hubs 입력 및 Blob Storage 출력의 경우 키는 다음이어야 합니다.

      Inputs_ClickStream_DataSource_SharedAccessPolicyKey=${{ secrets.ASA_INPUT }} Outputs_BlobOutput_DataSource_AccountKey=${{ secrets.ASA_OUTPUT }}
      
      

      다음은 Azure 리소스 유형에서 자격 증명 이름으로의 매핑입니다.

      리소스 유형 자격 증명 이름
      Azure Event Hubs, Azure IoT Hub, Azure Service Bus SharedAccessPolicyKey
      Azure Blob Storage, Azure Cosmos DB, Azure Table Storage AccountKey
      Azure 함수 ApiKey
      Azure SQL Database, Azure Synapse Analytics 암호
  3. 변경 내용을 저장하고 기본 분기에 커밋합니다. 그런 다음 작업으로 이동하여 워크플로 실행을 선택합니다. 워크플로의 진행률을 모니터링할 수 있습니다.

    Screenshot of the GitHub running the workflow.

  4. 완료되면 Azure Portal에서 실행되기 시작한 Stream Analytics 작업을 확인할 수 있습니다. 다음에 기본 분기에 변경 내용을 푸시할 때 GitHub Actions의 워크플로가 자동으로 트리거됩니다.

    Screenshot of the Azure portal showing the Stream Analytics job is in running status.

축하합니다! GitHub에서 워크플로를 성공적으로 만들고 Stream Analytics 프로젝트를 Azure에 배포했습니다. 이 워크플로를 사용하면 변경 내용이 GitHub 리포지토리의 기본 분기에 푸시될 때마다 Stream Analytics 프로젝트가 Azure에 자동으로 빌드, 테스트, 게시 및 배포할 수 있습니다.