# 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" - "magic-folder-ubuntu-14.04" # - "deprecations" jobs: lint: docker: - image: "circleci/python:2" steps: - "checkout" - run: name: "Install tox" command: | pip install --user tox - run: name: "Static-ish code checks" command: | ~/.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" # Select a tox environment to run for this job. TAHOE_LAFS_TOX_ENVIRONMENT: "coverage" # Additional arguments to pass to tox. TAHOE_LAFS_TOX_ARGS: "" steps: - run: &INSTALL_GIT node: "Install Git" command: "${CIRCLE_WORKING_DIRECTORY}/.circleci/install-git.sh" - "checkout" - run: &BOOTSTRAP_TEST_ENVIRONMENT name: "Bootstrap test environment" command: "${CIRCLE_WORKING_DIRECTORY}/.circleci/bootstrap-test-environment.sh" - run: &SETUP_VIRTUALENV name: "Setup virtualenv" # pip cannot install packages if the working directory is not # readable. working_directory: "/tmp" command: "${CIRCLE_WORKING_DIRECTORY}/.circleci/setup-virtualenv.sh" - run: &RUN_TESTS name: "Run test suite" # Something about when it re-uses an existing environment blows up # if the working directory is not readable. working_directory: "/tmp" command: "${CIRCLE_WORKING_DIRECTORY}/.circleci/setup-virtualenv.sh" - store_artifacts: &STORE_TEST_LOG # Despite passing --workdir /tmp to tox above, it still runs trial # in the project source checkout. path: "/tmp/project/_trial_temp/test.log" - store_artifacts: &STORE_OTHER_ARTIFACTS # Store any other artifacts, too. This is handy to allow other jobs # sharing most of the definition of this one to be able to # contribute artifacts easily. path: "/tmp/artifacts" - run: &SUBMIT_COVERAGE name: "Submit coverage results" command: | /tmp/tests/bin/codecov debian-9: <<: *DEBIAN docker: - image: "debian:9" deprecations: <<: *DEBIAN docker: - image: "debian:9" environment: <<: *UTF_8_ENVIRONMENT # Select the deprecations tox environments. TAHOE_LAFS_TOX_ENVIRONMENT: "deprecations,upcoming-deprecations" # Put the logs somewhere we can report them. TAHOE_LAFS_WARNINGS_LOG: "/tmp/artifacts/deprecation-warnings.log" 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" environment: <<: *UTF_8_ENVIRONMENT # Necessary for automatic address detection/assignment. EXTRA_PACKAGES: "iproute2" 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 - run: *SETUP_VIRTUALENV - run: *RUN_TESTS - store_artifacts: *STORE_TEST_LOG - store_artifacts: *STORE_OTHER_ARTIFACTS - run: *SUBMIT_COVERAGE fedora-27: <<: *RHEL_DERIV docker: - image: "fedora:27" fedora-28: <<: *RHEL_DERIV docker: - image: "fedora" magic-folder-ubuntu-14.04: machine: enabled: true image: "circleci/classic:201711-01" environment: <<: *UTF_8_ENVIRONMENT TAHOE_LAFS_TOX_ARGS: "-- allmydata.test.test_magic_folder" # Unfortunately, duplicate all the steps here but run with `sudo`. steps: - run: <<: *INSTALL_GIT command: "sudo ${CIRCLE_WORKING_DIRECTORY}/.circleci/install-git.sh" - "checkout" - run: <<: *BOOTSTRAP_TEST_ENVIRONMENT command: "${CIRCLE_WORKING_DIRECTORY}/.circleci/bootstrap-test-environment.sh" - run: <<: *SETUP_VIRTUALENV command: "sudo ${CIRCLE_WORKING_DIRECTORY}/.circleci/setup-virtualenv.sh" - run: <<: *RUN_TESTS command: "sudo ${CIRCLE_WORKING_DIRECTORY}/.circleci/setup-virtualenv.sh" - store_artifacts: *STORE_TEST_LOG - store_artifacts: *STORE_OTHER_ARTIFACTS - run: *SUBMIT_COVERAGE