다음을 통해 공유


Python 앱 빌드 및 게시

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

이 빠른 시작에서는 Python 앱을 빌드하고 테스트하는 파이프라인을 만듭니다. Azure Pipelines를 사용하여 CI/CD(지속적인 통합 및 지속적인 업데이트) 시스템의 일부로 Python 앱 및 스크립트를 빌드, 테스트 및 배포하는 방법을 알아봅니다.

필수 조건

Python은 Linux, macOS 및 Windows용 Microsoft 호스팅 에이전트미리 설치됩니다. Python 프로젝트를 빌드하기 위해 더 이상 아무것도 설정할 필요가 없습니다. 사전 설치된 Python 버전을 보려면 Software를 참조하세요.

제품 요구 사항
Azure DevOps - Azure DevOps 프로젝트.
- Microsoft 호스팅 에이전트에서 파이프라인을 실행하는 기능입니다. 병렬 작업을 구매하거나 무료 계층을 요청할 수 있습니다.
- YAML 및 Azure Pipelines에 대한 기본 지식 자세한 내용은 첫 번째 파이프라인만들기를 참조하세요.
- 권한:
     - 파이프라인을 만들려면 참가자 그룹에 있어야 하며 그룹에 빌드 파이프라인 만들기 권한이 허용으로 설정되어 있어야 합니다. 프로젝트 관리자 그룹의 구성원은 파이프라인을 관리할 수 있습니다.
    서비스 연결을 만들려면, 관리자 또는 작성자 역할이 있어야 합니다.
깃허브 - GitHub 계정입니다.
- Azure Pipelines에 권한을 부여하는 GitHub 서비스 연결.
제품 요구 사항
Azure DevOps - Azure DevOps 프로젝트.
- Python 3.12 또는 다른 Python 버전이 설치된 자체 호스팅 에이전트입니다. 에이전트를 만들려면 자체 호스팅 에이전트를 참조하세요.
- YAML 및 Azure Pipelines에 대한 기본 지식 자세한 내용은 첫 번째 파이프라인만들기를 참조하세요.
- 권한:
    - 파이프라인을 만들려면 참가자 그룹에 있어야 하며 그룹에 빌드 파이프라인 만들기 권한이 허용으로 설정되어 있어야 합니다. 프로젝트 관리자 그룹의 구성원은 파이프라인을 관리할 수 있습니다.
    서비스 연결을 만들려면, 관리자 또는 작성자 역할이 있어야 합니다.
깃허브 - GitHub 계정입니다.
- Azure Pipelines에 권한을 부여하는 GitHub 서비스 연결.

중요함

GitHub 프로시저를 사용하려면 GitHub에서 다음 작업 중 하나 이상을 수행해야 할 수 있습니다.

  • 서명하세요.
  • Azure Pipelines에 권한을 부여합니다.
  • GitHub 조직에 인증합니다.
  • Azure Pipelines 앱을 설치합니다.

지침에 따라 필요한 프로세스를 완료합니다. 자세한 내용은 GitHub 리포지토리에 대한 액세스를 참조 하세요.

샘플 코드를 복사

샘플 Python 리포지토리를 GitHub 계정에 포크합니다.

  1. python-sample-vscode-flask-tutorial 리포지토리로 이동합니다.
  2. 오른쪽 위에서 포크 를 선택합니다.
  3. 소유자 아래에서 GitHub 계정 이름이 선택되어 있는지 확인하고 포크 만들기를 선택합니다. 포크의 이름은 기본적으로 부모 리포지토리와 동일하지만 이름을 다르게 지정할 수 있습니다.

파이프라인 만들기

  1. Azure DevOps 프로젝트의 왼쪽 탐색 메뉴에서 파이프라인 을 선택한 다음 새 파이프라인을 선택하거나 이 파이프라인이 프로젝트의 첫 번째 파이프라인인 경우 파이프라인 만들기 를 선택합니다.
  2. 코드 위치 화면에서 소스 코드 의 위치로 GitHub 를 선택합니다.
  3. 리포지토리 선택 화면에서 포크된 Python 샘플 리포지토리를 선택합니다.
  4. 파이프라인 구성 화면에서 시작 파이프라인을 선택합니다.

