Pijplijnen uitvoeren met Anaconda-omgevingen
Azure DevOps Services
Meer informatie over het instellen en gebruiken van Anaconda met Python in uw pijplijn. Anaconda is een Python-distributie voor gegevenswetenschap en machine learning.
Aan de slag
Volg deze instructies om een pijplijn in te stellen voor een Python-voorbeeld-app met een Anaconda-omgeving.
Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.
Navigeer in het project naar de pagina Pijplijnen. Kies vervolgens de actie om een nieuwe pijplijn te maken.
Doorloop de stappen van de wizard door eerst GitHub te selecteren als de locatie van de broncode.
U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.
Wanneer de lijst met opslagplaatsen wordt weergegeven, selecteert u uw Anaconda-voorbeeldopslagplaats.
Azure Pipelines analyseert de code in uw opslagplaats en detecteert een bestaand
azure-pipelines.yml
bestand.Selecteer Uitvoeren.
Er wordt een nieuwe run gestart. Wacht totdat de uitvoering is voltooid.
Tip
Als u wijzigingen wilt aanbrengen in het YAML-bestand zoals beschreven in dit onderwerp, selecteert u de pijplijn op de pagina Pijplijnen en bewerkt u het azure-pipelines.yml
bestand.
Conda toevoegen aan uw systeempad
Bij gehoste agents is Conda standaard uitgeschakeld PATH
om te voorkomen dat de Python-versie conflicteert met andere geïnstalleerde versies. De task.prependpath
opdracht agent maakt deze beschikbaar voor alle volgende stappen.
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
Een omgeving maken
Van opdrachtregelargumenten
Met conda create
de opdracht wordt een omgeving gemaakt met de argumenten die u doorgeeft.
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
Vanuit YAML
U kunt een environment.yml
bestand inchecken bij uw opslagplaats waarmee de configuratie voor een Anaconda-omgeving wordt gedefinieerd.
- script: conda env create --quiet --file environment.yml
displayName: Create Anaconda environment
Notitie
Als u een zelf-hostende agent gebruikt en de omgeving niet aan het einde verwijdert, krijgt u een foutmelding over de volgende build omdat de omgeving al bestaat. Gebruik het --force
argument om dit op te lossen: conda env create --quiet --force --file environment.yml
.
Notitie
Als u zelf-hostende agents gebruikt die opslag delen en taken parallel uitvoert met dezelfde Anaconda-omgevingen, kunnen er conflicten optreden tussen deze omgevingen.
Als u dit wilt oplossen, gebruikt u het --name
argument en een unieke id als argumentwaarde, zoals een samenvoeging met de $(Build.BuildNumber)
buildvariabele.
Pakketten installeren vanuit Anaconda
Met de volgende YAML wordt het scipy
pakket geïnstalleerd in de conda-omgeving met de naam myEnvironment
.
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
Pijplijnstappen uitvoeren in een Anaconda-omgeving
Notitie
Elke buildstap wordt in een eigen proces uitgevoerd.
Wanneer u een Anaconda-omgeving activeert, wordt deze bewerkt PATH
en worden andere wijzigingen aangebracht in het huidige proces.
Daarom moet een Anaconda-omgeving afzonderlijk worden geactiveerd voor elke stap.
- bash: |
source activate myEnvironment
python -m pytest --junitxml=junit/unit-test.xml
displayName: pytest
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit/*.xml'
condition: succeededOrFailed()
Veelgestelde vragen
Waarom krijg ik de foutmelding 'Machtiging geweigerd'?
In hosted macOS heeft de agentgebruiker geen eigendom van de map waar Miniconda is geïnstalleerd. Zie het tabblad Gehoste macOS onder Conda toevoegen aan uw systeempad voor een oplossing.
Waarom reageert mijn build niet meer op een conda create
of conda install
meer stappen?
Als u vergeet door te geven --yes
, stopt conda en wacht op interactie van de gebruiker.
Waarom stopt mijn script in Windows nadat het de omgeving heeft geactiveerd?
In Windows activate
is een Batch-script. U moet de call
opdracht gebruiken om het uitvoeren van uw script te hervatten nadat u het hebt geactiveerd.
Bekijk voorbeelden van het gebruik call
in een pijplijn.