Skip to content

Commit

Permalink
Put back azure pipeline to compare
Browse files Browse the repository at this point in the history
  • Loading branch information
JCGoran committed Feb 12, 2025
1 parent fdc7de8 commit 841c757
Showing 1 changed file with 156 additions and 0 deletions.
156 changes: 156 additions & 0 deletions azure-pipelines.yml
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))

0 comments on commit 841c757

Please sign in to comment.