DevOps tools
Project description
devops-driver
Devops-driver is a collection of tools to help streamline developer's experience and gain insights into various processes.
Tools
devopsdriver is a toolbox that helps to quickly put together reports. Some of the items in the toolbox are:
- Settings: store data, constants, settings, keys, tokens, etc. both in and out of the repository
- send_email: send emails over SMTP (including SSL), using
Settings
to store credentials - Template: Simplify generating reports using
.mako
templates - Azure.workitem: Search for and inspect Azure DevOps work items
Example use-case
To allow seamless work in both pipelines as well as in the development environment, the Settings
object gives you access to common settings among multiple scripts, secrets, and configuration constants in a way the helps keep secrets out of the repository but runs just as well in the pipeline as your machine.
Say you want a pipeline that looks for User Stories that are newer than 3 days and send out an email.
<platform dependent path>/devopsdriver.yml
smtp:
sender: JohnDoe@company.com
secrets:
azure.token: azure/token
smtp.password: smtp/password
This file is in a global place (location varies by OS) and stores information that you may not want in your repository or is specific to development.
Platform | Global Directory |
---|---|
Windows | %APPDATA%\ |
Linux | ~/.devopsdriver/ |
macOS | ~/Library/Preferences/ |
The secrets
are extra sensative and are stored in the OS keychain.
Set secrets in the keychain
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install devopsdriver
$ settings --secrets
secret: smtp.password key: smtp/password
smtp.password (smtp/password): ****
secret: azure.token key: azure/token
smtp.password (azure/token): ****
$ settings --secrets
secret: azure.token key: azure/token
Value set
secret: smtp.password key: smtp/password
Value set
$
The first call to settings
will look for every secret and check if they are already set in the keychain.
For any secret that has not been set in the keychain, you will be prompted to enter the password to store.
The second call to settings
will verify that all the values have been set in the keychain.
devopsdriver.yml
azure:
url: https://dev.azure.com/MyCompany
smtp:
server: smtp.company.com
port: 465
cli:
azure.token: --azure-token
smtp.password: --smtp-password
smtp.sender: --smtp-sender
env:
azure.token: AZURE_TOKEN
smtp.sender: SMTP_SENDER
smtp.password: SMTP_PASSWORD
This file lives next to your scripts in your repository.
These are settings that would be used by everyone, including the pipeline.
The cli
and env
map command line switches and environment variables to those keys.
This allows for many options for setting values depending on your needs.
new_stories.yml
scrum masters:
- JohnDoe@company.com
- JaneDoe@company.com
This file is specific to your script and not shared. These are values that you want to use in your script but have them here for easy adjustment.
new_stories.html.mako
<h1>Stories created in the last ${days} days</h1>
<ul>
% for story in stories:
<li>${story.id} ${story.title}</li>
% endfor
</ul>
This file is the template for the email body.
new_stories.py
from datetime import date, timedelta
from devopsdriver import Settings, Azure, send_email, Template
from devopsdriver.azdo import Wiql, GreaterThan
# Parse all the settings from files, command line, environment, and keychain
settings = Settings(__file__).key("secrets").cli("cli").env("env")
# Create connection to Azure Devops
azure = Azure(settings)
# Get User Stories created in the last three days
three_days_ago = date.today() - timedelta(days=settings["days of recent stories"])
new_stories = azure.workitem.find(
Wiql().where(GreaterThan("CreatedDate", three_days_ago))
)
# Generate html body of the email
message = Template(__file__).render(
days=settings["days of recent stories"],
stories=new_stories,
)
# Send the email
send_email(
recipients=settings["scrum masters"],
subject=f'Stories created in the last {settings["days of recent stories"]} days',
html_body=message,
settings=settings,
)
The email sent
From: JohnDoe@company.com
To: JohnDoe@company.com, JaneDoe@company.com
Subject: Stories created in the last 3 days
Stories created in the last 3 days
- 745 Needs a preprocessing step that makes it case insensitive
- 749 Create GitHub action to automate process
- 750 Create GitHub action to automate process
- 751 Test
- 752 Feedback Capture
- 753 draft doc history retrieval method
- 754 frontend - store to schema
- 755 Transfer job to production. Setup migrations to move to production
- 756 Query subscription status from App
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
Built Distribution
File details
Details for the file devopsdriver-0.1.48.tar.gz
.
File metadata
- Download URL: devopsdriver-0.1.48.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1aab2b06b4d09737024f3d12cb8c451f43ec8f1b7041d093e09e99456031571e |
|
MD5 | b1c1df077650ad335b91b89eb2dbe3d5 |
|
BLAKE2b-256 | aa01658eabc85c0f79d28d3b4a9457259634524c23c88973520223aa1c58312a |
File details
Details for the file devopsdriver-0.1.48-py3-none-any.whl
.
File metadata
- Download URL: devopsdriver-0.1.48-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 571689922dc23e4fbff17e818288589838762d488b4d683f6d1171e88c3bf601 |
|
MD5 | afc98dbd6207795c95f477e29e21fc95 |
|
BLAKE2b-256 | 537ceeab82d2fc8ac0224f1acf7e271b588db08b73cfb45dd374fc18a2dc7cdc |