Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests for version, use conda-build for download/check #13

Merged
merged 12 commits into from
Jan 14, 2019
11 changes: 3 additions & 8 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ install:
ff_ci_pr_build -v --ci "appveyor" "%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%" "%APPVEYOR_BUILD_NUMBER%" "%APPVEYOR_PULL_REQUEST_NUMBER%"
del ff_ci_pr_build.py

# Cywing's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
# Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
- cmd: rmdir C:\cygwin /s /q

# Add path, activate `conda` and update conda.
Expand All @@ -40,14 +40,9 @@ install:

- cmd: set PYTHONUNBUFFERED=1

# Add our channels.
- cmd: conda.exe config --set show_channel_urls true
- cmd: conda.exe config --remove channels defaults
- cmd: conda.exe config --add channels defaults
- cmd: conda.exe config --add channels conda-forge

# Configure the VM.
- cmd: conda.exe install -n root --quiet --yes conda-forge-ci-setup=2
- cmd: conda.exe install -n root -c conda-forge --quiet --yes conda-forge-ci-setup=2
- cmd: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml
- cmd: run_conda_forge_build_setup

# Skip .NET project specific build phase.
Expand Down
22 changes: 22 additions & 0 deletions .azure-pipelines/azure-pipelines-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
jobs:
- job: linux_64
pool:
vmImage: ubuntu-16.04
timeoutInMinutes: 240
strategy:
maxParallel: 8
matrix:
linux_python2.7:
CONFIG: linux_python2.7
linux_python3.6:
CONFIG: linux_python3.6
linux_python3.7:
CONFIG: linux_python3.7
steps:
- script: |
sudo pip install --upgrade pip
sudo pip install setuptools shyaml
displayName: Install dependencies

- script: .azure-pipelines/run_docker_build.sh
displayName: Run docker build
78 changes: 78 additions & 0 deletions .azure-pipelines/azure-pipelines-osx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
jobs:
- job: osx_64
pool:
vmImage: macOS-10.13
timeoutInMinutes: 240
strategy:
maxParallel: 8
matrix:
osx_python2.7:
CONFIG: osx_python2.7
osx_python3.6:
CONFIG: osx_python3.6
osx_python3.7:
CONFIG: osx_python3.7

steps:
# TODO: Fast finish on azure pipelines?
- script: |
echo "Fast Finish"


- script: |
echo "Removing homebrew from Azure to avoid conflicts."
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall > ~/uninstall_homebrew
chmod +x ~/uninstall_homebrew
~/uninstall_homebrew -fq
rm ~/uninstall_homebrew
displayName: Remove homebrew

- script: |
echo "Installing Miniconda"
set -x -e
curl -o $(Build.StagingDirectory)/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
chmod +x $(Build.StagingDirectory)/miniconda.sh
$(Build.StagingDirectory)/miniconda.sh -b -p $(Build.StagingDirectory)/miniconda
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
echo "Setting up Conda environment"
displayName: 'Install miniconda'

- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
conda install -n base -c conda-forge --quiet --yes conda-forge-ci-setup=2
displayName: 'Add conda-forge-ci-setup=2'

- script: |
set -x -e
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
echo "Configuring conda."

setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml

source run_conda_forge_build_setup
conda update --yes --quiet --override-channels -c conda-forge -c defaults --all
env: {
OSX_FORCE_SDK_DOWNLOAD: "1"
}
displayName: Configure conda and conda-build

- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
mangle_compiler ./ ./recipe ./.ci_support/${CONFIG}.yaml
displayName: Mangle compiler

- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml
displayName: Generate build number clobber file

- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --clobber-file ./.ci_support/clobber_${CONFIG}.yaml
displayName: Build recipe


91 changes: 91 additions & 0 deletions .azure-pipelines/azure-pipelines-win.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
jobs:
- job: win_64
pool:
vmImage: vs2017-win2016
timeoutInMinutes: 240
strategy:
maxParallel: 4
matrix:
win_python2.7:
CONFIG: win_python2.7
CONDA_BLD_PATH: D:\\bld\\
win_python3.6:
CONFIG: win_python3.6
CONDA_BLD_PATH: D:\\bld\\
win_python3.7:
CONFIG: win_python3.7
CONDA_BLD_PATH: D:\\bld\\
steps:
# TODO: Fast finish on azure pipelines?
- script: |
ECHO ON


- script: |
choco install vcpython27 -fdv -y --debug
condition: contains(variables['CONFIG'], 'vs2008')
displayName: Install vcpython27.msi (if needed)

# Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
# - script: rmdir C:\cygwin /s /q
# continueOnError: true


- powershell: |
Set-PSDebug -Trace 1

$batchcontent = @"
ECHO ON
SET vcpython=C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0

DIR "%vcpython%"

CALL "%vcpython%\vcvarsall.bat" %*
"@

$batchDir = "C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC"
$batchPath = "$batchDir" + "\vcvarsall.bat"
New-Item -Path $batchPath -ItemType "file" -Force

Set-Content -Value $batchcontent -Path $batchPath

Get-ChildItem -Path $batchDir

