Repository navigation
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
Β·384 lines (281 loc) Β· 14.8 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
Β·384 lines (281 loc) Β· 14.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2025 The Linux Foundation
set -euo pipefail
output_file="README.md"
graph_out="graph.png"
api_endpoint="https://api.github.com/graphql"
email="askb23@gmail.com"
linkedin="abelur"
twitter="askb23"
keybase="askb"
pop_repos_q='
query {
viewer {
repositories(
first: 5,
isFork: false,
orderBy: {field: STARGAZERS, direction: DESC},
privacy: PUBLIC
) {
nodes {
name
url
stargazerCount
description
}
}
}
}
'
langs_q='
query {
viewer {
topRepositories(first: 100, orderBy: {field: STARGAZERS, direction: ASC}) {
nodes {
languages(first: 2) {
nodes {
name
}
}
}
}
}
}
'
starred_q='
query {
viewer {
starredRepositories(
first: 5,
orderBy: {field: STARRED_AT, direction: DESC}
) {
nodes {
name
url
owner {
login
}
description
}
}
}
}
'
load_dotenv() {
local dotenv=./.env
if [ -e "$dotenv" ]; then
# shellcheck source=/dev/null
. "$dotenv"
echo ".env loaded"
fi
# Check if ACCESS_TOKEN is set (from env or .env)
if [ -z "${ACCESS_TOKEN:-}" ]; then
echo "ERROR: ACCESS_TOKEN not set" >&2
exit 1
fi
}
perform_request() {
local q=$1
local filter=$2
local processed
processed=$(echo "$q" | perl -pe 's/\n/\\n/g' | perl -pe 's/"/\\"/g')
local req="{\"query\": \"$processed\"}"
local result
result=$(curl -s -H "Authorization: bearer $ACCESS_TOKEN" -X POST \
-d "$req" "$api_endpoint")
sleep 0.1
echo "$result" | jq -c -r "$filter"
}
pop_repos() {
local data
data=$(perform_request "$pop_repos_q" '.data.viewer.repositories.nodes[]')
local result=""
for obj in $data; do
local name url desc stars
name=$(printf '%s' "$obj" | jq -r '.name')
url=$(printf '%s' "$obj" | jq -r '.url')
desc=$(printf '%s' "$obj" | jq -r '.description // "No description"')
stars=$(printf '%s' "$obj" | jq -r '.stargazerCount')
result+="| [$name]($url) | $desc | β $stars |"$'\n'
done
echo "$result"
}
languages() {
local data
data=$(perform_request "$langs_q" \
'.data.viewer.topRepositories.nodes[].languages.nodes[].name')
data=$(echo "$data" | tr -d '[:blank:]' | sort | uniq -c | sort -nr)
data=$(echo "$data" | tr -d '[:digit:][:blank:]')
data=$(echo "$data" | perl -pe 's/\n/ β’ /g' | sed 's/ β’ $//')
echo "$data"
}
starred() {
local data
data=$(perform_request "$starred_q" '.data.viewer.starredRepositories.nodes[]')
local result=""
for obj in $data; do
local name url owner desc
name=$(echo "$obj" | jq -r '.name')
url=$(echo "$obj" | jq -r '.url')
owner=$(echo "$obj" | jq -r '.owner.login')
desc=$(echo "$obj" | jq -r '.description // "No description"' | cut -c1-60)
result+="- [$owner/$name]($url) - $desc"$'\n'
done
echo "$result"
}
plot_contributions() {
if command -v graph &> /dev/null; then
graph contributions.csv -f '' --fontsize 7 --width 3 --marker '' \
--style='-,-' --xscale 5 -o "$1"
fi
}
load_dotenv
langs=$(languages)
plot_contributions "$graph_out"
cat > "$output_file" << EOF
<div align="center">
# π Hey, I'm Anil (askb)
**Senior IT Engineer | Release Engineering β’ Infrastructure Automation β’ AI-Assisted Development**
[](https://linkedin.com/in/${linkedin})
[](https://twitter.com/${twitter})
[](https://keybase.io/${keybase})
[](mailto:${email})
</div>
---
## π About Me
Senior IT Engineer at **The Linux Foundation**, specializing in release engineering, cloud infrastructure automation, and developer tooling. I architect and maintain CI/CD pipelines that power some of the largest open source projects, focusing on scalability, reliability, and intelligent automation.
Currently building **AI-powered agentic workflows** across DevOps and home automationβfrom GitHub Copilot agentic CI/CD pipelines to smart home systems with AI health coaching, solar energy monitoring, and Garmin fitness tracking. Experimenting with LLM-assisted development to make infrastructure smarter and more autonomous.
When I'm not optimizing build systems or tinkering with smart home automations, you'll find me on two wheels (π΄ bicycle or ποΈ motorcycle) or exploring trails on foot π₯Ύ.
### π§ Core Competencies
- **Infrastructure Engineering** - Cloud platforms, container orchestration, distributed systems
- **Release & Deployment Automation** - CI/CD pipelines, automated testing, deployment strategies
- **Developer Experience** - CLI tools, APIs, workflow optimization, productivity automation
- **AI-Assisted Development** - LLM integration, agentic workflows, intelligent automation
- **Smart Home & IoT** - Home Assistant, energy monitoring, AI health coaching, Garmin fitness
- **Infrastructure as Code** - Declarative automation, configuration management, immutable infrastructure
---
## π Featured Projects
> π€ Building at the intersection of **AI agents, DevOps automation, and smart-home health tech**. Star β anything you find useful β it genuinely helps!
### π€ AI & Agentic Automation
#### π§ [ha-gitops](https://github.com/askb/ha-gitops) \`Shell\`
**GitOps for your smart home.** PR-gated backup add-on for Home Assistant where *every* config change becomes a reviewable pull request β validated by CI and AI-assisted review before it merges. Bring version control discipline (and Copilot agents) to your house.
\`Home Assistant\` β’ \`GitHub Actions\` β’ \`Agentic CI/CD\` β’ \`GitOps\`
#### π οΈ [dotcopilot](https://github.com/askb/dotcopilot) Β· [dotclaude](https://github.com/askb/dotclaude) \`Shell\`
Modular, reusable configuration for **GitHub Copilot CLI** and **Claude Code** β agents, rules, hooks, skills, and templates that supercharge AI-assisted development. Drop-in setup for anyone running agentic coding tools.
\`Copilot\` β’ \`Claude\` β’ \`AI Agents\` β’ \`Developer Experience\`
#### π [ai-n8domata](https://github.com/askb/ai-n8domata) \`Shell\`
Self-hosted **n8n AI automation** stack β LLM-driven workflows, agent orchestration, and intelligent tooling wired together for real-world tasks.
\`n8n\` β’ \`LLM Workflows\` β’ \`AI Agents\` β’ \`Automation\`
#### π€ [matrix-meetbot](https://github.com/askb/matrix-meetbot) \`Python\`
A Matrix-native meeting bot (a modern port of the OpenDev IRC MeetBot) running **live on a GitHub Actions runner** β minutes, action items, and summaries without a server.
\`Python\` β’ \`Matrix\` β’ \`GitHub Actions\` β’ \`ChatOps\`
### π Smart Home & Health AI
#### ποΈ [ha-garmin-fitness-coach-app](https://github.com/askb/ha-garmin-fitness-coach-app) \`TypeScript\` β
Your **AI sport scientist.** Transforms Garmin health data into evidence-based, personalized coaching β workout recommendations, diabetes tracking, and fitness analytics β in a modern web app.
\`Next.js\` β’ \`TypeScript\` β’ \`tRPC\` β’ \`Drizzle ORM\` β’ \`AI/ML\`
#### πͺ [ha-garmin-fitness-coach-addon](https://github.com/askb/ha-garmin-fitness-coach-addon) \`Python\` β
Home Assistant add-on that syncs **Garmin Connect** data into an AI-powered coaching dashboard. Multi-user health tracking with InfluxDB time-series storage and Grafana visualizations.
\`Python\` β’ \`HA Add-on\` β’ \`InfluxDB\` β’ \`Grafana\` β’ \`AI Coaching\`
### βοΈ Release Engineering & DevOps Tools
#### π¨ [OpenDaylight releng-builder](https://github.com/opendaylight/releng-builder) \`Shell\`
Complete CI/CD infrastructure for OpenDaylight β orchestrating automated builds, testing, and deployment across 60+ repositories.
**Impact:** 100+ developers β’ 500K+ builds β’ 99.8% uptime
#### π [tailscale-openstack-bastion-action](https://github.com/lfreleng-actions/tailscale-openstack-bastion-action) \`GitHub Action\`
Spins up **ephemeral OpenStack bastion hosts wired to Tailscale** β secure, zero-config VPN access to private cloud networks straight from CI, torn down when the job ends.
\`GitHub Actions\` β’ \`Tailscale\` β’ \`OpenStack\` β’ \`Zero-Trust\`
#### π¦ [packer-build-action](https://github.com/lfreleng-actions/packer-build-action) \`GitHub Action\`
Builds **OpenStack images with Packer via bastion hosts** β reproducible, automated golden-image pipelines for multi-cloud fleets.
\`GitHub Actions\` β’ \`Packer\` β’ \`OpenStack\` β’ \`Image Builds\`
#### π§Ή [openstack-cron-action](https://github.com/lfreleng-actions/openstack-cron-action) \`GitHub Action\`
Scheduled **cleanup of orphaned OpenStack resources** β reclaims leaked VMs, volumes, and floating IPs on a cron, keeping cloud bills and quotas in check.
\`GitHub Actions\` β’ \`OpenStack\` β’ \`Cost Control\` β’ \`Automation\`
#### π [github2gerrit](https://github.com/askb/github2gerrit) \`Shell\`
Bridges the two review worlds β turns a **GitHub pull request into a Gerrit change request** automatically, so contributors use GitHub while projects keep their Gerrit workflow.
\`GitHub Actions\` β’ \`Gerrit\` β’ \`CI/CD\` β’ \`Automation\`
---
## π» Tech Stack
<div align="center">
### π€ AI & Agentic Development





### Languages & Scripting





### Infrastructure & Cloud






### CI/CD & Automation



### Smart Home & IoT





### Web & App



</div>
---
## π GitHub Stats
<div align="center">
### Daily Contribution Activity

### Overall Metrics

</div>
---
## π Open Source Contributions
Contributing across multiple Linux Foundation projects and communities:
- **OpenDaylight** - Release Engineering Lead
- **Linux Foundation IT** - Infrastructure Automation
- **OPNFV** - CI/CD Pipeline Development
- **FD.io** - Build System Maintenance
### Languages by Contribution Volume
$langs
---
## π€ Let's Connect
I'm always interested in discussing:
- π§ Release engineering and deployment strategies
- π§ Infrastructure optimization and cloud architecture
- π CI/CD pipeline design and best practices
- π€ LLM integration and AI-assisted agentic workflows
- π Smart home automation, energy monitoring, and IoT
- πͺ Health tracking, Garmin fitness, and AI coaching
- π Open source community building and collaboration
- π΄ Trail recommendations (tech conferences or bike trails!)
### How to Reach Me
- **Email:** [$email](mailto:$email)
- **Twitter/X:** [@${twitter}](https://twitter.com/${twitter})
- **Keybase:** [${keybase}](https://keybase.io/${keybase})
- **LinkedIn:** [${linkedin}](https://linkedin.com/in/${linkedin})
- **Telegram:** *Available on request*
---
## β Support My Work
If my open source contributions have helped you, consider buying me a coffee! Your support helps me dedicate more time to building tools that benefit the community.
<div align="center">
[](https://ko-fi.com/askb23)
[](https://github.com/sponsors/askb)
</div>
---
<div align="center">
### π‘ "Automating infrastructure by day, exploring trails by weekend"

*Last updated: Auto-generated via GitHub Actions β’ $(date -u +"%Y-%m-%d %H:%M UTC")*
</div>
EOF
echo "β
README generated successfully!"