파이프라인 사용자 지정

파이프라인 YAML 검토 화면에서 생성된 azure-pipelines.yml 파일의 내용을 다음 코드로 바꿉니다. 이 코드는 세 가지 버전의 Python에서 다음 작업을 수행합니다.

  1. 필요한 Python 버전 및 종속성을 설치합니다.
  2. 패키지는 ZIP 보관 파일에 아티팩트를 빌드합니다.
  3. 보관 파일을 파이프라인에 게시합니다.
  4. 테스트를 실행합니다.
trigger:
- main

pool:
  vmImage: ubuntu-latest

strategy:
  matrix:
    Python310:
      python.version: '3.10'
    Python311:
      python.version: '3.11'
    Python312:
      python.version: '3.12'

steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
    displayName: 'Use Python $(python.version)'

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'

  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

파이프라인 YAML 검토 화면에서 생성된 azure-pipelines.yml 파일의 내용을 다음 코드로 바꿉니다. 코드는 다음 작업을 수행합니다.

  1. 필요한 Python 버전 및 종속성을 설치합니다.
  2. 패키지는 ZIP 보관 파일에 아티팩트를 빌드합니다.
  3. 보관 파일을 파이프라인에 게시합니다.
  4. 테스트를 실행합니다.

프로젝트 구성과 일치하도록 azure-pipelines.yml 사용자 지정합니다.

  • 다른 에이전트 풀이 있는 경우, 풀 name 자리 표시자를 당신의 풀 이름 또는 default으로 대체하십시오.
  • 필요한 경우 Python versionSpec 을 자체 호스팅 에이전트에 설치된 버전으로 변경합니다.
  trigger:
  - main

  pool: 
    name: '<your-pool-name or default>'

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.12'
    displayName: 'Use Python 3.12'  

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'


  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

파이프라인을 실행하세요.

저장 및 실행을 선택한 다음, 저장 및 실행을 다시 선택합니다. 요약 화면에서 작업을 선택하여 작업 작동을 확인할 수 있습니다.

작업은 지정된 각 Python 버전에 대해 한 번씩 세 번 실행됩니다. 세 버전은 서로 다른 에이전트에서 병렬로 실행할 수 있습니다.

여러 버전이 있는 완료된 Python 작업의 스크린샷.

완료된 단일 Python 작업의 스크린샷.

아티팩트 보기 및 테스트 결과

빌드 아티팩트 보기는 요약 탭에서 [N] 게시된 링크를 선택합니다.

게시된 빌드 아티팩트 링크의 스크린샷.

아티팩트 페이지에 게시된 빌드 아티팩트가 표시됩니다.

게시된 빌드 아티팩트 스크린샷

단일 작업에 대해 게시된 빌드 아티팩트 스크린샷

테스트 결과를 보려면 테스트 탭을 선택합니다.

파이프라인 테스트 결과의 스크린샷.

청소

만든 파이프라인 사용이 완료되면 삭제할 수 있습니다.

  1. 프로젝트의 왼쪽 탐색 메뉴에서 파이프라인 을 선택합니다.

  2. 파이프라인 목록에서 만든 파이프라인을 마우스로 가리키고 오른쪽에 있는 기타 작업 아이콘을 선택한 다음 삭제를 선택합니다.

    또는 파이프라인을 선택하고 파이프라인 페이지에서 오른쪽 위에 있는 기타 작업 아이콘을 선택한 다음 삭제를 선택합니다.

  3. 파이프라인 이름을 입력한 다음 삭제 를 다시 선택합니다.

Python 앱을 빌드하고 테스트한 파이프라인을 성공적으로 만들고 실행했습니다. 이제 Azure Pipelines를 사용하여 CI/CD 프로세스의 일부로 Python 앱 및 스크립트를 빌드, 테스트 및 배포할 수 있습니다.

다음 단계