다음을 통해 공유


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

Azure DevOps Services

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

시작하기

다음 지침에 따라 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 에이전트 명령은 모든 후속 단계에서 사용할 수 있도록 합니다.

- 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 환경에 대한 구성을 정의하는 리포지토리에 파일을 체크 인 environment.yml 할 수 있습니다.

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

참고 항목

자체 호스팅 에이전트를 사용하고 마지막에 환경을 제거하지 않으면 환경이 이미 있으므로 다음 빌드에서 오류가 발생합니다. 해결하려면 다음 인수conda env create --quiet --force --file environment.yml--force 사용합니다.

참고 항목

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

Anaconda에서 패키지 설치

다음 YAML은 이름이 myEnvironmentconda 환경에 패키지를 설치합니다scipy.

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

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

참고 항목

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

- bash: |
    source 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 앱 빌드를 참조 하세요.