aboutsummaryrefslogtreecommitdiffstats
path: root/.jenkins/Jenkinsfile-cryptography-wheel-builder
diff options
context:
space:
mode:
Diffstat (limited to '.jenkins/Jenkinsfile-cryptography-wheel-builder')
-rw-r--r--.jenkins/Jenkinsfile-cryptography-wheel-builder127
1 files changed, 127 insertions, 0 deletions
diff --git a/.jenkins/Jenkinsfile-cryptography-wheel-builder b/.jenkins/Jenkinsfile-cryptography-wheel-builder
new file mode 100644
index 00000000..55429ca4
--- /dev/null
+++ b/.jenkins/Jenkinsfile-cryptography-wheel-builder
@@ -0,0 +1,127 @@
+def configs = [
+ [
+ label: 'windows',
+ versions: ['py26', 'py27', 'py33', 'py34', 'py35', 'py36'],
+ ],
+ [
+ label: 'windows64',
+ versions: ['py26', 'py27', 'py33', 'py34', 'py35', 'py36'],
+ ],
+ [
+ label: 'sierra',
+ versions: ['py26', 'py27', 'py34', 'py35', 'py36'],
+ ],
+]
+
+
+def build(version, label) {
+ try {
+ timeout(time: 30, unit: 'MINUTES') {
+ if (label.contains("windows")) {
+ def pythonPath = [
+ py26: "C:\\Python26\\python.exe",
+ py27: "C:\\Python27\\python.exe",
+ py33: "C:\\Python33\\python.exe",
+ py34: "C:\\Python34\\python.exe",
+ py35: "C:\\Python35\\python.exe",
+ py36: "C:\\Python36\\python.exe"
+ ]
+ if (version == "py35" || version == "py36") {
+ opensslPaths = [
+ "windows": [
+ "include": "C:\\OpenSSL-Win32-2015\\include",
+ "lib": "C:\\OpenSSL-Win32-2015\\lib"
+ ],
+ "windows64": [
+ "include": "C:\\OpenSSL-Win64-2015\\include",
+ "lib": "C:\\OpenSSL-Win64-2015\\lib"
+ ]
+ ]
+ } else {
+ opensslPaths = [
+ "windows": [
+ "include": "C:\\OpenSSL-Win32-2010\\include",
+ "lib": "C:\\OpenSSL-Win32-2010\\lib"
+ ],
+ "windows64": [
+ "include": "C:\\OpenSSL-Win64-2010\\include",
+ "lib": "C:\\OpenSSL-Win64-2010\\lib"
+ ]
+ ]
+ }
+ bat """
+ wmic qfe
+ @set PATH="C:\\Python27";"C:\\Python27\\Scripts";%PATH%
+ @set PYTHON="${pythonPath[version]}"
+
+ @set INCLUDE="${opensslPaths[label]['include']}";%INCLUDE%
+ @set LIB="${opensslPaths[label]['lib']}";%LIB%
+ virtualenv -p %PYTHON% .release
+ call .release\\Scripts\\activate
+ pip install wheel virtualenv
+ pip wheel cryptography --wheel-dir=wheelhouse --no-binary cryptography
+ pip install -f wheelhouse cryptography --no-index
+ python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))"
+ """
+ } else if (label.contains("sierra")) {
+ def pythonPath = [
+ py26: "python2.6",
+ py27: "/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7",
+ py34: "/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4",
+ py35: "/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5",
+ py36: "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6",
+ ]
+ ansiColor {
+ sh """#!/usr/bin/env bash
+ set -xe
+ # output the list of things we've installed as a point in time check of how up
+ # to date the builder is
+ /usr/sbin/system_profiler SPInstallHistoryDataType
+
+ # Jenkins logs in as a non-interactive shell, so we don't even have /usr/local/bin in PATH
+ export PATH="/usr/local/bin:\${PATH}"
+ export PATH="/Users/jenkins/.pyenv/shims:\${PATH}"
+
+ printenv
+
+ virtualenv .venv -p ${pythonPath[version]}
+ source .venv/bin/activate
+ pip install -U wheel # upgrade wheel to latest before we use it to build the wheel
+ # -mmacosx-version-min=10.9 can be remove when https://github.com/pyca/cryptography/issues/3635 is resolved
+ CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS="1" LDFLAGS="/usr/local/opt/openssl@1.1/lib/libcrypto.a /usr/local/opt/openssl@1.1/lib/libssl.a" CFLAGS="-I/usr/local/opt/openssl@1.1/include -mmacosx-version-min=10.9" pip wheel cryptography --wheel-dir=wheelhouse --no-binary cryptography
+ pip install -f wheelhouse cryptography --no-index
+ python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: ' + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))"
+ otool -L `find .venv -name '_openssl*.so'`
+ lipo -info `find .venv -name '*.so'`
+ otool -L `find .venv -name '_openssl*.so'` | grep -vG "libcrypto\\|libssl"
+ """
+ }
+ }
+ archiveArtifacts artifacts: "wheelhouse/cryptography*.whl"
+ }
+ } finally {
+ deleteDir()
+ }
+
+}
+
+def builders = [:]
+for (config in configs) {
+ def label = config["label"]
+ def versions = config["versions"]
+
+ for (_version in versions) {
+ def version = _version
+
+ def combinedName = "${label}-${version}"
+ builders[combinedName] = {
+ node(label) {
+ stage(combinedName) {
+ build(version, label)
+ }
+ }
+ }
+ }
+}
+
+parallel builders