2018-06-08 18:36:55 +00:00
|
|
|
# https://circleci.com/docs/2.0/
|
|
|
|
|
|
|
|
version: 2
|
|
|
|
workflows:
|
|
|
|
version: 2
|
|
|
|
ci:
|
|
|
|
jobs:
|
|
|
|
- "lint"
|
2018-06-08 19:52:29 +00:00
|
|
|
- "debian-8"
|
|
|
|
- "debian-9"
|
2018-06-13 17:59:52 +00:00
|
|
|
- "centos-7"
|
2018-06-14 14:09:42 +00:00
|
|
|
- "fedora-27"
|
2018-06-08 18:36:55 +00:00
|
|
|
|
|
|
|
jobs:
|
|
|
|
lint:
|
|
|
|
docker:
|
|
|
|
- image: "circleci/python:2"
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- "checkout"
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: "Static-ish code checks"
|
|
|
|
command: |
|
2018-06-08 18:47:00 +00:00
|
|
|
pip install --user tox
|
|
|
|
~/.local/bin/tox -e codechecks
|
2018-06-08 18:58:25 +00:00
|
|
|
|
2018-06-08 20:19:52 +00:00
|
|
|
debian-8: &DEBIAN
|
2018-06-08 18:58:25 +00:00
|
|
|
docker:
|
|
|
|
- image: "debian:8"
|
|
|
|
|
2018-06-13 16:36:51 +00:00
|
|
|
environment:
|
|
|
|
- TAHOE_LAFS_HYPOTHESIS_PROFILE: "ci"
|
|
|
|
|
2018-06-08 18:58:25 +00:00
|
|
|
steps:
|
2018-06-08 20:07:41 +00:00
|
|
|
- run:
|
|
|
|
node: "Install Git"
|
|
|
|
command: |
|
|
|
|
apt-get --quiet update
|
|
|
|
apt-get --quiet --yes install git
|
|
|
|
|
2018-06-08 18:58:25 +00:00
|
|
|
- "checkout"
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: "Bootstrap test environment"
|
2018-06-13 15:31:56 +00:00
|
|
|
working_directory: "/tmp"
|
2018-06-08 18:58:25 +00:00
|
|
|
command: |
|
2018-06-13 15:31:56 +00:00
|
|
|
# Avoid the /nonexistent home directory in nobody's /etc/passwd
|
|
|
|
# entry.
|
|
|
|
usermod --home /tmp/nobody nobody
|
|
|
|
|
|
|
|
# Grant read access to nobody, the user which will eventually try
|
|
|
|
# to test this checkout.
|
|
|
|
mv /root/project /tmp/project
|
|
|
|
|
|
|
|
# Python build/install toolchain wants to write to the source
|
|
|
|
# checkout, too.
|
|
|
|
chown --recursive nobody:nogroup /tmp/project
|
|
|
|
|
2018-06-08 18:58:25 +00:00
|
|
|
apt-get --quiet --yes install \
|
2018-06-13 15:31:56 +00:00
|
|
|
sudo \
|
2018-06-08 18:58:25 +00:00
|
|
|
build-essential \
|
|
|
|
python2.7 \
|
|
|
|
python2.7-dev \
|
|
|
|
libffi-dev \
|
|
|
|
libssl-dev \
|
|
|
|
libyaml-dev \
|
|
|
|
virtualenv
|
2018-06-13 15:31:56 +00:00
|
|
|
|
|
|
|
# Set up the virtualenv as a non-root user so we can run the test
|
|
|
|
# suite as a non-root user. See below.
|
|
|
|
sudo -u nobody virtualenv --python python2.7 /tmp/tests
|
|
|
|
sudo -u nobody /tmp/tests/bin/pip install tox
|
2018-06-08 18:58:25 +00:00
|
|
|
|
|
|
|
- run:
|
|
|
|
name: "Run test suite"
|
2018-06-14 13:45:28 +00:00
|
|
|
command: &RUN_TESTS |
|
2018-06-13 15:31:56 +00:00
|
|
|
# Run the test suite as a non-root user. This is the expected
|
|
|
|
# usage some small areas of the test suite assume non-root
|
|
|
|
# privileges (such as unreadable files being unreadable).
|
|
|
|
#
|
|
|
|
# Also run with /tmp as a workdir because the non-root user won't
|
|
|
|
# be able to create the tox working filesystem state in the source
|
|
|
|
# checkout because it is owned by root.
|
|
|
|
sudo -u nobody /tmp/tests/bin/tox -c /tmp/project/tox.ini --workdir /tmp -e py27
|
2018-06-08 19:52:29 +00:00
|
|
|
|
|
|
|
debian-9:
|
|
|
|
docker:
|
|
|
|
- image: "debian:9"
|
|
|
|
|
2018-06-08 20:19:52 +00:00
|
|
|
<<: *DEBIAN
|
2018-06-13 17:59:52 +00:00
|
|
|
|
|
|
|
|
2018-06-14 14:09:42 +00:00
|
|
|
centos-7: &RHEL_DERIV
|
2018-06-13 17:59:52 +00:00
|
|
|
docker:
|
|
|
|
- image: "centos:7"
|
|
|
|
|
|
|
|
environment:
|
|
|
|
- TAHOE_LAFS_HYPOTHESIS_PROFILE: "ci"
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
node: "Install Git"
|
|
|
|
command: |
|
|
|
|
yum install --assumeyes git
|
|
|
|
|
|
|
|
- "checkout"
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: "Bootstrap test environment"
|
|
|
|
working_directory: "/tmp"
|
|
|
|
command: |
|
|
|
|
# Avoid the /nonexistent home directory in nobody's /etc/passwd
|
|
|
|
# entry.
|
|
|
|
usermod --home /tmp/nobody nobody
|
|
|
|
|
|
|
|
# Grant read access to nobody, the user which will eventually try
|
|
|
|
# to test this checkout.
|
|
|
|
mv /root/project /tmp/project
|
|
|
|
|
|
|
|
# Python build/install toolchain wants to write to the source
|
|
|
|
# checkout, too.
|
|
|
|
chown --recursive nobody:nobody /tmp/project
|
|
|
|
|
|
|
|
yum install --assumeyes \
|
|
|
|
sudo \
|
|
|
|
make automake gcc gcc-c++ \
|
|
|
|
python \
|
|
|
|
python-devel \
|
|
|
|
libffi-devel \
|
|
|
|
openssl-devel \
|
|
|
|
libyaml-devel \
|
|
|
|
python-virtualenv
|
|
|
|
|
|
|
|
# XXX net-tools is actually a Tahoe-LAFS runtime dependency!
|
|
|
|
yum install --assumeyes \
|
|
|
|
net-tools
|
|
|
|
|
|
|
|
# Set up the virtualenv as a non-root user so we can run the test
|
|
|
|
# suite as a non-root user. See below.
|
|
|
|
sudo -u nobody virtualenv --python python2.7 /tmp/tests
|
|
|
|
sudo -u nobody /tmp/tests/bin/pip install tox
|
|
|
|
|
|
|
|
- run:
|
|
|
|
name: "Run test suite"
|
2018-06-14 13:45:28 +00:00
|
|
|
command: *RUN_TESTS
|
2018-06-14 14:09:42 +00:00
|
|
|
|
|
|
|
|
|
|
|
fedora-27:
|
|
|
|
docker:
|
|
|
|
- image: "fedora:27"
|
|
|
|
|
|
|
|
<<: *RHEL_DERIV
|