# https://circleci.com/docs/2.0/ version: 2 workflows: version: 2 ci: jobs: - "lint" - "debian-8" - "debian-9" - "ubuntu-16.04" - "ubuntu-18.04" - "centos-7" - "fedora-27" - "fedora-28" jobs: lint: docker: - image: "circleci/python:2" steps: - "checkout" - run: name: "Static-ish code checks" command: | pip install --user tox ~/.local/bin/tox -e codechecks debian-8: &DEBIAN docker: - image: "debian:8" environment: &UTF_8_ENVIRONMENT # Tell Hypothesis which configuration we want it to use. - TAHOE_LAFS_HYPOTHESIS_PROFILE: "ci" # Tell the C runtime things about character encoding (mainly to do with # filenames and argv). - LANG: "en_US.UTF-8" steps: - run: node: "Install Git" command: | apt-get --quiet update apt-get --quiet --yes install 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:nogroup /tmp/project apt-get --quiet --yes install \ sudo \ build-essential \ python2.7 \ python2.7-dev \ libffi-dev \ libssl-dev \ libyaml-dev \ virtualenv \ ${EXTRA_PACKAGES} # Set up the virtualenv as a non-root user so we can run the test # suite as a non-root user. See below. sudo --set-home -u nobody virtualenv --python python2.7 /tmp/tests sudo --set-home -u nobody /tmp/tests/bin/pip install tox - run: &RUN_TESTS name: "Run test suite" command: | # 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 --set-home -u nobody /tmp/tests/bin/tox -c /tmp/project/tox.ini --workdir /tmp -e py27 - store_artifacts: &STORE_ARTIFACTS # Despite passing --workdir /tmp to tox above, it still runs trial # in the project source checkout. path: "/tmp/project/_trial_temp/test.log" debian-9: docker: - image: "debian:9" <<: *DEBIAN ubuntu-16.04: <<: *DEBIAN docker: - image: "ubuntu:16.04" environment: <<: *UTF_8_ENVIRONMENT # Necessary for en_US LANG setting. EXTRA_PACKAGES: "language-pack-en" ubuntu-18.04: <<: *DEBIAN docker: - image: "ubuntu:18.04" centos-7: &RHEL_DERIV docker: - image: "centos:7" environment: *UTF_8_ENVIRONMENT 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: *RUN_TESTS - store_artifacts: *STORE_ARTIFACTS fedora-27: docker: - image: "fedora:27" <<: *RHEL_DERIV fedora-28: docker: - image: "fedora:28" <<: *RHEL_DERIV