다음을 통해 공유


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 추가

호스트된 에이전트에서 PATH conda는 Python 버전이 설치된 다른 버전과 충돌하지 않도록 기본적으로 제외됩니다. 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

참고

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

참고

스토리지를 공유하는 자체 호스팅 에이전트를 사용하고 동일한 Anaconda 환경을 사용하여 병렬로 작업을 실행하는 경우 해당 환경 간에 충돌이 있을 수 있습니다. resolve 위해 인수 및 고유 식별자를 빌드 변수와의 연결과 같은 인수 값으로 $(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 install 단계에서 응답하지 conda create 않는 이유는 무엇인가요?

를 전달하는 --yes것을 잊어버린 경우 conda는 중지되고 사용자 상호 작용을 기다립니다.

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

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

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

Azure Pipelines에서 Python 앱 빌드를 참조하세요.