Skip to content
This repository has been archived by the owner on Sep 1, 2023. It is now read-only.

Commit

Permalink
DEVOPS-387: Move contributor validation to circleci.
Browse files Browse the repository at this point in the history
  • Loading branch information
lscheinkman committed Nov 7, 2018
1 parent 50c5fd0 commit 6129db6
Show file tree
Hide file tree
Showing 3 changed files with 182 additions and 46 deletions.
121 changes: 121 additions & 0 deletions .circleci/config.yml
@@ -0,0 +1,121 @@
version: 2
jobs:
validate-contributor:
machine: true
steps:
- checkout
- run:
name: Validate contributor license
command: ci/circle/validate-contributor.sh

build-and-test-osx:
macos:
xcode: '8.3.3'
working_directory: ~/numenta/nupic
parallelism: 1
environment:
XCODE_SCHEME: nupic
XCODE_WORKSPACE: nupic
ARCHFLAGS: "-arch x86_64"
PYTHONPATH: "$HOME/Library/Python/2.7/lib/python/site-packages"
PYBIN: "$HOME/Library/Python/2.7/bin"

steps:
# Machine setup
- run:
name: Make sure to use OS X in CircleCI Web UI
command: |
if [[ "$OSTYPE" != "darwin"* ]]; then
echo "Must set option to use OS X in CircleCI Web UI" && exit 1;
fi
- run: sudo systemsetup -settimezone 'GMT'
- run:
name: Restoring system python
command: |
brew update
brew uninstall python
curl https://bootstrap.pypa.io/get-pip.py | python - --user
echo 'export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> $BASH_ENV
- checkout

# Dependencies
# Restore the dependency cache
- restore_cache:
keys:
# This branch if available
- v1-dep-{{ .Branch }}-
# Default branch if not
- v1-dep-master-
# Any branch if there are none on the default branch - this should be unnecessary if you have your default branch configured correctly
- v1-dep-

- run:
name: Install dependencies
command: |
pip install --upgrade --user --ignore-installed setuptools setuptools-scm wheel
pip install --no-cache-dir --user -r requirements.txt --verbose || exit
brew install mysql@5.7
brew tap homebrew/services
brew tap homebrew/services
brew services start mysql@5.7
# Save dependency cache
- save_cache:
key: v1-dep-{{ .Branch }}-{{ epoch }}
paths:
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.bundle
- ~/.go_workspace
- ~/.gradle
- ~/.cache/bower

# Build
- run:
name: Building wheel
environment:
VERBOSE: 1
command: python setup.py bdist_wheel

# Test
- run:
name: Running python tests
command: |
mkdir test_reports
pip install --user --no-index --find-links=`pwd`/dist/ nupic
python setup.py test --pytest-args="--junitxml=test_reports/py_test_report.xml --verbose --boxed --cov nupic --cov-report html unit integration"
environment:
NTA_CONF_PROP_nupic_cluster_database_host: 127.0.0.1

- store_test_results:
path: test_reports
- store_artifacts:
path: dist

deploy-s3:
machine: true
steps:
- attach_workspace:
at: dist
- run:
name: Deploying to S3
command: ci/circle/deploy_s3-osx.sh

workflows:
version: 2
build-test-deploy:
jobs:
- validate-contributor
- build-and-test-osx:
requires:
- validate-contributor
- deploy-s3:
requires:
- build-and-test-osx
filters:
branches:
only: master
61 changes: 61 additions & 0 deletions ci/circle/validate-contributor.sh
@@ -0,0 +1,61 @@
#!/bin/bash
# ----------------------------------------------------------------------
# Numenta Platform for Intelligent Computing (NuPIC)
# Copyright (C) 2018, Numenta, Inc. Unless you have purchased from
# Numenta, Inc. a separate commercial license for this software code, the
# following terms and conditions apply:
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Affero Public License for more details.
#
# You should have received a copy of the GNU Affero Public License
# along with this program. If not, see http://www.gnu.org/licenses.
#
# http://numenta.org/licenses/
# ----------------------------------------------------------------------

set -o errexit

# Download latest contributors list
curl http://staging.numenta.org/resources/contributors.csv -o contributors.csv

# Checks if the given user is a valid contributor
# parameters:
# 1. Name
# 2. Email
function isValidContributor() {

# Validate name
if [ "$(cut -d, -f1 ./contributors.csv | grep "$1")" ]; then
return 0
fi

# Validate email
if [ "$(cut -d, -f3 ./contributors.csv | grep "$2")" ]; then
return 0
fi

return 1
}

# Get last commiter's name and email
SHA=$(git rev-list --no-merges -1 HEAD)
NAME=$(git log -n 1 --pretty=format:%an ${SHA})
EMAIL=$(git log -n 1 --pretty=format:%ae ${SHA})

# Validate contributor
if isValidContributor "${NAME}" "${EMAIL}"; then
echo "${NAME} signed the Contributor License"
exit 0
fi

# Not Found
echo "${NAME} <${EMAIL}> must sign the Contributor License (http://numenta.org/licenses/cl/)"
exit 1

46 changes: 0 additions & 46 deletions circle.yml

This file was deleted.

0 comments on commit 6129db6

Please sign in to comment.