diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000000..83e3aa4dc33e --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,140 @@ +# Starter pipeline +# Start with a minimal pipeline that you can customize to build and deploy your code. +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml + +trigger: +- master + +resources: + repositories: + - repository: sonic-buildimage + type: github + name: Azure/sonic-buildimage + endpoint: build + +stages: +- stage: Build + + jobs: + - job: + displayName: "Python3" + variables: + DIFF_COVER_CHECK_THRESHOLD: 80 + DIFF_COVER_ENABLE: 'true' + DIFF_COVER_WORKING_DIRECTORY: $(System.DefaultWorkingDirectory)/sonic-host-services + pool: + vmImage: ubuntu-20.04 + + container: + image: sonicdev-microsoft.azurecr.io:443/sonic-slave-buster:latest + + steps: + - checkout: self + clean: true + submodules: recursive + displayName: 'Checkout code' + + - checkout: sonic-buildimage + clean: true + displayName: 'Checkout code' + + - task: CopyFiles@2 + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/sonic-buildimage/src/sonic-host-services-data/' + contents: '**' + targetFolder: $(System.DefaultWorkingDirectory)/sonic-host-services-data/ + + - script: | + sourceBranch=$(Build.SourceBranchName) + if [[ "$(Build.Reason)" == "PullRequest" ]];then + sourceBranch=$(System.PullRequest.TargetBranch) + fi + echo "Download artifact branch: $sourceBranch" + echo "##vso[task.setvariable variable=sourceBranch]$sourceBranch" + displayName: "Get correct artifact downloading branch" + - task: DownloadPipelineArtifact@2 + inputs: + source: specific + project: build + pipeline: 142 + artifact: sonic-buildimage.vs + runVersion: 'latestFromBranch' + runBranch: 'refs/heads/$(sourceBranch)' + displayName: "Download artifacts from latest sonic-buildimage build" + + - script: | + set -xe + sudo apt-get -y purge libhiredis-dev libnl-3-dev libnl-route-3-dev + sudo dpkg -i libnl-3-200_*.deb + sudo dpkg -i libnl-genl-3-200_*.deb + sudo dpkg -i libnl-route-3-200_*.deb + sudo dpkg -i libnl-nf-3-200_*.deb + sudo dpkg -i libhiredis0.14_*.deb + workingDirectory: $(Pipeline.Workspace)/target/debs/buster/ + displayName: 'Install Debian dependencies' + + - task: DownloadPipelineArtifact@2 + inputs: + source: specific + project: build + pipeline: 9 + artifact: sonic-swss-common + runVersion: 'latestFromBranch' + runBranch: 'refs/heads/master' + displayName: "Download sonic swss common deb packages" + + - script: | + set -xe + sudo dpkg -i libswsscommon_1.0.0_amd64.deb + sudo dpkg -i python3-swsscommon_1.0.0_amd64.deb + workingDirectory: $(Pipeline.Workspace)/ + displayName: 'Install swss-common dependencies' + + - script: | + set -xe + sudo pip3 install swsssdk-2.0.1-py3-none-any.whl + sudo pip3 install sonic_py_common-1.0-py3-none-any.whl + workingDirectory: $(Pipeline.Workspace)/target/python-wheels/buster/ + displayName: 'Install Python dependencies' + + - script: | + set -ex + # Install .NET CORE + curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - + sudo apt-add-repository https://packages.microsoft.com/debian/10/prod + sudo apt-get update + sudo apt-get install -y dotnet-sdk-5.0 + displayName: "Install .NET CORE" + + - script: | + pushd sonic-host-services + + python3 setup.py test + displayName: 'Test Python 3' + + - task: PublishTestResults@2 + inputs: + testResultsFiles: '$(System.DefaultWorkingDirectory)/sonic-host-services/test-results.xml' + testRunTitle: Python 3 + failTaskOnFailedTests: true + condition: succeededOrFailed() + displayName: 'Publish Python 3 test results' + + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/sonic-host-services/coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/sonic-host-services/htmlcov/' + displayName: 'Publish Python 3 test coverage' + + - script: | + set -e + pushd sonic-host-services + python3 setup.py bdist_wheel + displayName: 'Build Python 3 wheel' + + - publish: '$(System.DefaultWorkingDirectory)/sonic-host-services/dist/' + artifact: wheels + displayName: "Publish Python wheels" + diff --git a/lgtm.yml b/lgtm.yml new file mode 100644 index 000000000000..0200260cf76b --- /dev/null +++ b/lgtm.yml @@ -0,0 +1,9 @@ +path_classifiers: + test: "tests" + +extraction: + python: + index: + filters: + - include: "host_modules/*.py" + - include: "scripts/*" diff --git a/pytest.ini b/pytest.ini index c4b03d4c3455..548dc83b224b 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,2 +1,2 @@ [pytest] -addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/*/test*_vectors.py +addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/*/test*_vectors.py --junitxml=test-results.xml -vv