다음을 통해 공유


Anaconda 환경을 사용하여 파이프라인 실행

Azure DevOps Services

파이프라인에서 Python과 함께 Anaconda를 설정하고 사용합니다. Anaconda는 데이터 과학 및 기계 학습을 위한 Python 배포입니다.

필수 조건

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

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

시작하기

다음 지침에 따라 Anaconda 환경이 있는 샘플 Python 앱에 대한 파이프라인을 설정합니다.

  1. Azure DevOps 조직에 로그인하고, 프로젝트로 이동합니다.

  2. 프로젝트에서 파이프라인 페이지로 이동합니다. 그런 다음, 작업을 선택하여 새 파이프라인을 만듭니다.

  3. 먼저 소스 코드의 위치로 GitHub를 선택하여 마법사의 단계를 진행합니다.

  4. 로그인할 GitHub로 리디렉션될 수 있습니다. 그렇다면 GitHub 자격 증명을 입력합니다.

  5. 리포지토리 목록이 나타나면 Anaconda 샘플 리포지토리를 선택합니다.

  6. Azure Pipelines는 리포지토리의 코드를 분석하고 기존 azure-pipelines.yml 파일을 검색합니다.

  7. 실행을 선택합니다.

  8. 새 실행이 시작됩니다. 실행이 끝날 때까지 기다립니다.

이 문서에 설명된 대로 YAML 파일을 변경하려면 파이프라인 페이지에서 파이프라인을 선택한 다음 파일을 편집 합니다 azure-pipelines.yml .

시스템 경로에 conda 추가

호스트된 에이전트에서 Conda는 Python 버전이 설치된 다른 버전과 충돌하지 않도록 기본적으로 포함되지 PATH 않습니다. task.prependpath 에이전트 명령을 사용하여 모든 이후 단계에서 conda를 사용할 수 있도록 합니다.

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

환경 만들기

명령줄 인수에서

conda create 명령은 전달하는 인수를 사용하여 환경을 만듭니다.

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

YAML에서

Anaconda 환경에 대한 구성을 정의하는 파일을 리포지토리에 등록할 수 있습니다.

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

참고

자체 호스팅 에이전트를 사용하고 마지막에 환경을 제거하지 않으면 환경이 이미 있으므로 다음 빌드에서 오류가 발생합니다. 이 문제를 해결하려면 새 conda env remove --name your-env-name 환경을 만들기 전에 기존 환경을 제거하십시오.

참고

스토리지를 공유하고 동일한 Anaconda 환경을 사용하여 병렬로 작업을 실행하는 자체 호스팅 에이전트를 사용하는 경우 해당 환경 간에 충돌이 발생할 수 있습니다. 이 문제를 해결하려면 --name 인수를 사용하고 고유 식별자를 $(Build.BuildNumber) 빌드 변수와 연결하여 인수 값으로 지정합니다.

Anaconda에서 패키지 설치

다음 YAML은 conda 환경 이름이 scipymyEnvironment 패키지를 설치합니다.

- bash: |
    conda activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

Anaconda 환경에서 파이프라인 단계 실행

참고

각 빌드 단계는 자체 프로세스에서 실행됩니다. Anaconda 환경을 활성화하면 PATH을 편집하고 현재 프로세스에 다른 변경 사항을 적용합니다. 따라서 각 단계에 대해 Anaconda 환경을 별도로 활성화합니다.

- bash: |
    conda activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

자주 묻는 질문(FAQ)

"사용 권한 거부" 오류가 표시되는 이유는 무엇인가요?

호스트된 macOS에서 에이전트 사용자는 Miniconda가 설치된 디렉터리를 소유하지 않습니다. 이 문제를 해결하려면 시스템 경로에 conda 추가 아래의 "호스트된 macOS" 탭으로 이동합니다.

빌드가 conda create 단계나 conda install 단계에서 멈추는 이유는 무엇인가요?

전달 --yes하지 않으면 conda가 중지되고 사용자 입력을 기다립니다.

Windows에서 내 스크립트가 환경을 활성화한 후 중지되는 이유는 무엇인가요?

Windows에서는 activate Batch 스크립트입니다. call 명령어를 사용하여 활성화 후 스크립트 실행을 다시 시작해야 합니다. 파이프라인에서 사용하는 call예제를 참조하세요.

여러 버전의 Python으로 테스트를 실행하려면 어떻게 해야 하나요?

Azure Pipelines에서 Python 앱 빌드로 이동합니다.