Jenkins Utils
Project description
Abstract
Implements some jenkins utils in python way.
Notes
jenkins-utils does not support plain-credentials, ssh-credentials plugins, so there’s no option to encrypt/decrypt these data yet.
Requirements
Python 3.4+
pycrypto (non windows systems)
pycryptodomex (windows)
Usage
Currently there’s encrypt/decrypt operations implemented and gathered in convenient and python developer friendly form.
As an example you an decrypt (or encrypt) message using Jenkins’s master and hudson secret keys:
$ python invoke.py --master-key master.key --hudson-secret-key hudson.util.Secret \
--action decrypt "{AQAAABAAAAAgd+820Q6QR4ABkf3JpXHacuO3zdj11o8JD/6VIJi8XjS9GJJyWquIYbNokyKKsIfN}"
this is simple text to encrypt
$ python invoke.py --master-key master.key --hudson-secret-key hudson.util.Secret \
--aes-type cbc --action encrypt "this is simple text to encrypt"
{AQAAABAAAAAgfb9K8Kaq716l8SwGDqEFMRzm/3ynYDK7IsfI4C7BlVyMIlP/5JGfYK1n1Nc10VoD}
$
Advanced use
reader.py
#!/usr/bin/env python3
import sys
import base64
import argparse
from lxml import etree
from jenkins.utils import Secret
def decrypt(opts):
master_key = open(opts.master_key, 'rb').read()
hudson_secret_key = open(opts.hudson_key, 'rb').read()
secret = Secret(
master_key=master_key, hudson_secret_key=hudson_secret_key
)
credentials = etree.fromstring(
open(opts.credentials, 'rb').read()
)
for node in credentials.xpath('//com.cloudbees.plugins.credentials.'
'impl.UsernamePasswordCredentialsImpl'):
username, *_ = node.xpath('./username/text()')
password_encoded, *_ = node.xpath('./password/text()')
password = base64.decodebytes(password_encoded.encode('utf-8'))
print(
"Encrypted (username:password): ({}:{})".format(
username, secret.decrypt(password)
)
)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--credentials', dest='credentials',
required=True, help='jenkins credentials.xml file')
parser.add_argument('-m', '--master-key', dest='master_key',
help='jenkins secrets master.key file', required=True)
parser.add_argument('-H', '--hudson-secret-key', dest='hudson_key',
help='jenkins secrets hudson.util.Secret file')
options = parser.parse_args()
sys.exit(decrypt(options))
if __name__ == '__main__':
main()
$ python reader.py -c credentials.xml -m master.key -H hudson.util.Secret
Encrypted (username:password): (scm-bot:W9CA6qTajV)
Encrypted (username:password): (artifactory-bot:vB9V9BtPN4)
Encrypted (username:password): (git-bot:V32c5S8TnHCvmfr)
... and so on
References
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jenkins-utils-0.1.2.tar.gz
(9.4 kB
view details)
Built Distribution
File details
Details for the file jenkins-utils-0.1.2.tar.gz
.
File metadata
- Download URL: jenkins-utils-0.1.2.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92fef0fd802590102132065e7a8729d2de715b5de297b5fc111b5ce93bc59f3b |
|
MD5 | 76cdc4e037ba6b7e039e52516252b386 |
|
BLAKE2b-256 | 6b2779c2447c6ce83a57a49c5cacc995ca781ce2fb5b9dc2801a4639f33061b7 |
File details
Details for the file jenkins_utils-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: jenkins_utils-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0130a0fa3269021edad94a06835e3be93b483ba7967724b8c8003fd1ceb09291 |
|
MD5 | 5c2b549deea1ec0efd11f445efedef36 |
|
BLAKE2b-256 | 2b075c3939ebf0e6b37bffd8fe284f0afeb5cacc7813380b1fdc4d21b363015c |