Automation Tools
As an engineering leader, time is your scarcest resource. Any task you do more than a couple of times is a candidate for automation — so before you grind through it again, ask whether a tool could do it for you.
Below is a high-level tour of the automation tools I reach for most, with concrete recipes. The examples use the free online REST API at jsonplaceholder.typicode.com, so you can run them as-is.
curl
curl is a command-line tool for getting or sending data — including files — using URL syntax. Most machines already have it. To check, open a terminal and run curl --help.
A few recipes worth memorizing:
# Pull a response straight into the terminal
curl https://jsonplaceholder.typicode.com/posts/1
# Download a response into a file (then read it with cat)
curl -o test.txt https://jsonplaceholder.typicode.com/posts
cat test.txt
# Send data with a POST
curl --data "title=Hello&body=Hello world" https://jsonplaceholder.typicode.com/posts
# Update data with a PUT
curl -X PUT -d "title=Hello" https://jsonplaceholder.typicode.com/posts/3
# Delete data with a DELETE
curl -X DELETE https://jsonplaceholder.typicode.com/posts/3
# Authenticate on routes that require it
curl -u carrie:12345 https://example.com
# Follow redirects (http://google.com → https://www.google.com)
curl -L http://google.com
# Upload / download a file over FTP
curl -u name@example.com:12345! -T hello.txt ftp://ftp.example.com
curl -u name@example.com:12345! -O ftp://ftp.example.com/hello.txtA couple of flags worth knowing:
-X(or--request) specifies the HTTP request method.-d(or--data) sends data in a POST request. There are more examples here.
Pulling stats from Jira or GitHub
You can use curl to pull stats out of GitHub or Jira when a proper tool isn’t available. That said, try first to buy something off the shelf — a tool like Jellyfish’s Team Health already joins Jira and GitHub data in a meaningful UX, and your time is better spent elsewhere.
For Jira, create a Personal Access Token (PAT) on the API tokens page, then use it directly:
curl --request GET \
--url 'https://your-domain.atlassian.net/rest/api/3/issue/{issueIdOrKey}' \
--user 'email@example.com:<api_token>' \
--header 'Accept: application/json'Or, more compactly, piping through jq -C for colorful JSON:
curl -u email@example.com:<api_token> https://your-domain.atlassian.net/rest/api/3/issue/FAM-493 | jq -CIf you want to use that token in code rather than on the command line, you’ll need to Base64-encode it. For more ideas, browse this collection of Jira shell scripts.
CLIs
Command-line interfaces are a clean way to script against third-party tools. The GitHub CLI is a great example — its full command reference is here.
First, authenticate. The docs cover gh auth login --with-token, including reading a token from a file. For automation inside a pipeline, this post on gh auth in GitHub Actions walks through the options.
gh auth login --with-token < token.txt
curl -H "Authorization: Bearer $GH_TOKEN" \
-s "https://api.github.com/search/issues?q=type:pr+author:$AUTHOR+user:KonaCoder+created:>=2022-07-01" | jq '.total_count'What’s happening in that second command:
-s(or--silent) disables the progress meter.-H(or--header) adds an extra header to the request.| jqpretty-prints the JSON, which makes it readable — no more pasting output into a text editor to format it. Learnjqfrom its manual or this helpful walkthrough.- Appending
'.total_count'narrows the output to just that one key.
GitHub Actions
GitHub Actions lets you build automation right into your pipeline — for example, labeling PRs based on the number of files and lines changed.
Using the Pull Request Size Labelling action, drop a workflow file at .github/workflows/pr_size_labeling.yml:
name: "Pull Request Size Labelling"
on:
pull_request:
types:
- opened
- reopened
- synchronize
jobs:
addLabels:
runs-on: ubuntu-latest
steps:
- uses: JoshwJB/pull-request-size-labelling-probot@v1.2.1
env:
GITHUB_TOKEN: ${{ secrets.API_CALLS_TOKEN }}Now every PR gets a size label automatically — which gives you a concrete, data-backed way to coach engineers toward smaller, more iterative pull requests.
Google tools
You can automate a surprising amount inside Google Workspace.
From Google Docs or Sheets, open Extensions → Apps Script to build reusable tasks. For example, here’s a Jira REST API call inside an Apps Script for Google Sheets.
In Google Docs, typing @ exposes a wealth of smart chips and building blocks:
@dateinserts a date chip@nameinserts a person chip@titleOfMeeting+ Tab creates meeting notes for the selected event
For something more advanced, you can build a Google Apps Script web app to securely pass in a token when you need to share the automation with others.
Ansible
Ansible is an open-source, command-line IT automation tool written in Python. It can configure systems, deploy software, and orchestrate workflows for application deployment, system updates, and more — a good way to demonstrate value and deliver real efficiencies for your organization.
Terraform
Terraform lets you automate infrastructure on any cloud.
One management-friendly use case: define consistent Datadog monitors across teams so observability isn’t a snowflake per squad. Datadog’s own guide to managing Datadog with Terraform shows how.
📚 Go Deeper
Books
- Automate the Boring Stuff with Python — Al SweigartThe friendliest on-ramp to scripting away repetitive work.
Tools
- GitHub Actions documentationOfficial reference for building automation into your pipeline.
- ZapierNo-code glue between tools when you don't want to write a script.