Get-ChildItem -Path ($batchDir + '\..')

condition: contains(variables['CONFIG'], 'vs2008')
displayName: Patch vs2008 (if needed)

- task: CondaEnvironment@1
inputs:
packageSpecs: 'python=3.6 conda-build conda conda-forge::conda-forge-ci-setup=2' # Optional
installOptions: "-c conda-forge"
updateConda: false
displayName: Install conda-build and activate environment

- script: set PYTHONUNBUFFERED=1

# Configure the VM
- script: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml

# Configure the VM.
- script: |
run_conda_forge_build_setup
displayName: conda-forge build setup
run_conda_forge_build_setup

# Special cased version setting some more things!
- script: |
conda.exe build recipe -m .ci_support\%CONFIG%.yaml --quiet
displayName: Build recipe (vs2008)
env: {
VS90COMNTOOLS: "C:\\Program Files (x86)\\Common Files\\Microsoft\\Visual C++ for Python\\9.0\\VC\\bin",
}
condition: contains(variables['CONFIG'], 'vs2008')

- script: |
conda.exe build recipe -m .ci_support\%CONFIG%.yaml --quiet
displayName: Build recipe
condition: not(contains(variables['CONFIG'], 'vs2008'))


38 changes: 38 additions & 0 deletions .azure-pipelines/build_steps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash

# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here
# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent
# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
# benefit from the improvement.

set -xeuo pipefail
export PYTHONUNBUFFERED=1
export FEEDSTOCK_ROOT=/home/conda/feedstock_root
export RECIPE_ROOT=/home/conda/recipe_root
export CI_SUPPORT=/home/conda/feedstock_root/.ci_support
export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml"

cat >~/.condarc <<CONDARC

conda-build:
root-dir: /home/conda/feedstock_root/build_artifacts

CONDARC

conda install --yes --quiet conda-forge-ci-setup=2 conda-build -c conda-forge

# set up the condarc
setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

# A lock sometimes occurs with incomplete builds. The lock file is stored in build_artifacts.
conda clean --lock

run_conda_forge_build_setup# make the build number clobber
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml"



touch "/home/conda/feedstock_root/build_artifacts/conda-forge-build-done-${CONFIG}"
56 changes: 56 additions & 0 deletions .azure-pipelines/run_docker_build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env bash

# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here
# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent
# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
# benefit from the improvement.

set -xeuo pipefail

THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
PROVIDER_DIR="$(basename $THISDIR)"

FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;)
RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe"

docker info

# In order for the conda-build process in the container to write to the mounted
# volumes, we need to run with the same id as the host machine, which is
# normally the owner of the mounted volumes, or at least has write permission
export HOST_USER_ID=$(id -u)
# Check if docker-machine is being used (normally on OSX) and get the uid from
# the VM
if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then
export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u)
fi

ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts"

if [ -z "$CONFIG" ]; then
echo "Need to set CONFIG env variable"
exit 1
fi

pip install shyaml
DOCKER_IMAGE=$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil )

mkdir -p "$ARTIFACTS"
DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}"
rm -f "$DONE_CANARY"
# Not all providers run with a real tty. Disable using one
DOCKER_RUN_ARGS=" "


docker run ${DOCKER_RUN_ARGS} \
-v "${RECIPE_ROOT}":/home/conda/recipe_root:ro,z \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \
-e CONFIG \
-e BINSTAR_TOKEN \
-e HOST_USER_ID \
$DOCKER_IMAGE \
bash \
/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh

# verify that the end of the script was reached
test -f "$DONE_CANARY"
6 changes: 4 additions & 2 deletions .circleci/build_steps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ conda-build:

CONDARC

conda install --yes --quiet conda-forge::conda-forge-ci-setup=2 conda-build
conda install --yes --quiet conda-forge-ci-setup=2 conda-build -c conda-forge

# set up the condarc
setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
Expand All @@ -33,8 +33,10 @@ source run_conda_forge_build_setup
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" --quiet
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml"


upload_package "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"


touch "/home/conda/feedstock_root/build_artifacts/conda-forge-build-done-${CONFIG}"
14 changes: 10 additions & 4 deletions .circleci/run_docker_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

set -xeuo pipefail

THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
PROVIDER_DIR="$(basename $THISDIR)"

FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;)
RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe"

Expand Down Expand Up @@ -35,16 +38,19 @@ DOCKER_IMAGE=$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-v
mkdir -p "$ARTIFACTS"
DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}"
rm -f "$DONE_CANARY"
# Enable running in interactive mode attached to a tty
DOCKER_RUN_ARGS=" -it "


docker run -it \
-v "${RECIPE_ROOT}":/home/conda/recipe_root \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root \
docker run ${DOCKER_RUN_ARGS} \
-v "${RECIPE_ROOT}":/home/conda/recipe_root:ro,z \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \
-e CONFIG \
-e BINSTAR_TOKEN \
-e HOST_USER_ID \
$DOCKER_IMAGE \
bash \
/home/conda/feedstock_root/.circleci/build_steps.sh
/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh

# verify that the end of the script was reached
test -f "$DONE_CANARY"
Loading