-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
156 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
#============================================================================= | ||
# Azure Pipeline settings | ||
#============================================================================= | ||
|
||
# Nightly build master for pypi upload | ||
schedules: | ||
- cron: "0 0 * * *" | ||
branches: | ||
include: | ||
- master | ||
always: true | ||
|
||
# Auto cancel old PR builds | ||
pr: | ||
autoCancel: true | ||
# TODO : https://github.com/neuronsimulator/nrn/issues/1063 | ||
# paths: | ||
# exclude: | ||
# - docs | ||
# - README.md | ||
|
||
# Trigger build for certain branches only | ||
trigger: | ||
- master | ||
- release/* | ||
|
||
stages: | ||
- stage: BuildTestDeploy | ||
jobs: | ||
|
||
- job: 'ManyLinuxWheels' | ||
timeoutInMinutes: 45 | ||
pool: | ||
vmImage: 'ubuntu-20.04' | ||
strategy: | ||
matrix: | ||
Python39: | ||
python.version: '3.9' | ||
|
||
steps: | ||
|
||
# Secure files documentation: | ||
# https://docs.microsoft.com/en-us/azure/devops/pipelines/library/secure-files?view=azure-devops | ||
# NOTE: when uploading new secure files, access must be permitted from the Azure pipeline interface (check message there) | ||
- task: DownloadSecureFile@1 | ||
name: mpt_headersSF | ||
displayName: 'Download mpt_headers secure file' | ||
inputs: | ||
secureFile: 'mpt_headears.2.21.tar.gz' | ||
|
||
# Note that mpt headers must be mounted in the docker imager under `/nrnwheel/mpt` | ||
# This path is checked by `packaging/python/build_wheels.bash` when run in the image. | ||
- script: | | ||
sudo mkdir -p /opt/nrnwheel/mpt | ||
sudo tar -zxf $(mpt_headersSF.secureFilePath) --directory /opt/nrnwheel/mpt | ||
docker run --rm \ | ||
-w /root/nrn \ | ||
-v $PWD:/root/nrn \ | ||
-v /opt/nrnwheel/mpt:/nrnwheel/mpt \ | ||
-e NEURON_NIGHTLY_TAG \ | ||
-e NRN_NIGHTLY_UPLOAD \ | ||
-e NRN_RELEASE_UPLOAD \ | ||
-e SETUPTOOLS_SCM_PRETEND_VERSION \ | ||
-e NRN_BUILD_FOR_UPLOAD=1 \ | ||
'docker.io/neuronsimulator/neuron_wheel:manylinux_2_28_x86_64' \ | ||
packaging/python/build_wheels.bash linux $(python.version) coreneuron | ||
displayName: 'Building ManyLinux Wheel' | ||
- script: | | ||
sudo apt update | ||
sudo apt install -y mpich openmpi-bin libopenmpi-dev libmpich-dev | ||
displayName: 'Install Test System Dependencies' | ||
- template: ci/azure-wheel-test-upload.yml | ||
|
||
|
||
# Jobs to build OSX wheels natively | ||
- job: 'MacOSWheels' | ||
timeoutInMinutes: 60 | ||
pool: | ||
vmImage: 'macOS-13' | ||
strategy: | ||
matrix: | ||
Python39: | ||
python.version: '3.9' | ||
python.org.version: '3.9.13' | ||
python.installer.name: 'macos11.pkg' | ||
|
||
steps: | ||
|
||
- script: | | ||
installer=python-$(python.org.version)-$(python.installer.name) | ||
url=https://www.python.org/ftp/python/$(python.org.version)/$installer | ||
curl $url -o $installer | ||
sudo installer -pkg $installer -target / | ||
displayName: 'Install Python from python.org' | ||
- script: | | ||
brew install --cask xquartz | ||
brew install flex bison mpich | ||
brew unlink mpich && brew install openmpi | ||
cmake --version | ||
# see https://github.com/BlueBrain/CoreNeuron/issues/817, uninstall libomp until we fix this | ||
# as we are building wheels, we shouldn't enable OpenMP here anyway | ||
brew uninstall --ignore-dependencies libomp || echo "libomp doesn't exist" | ||
displayName: 'Install OSX System Dependencies' | ||
# readline has been manually built with ncurses and MACOSX_DEPLOYMENT_TARGET=10.9 and stored as secure file on Azure. | ||
# See `packaging/python/Dockerfile` for build instructions. | ||
# | ||
# Secure files documentation: | ||
# https://docs.microsoft.com/en-us/azure/devops/pipelines/library/secure-files?view=azure-devops | ||
# NOTE: when uploading new secure files, access must be permitted from the Azure pipeline interface (check message there) | ||
- task: DownloadSecureFile@1 | ||
name: readlineSF | ||
displayName: 'Download readline secure file' | ||
inputs: | ||
secureFile: 'readline7.0-ncurses6.4.tar.gz' | ||
|
||
# 10.14 is required for full C++17 support according to | ||
# https://cibuildwheel.readthedocs.io/en/stable/cpp_standards, but it | ||
# seems that 10.15 is actually needed for std::filesystem::path. | ||
- script: | | ||
export MACOSX_DEPLOYMENT_TARGET=10.15 | ||
export PATH=/usr/local/opt/flex/bin:/usr/local/opt/bison/bin:$PATH | ||
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path) | ||
export NRN_BUILD_FOR_UPLOAD=1 | ||
sudo mkdir -p /opt/nrnwheel/$(uname -m) | ||
sudo tar -zxf $(readlineSF.secureFilePath) --directory /opt/nrnwheel/$(uname -m) | ||
packaging/python/build_wheels.bash osx $(python.version) coreneuron | ||
displayName: 'Build MacOS Wheel' | ||
- template: ci/azure-wheel-test-upload.yml | ||
|
||
|
||
- stage: Final | ||
jobs: | ||
- job: AzureDropURL | ||
pool: | ||
vmImage: 'ubuntu-20.04' | ||
condition: eq(variables['Build.Reason'], 'PullRequest') | ||
steps: | ||
- checkout: none | ||
- script: | | ||
export AZURE_DROP_URL=`curl -v 'https://dev.azure.com/neuronsimulator/nrn/_apis/build/builds/$(Build.BuildId)/artifacts?artifactName=drop' | jq -r '.resource.downloadUrl'` | ||
echo "Setting dropurl to $AZURE_DROP_URL" | ||
echo "##vso[task.setvariable variable=dropurl]$AZURE_DROP_URL" | ||
displayName: 'Resolve Azure drop URL' | ||
- task: GitHubComment@0 | ||
continueOnError: true | ||
inputs: | ||
gitHubConnection: 'neuronsimulator' | ||
repositoryName: '$(Build.Repository.Name)' | ||
comment: | | ||
✔️ $(system.pullRequest.sourceCommitId) -> [Azure artifacts URL]($(dropurl)) |