summaryrefslogtreecommitdiffstats
path: root/.circleci
diff options
context:
space:
mode:
Diffstat (limited to '.circleci')
-rw-r--r--.circleci/config.yml107
1 files changed, 107 insertions, 0 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..7214201
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,107 @@
+version: 2.1
+
+
+orbs:
+ orb: invocations/orb@1.3.1
+
+
+jobs:
+ sdist-test-suite:
+ executor:
+ name: orb/default
+ version: "3.6"
+ steps:
+ - orb/setup
+ - run: inv release.build --no-wheel --directory .
+ - run: |
+ cd dist
+ tar xzvf *.tar.gz
+ rm -v *.tar.gz
+ cd paramiko-*
+ pip install -e .
+ inv -e test
+ - orb/debug
+
+ kerberos:
+ executor:
+ name: orb/default
+ version: "3.6"
+ steps:
+ - orb/setup
+ # Required to actually see all of universe/multiverse :(
+ - run: sudo apt update
+ # System reqs to install/build gssapi c-ext & friends (who only
+ # appear to offer wheels for Windows)
+ - run: sudo apt install -y libkrb5-dev krb5-admin-server krb5-kdc
+ # Our gssapi-supporting flavor, eg gssapi, pyasn1 etc
+ - run: pip install -e '.[gssapi]'
+ # Test-only deps for Kerberos (if they are importable it triggers
+ # running the kerberos tests instead of skipping them)
+ - run: pip install k5test
+ # Do the thing, win the points!
+ - run: inv test
+ - orb/debug
+
+ # TODO: move to orb, rub on other projects too
+ spellcheck:
+ executor:
+ name: orb/default
+ version: "3.6"
+ steps:
+ - orb/setup
+ - run: codespell
+ - orb/debug
+
+
+workflows:
+ main:
+ jobs:
+ # The basics
+ - orb/lint:
+ name: Lint
+ - orb/format:
+ name: Style check
+ - spellcheck:
+ name: Spellcheck
+ # Main test run, w/ coverage, and latest-supported cryptography
+ - orb/coverage:
+ name: Test
+ # Non-coverage runs w/ other crypto versions.
+ # (Phrased as 2-dimensional matrix but 3.6 only for now to save credits)
+ - orb/test:
+ name: Test << matrix.version >> w/ << matrix.pip-overrides >>
+ matrix:
+ parameters:
+ version: ["3.6"]
+ # TODO: I don't see a nicer way to do this that doesn't require
+ # making the orb know too much about its client code...
+ # TODO: the upper end of this needs to change and/or grow more
+ # cells, periodically
+ # TODO: see if there's a non shite way to use bucketing here,
+ # somewhere between yaml, pip and bash all escapes get fucky
+ pip-overrides: ["cryptography==3.3.2", "cryptography==39.0.0"]
+ # Kerberos tests. Currently broken :(
+ #- kerberos:
+ # name: Test 3.6 w/ Kerberos support
+ # # No point testing k5 if base tests already fail
+ # requires: ["Test 3.6 (w/ coverage, latest crypto)"]
+ - orb/test-release:
+ name: Release test
+ # Ensure test suite is included in sdist & functions appropriately
+ - sdist-test-suite:
+ name: Test within sdist
+ requires:
+ - "Test"
+ - "Release test"
+ # Test other interpreters if main passed
+ - orb/test:
+ name: Test << matrix.version >>
+ requires: ["Test"]
+ matrix:
+ parameters:
+ version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+ # Test doc building if main test suite passed (no real reason to spend
+ # all those credits if the main tests would also fail...)
+ - orb/docs:
+ name: "Docs"
+ requires: ["Test"]