Skip to content

Commit d38d3c1

Browse files
enable builkite
1 parent 975aa59 commit d38d3c1

File tree

2 files changed

+94
-1
lines changed

2 files changed

+94
-1
lines changed

.buildkite/pipeline.yml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# .buildkite/pipeline.yml
2+
steps:
3+
# --------------------------------------------------------
4+
# STEP 1 — Get changed files
5+
# --------------------------------------------------------
6+
- label: ":git: Detect changed files"
7+
key: detect-changes
8+
commands:
9+
- echo "--- Detecting changed files"
10+
- git fetch origin main
11+
- git diff --name-only origin/main...HEAD > changed_files.txt
12+
- echo "Changed files:"
13+
- cat changed_files.txt
14+
# Save for later steps
15+
- buildkite-agent artifact upload changed_files.txt
16+
17+
# --------------------------------------------------------
18+
# STEP 2 — Determine languages based on changed files
19+
# --------------------------------------------------------
20+
- label: ":mag: Identify languages"
21+
key: list-languages
22+
depends_on: detect-changes
23+
commands:
24+
- buildkite-agent artifact download changed_files.txt .
25+
- echo "--- Extracting top-level folders"
26+
- awk -F/ '{print $1}' changed_files.txt | sort -u > languages.txt
27+
- echo "Languages found:"
28+
- cat languages.txt
29+
- buildkite-agent artifact upload languages.txt
30+
31+
# --------------------------------------------------------
32+
# STEP 3 — Discover frameworks per language
33+
# --------------------------------------------------------
34+
- label: ":gear: Discover frameworks"
35+
key: list-frameworks
36+
depends_on: list-languages
37+
commands:
38+
- buildkite-agent artifact download languages.txt .
39+
- echo "--- Listing frameworks per language"
40+
- mkdir frameworks
41+
- |
42+
while read lang; do
43+
echo "Finding frameworks in $lang/"
44+
find "$lang" -maxdepth 1 -type d ! -path "$lang" -printf "%f\n" \
45+
| grep -v '^\.$' > "frameworks/${lang}.txt" || true
46+
echo "$lang frameworks:"
47+
cat "frameworks/${lang}.txt" || echo "(none)"
48+
done < languages.txt
49+
50+
# Combine all into JSON pairs for clarity
51+
- |
52+
echo "[" > pairs.json
53+
first=true
54+
while read lang; do
55+
while read fw; do
56+
if [ -n "$fw" ]; then
57+
if [ "$first" = false ]; then echo "," >> pairs.json; fi
58+
echo "{\"language\":\"$lang\",\"framework\":\"$fw\"}" >> pairs.json
59+
first=false
60+
fi
61+
done < "frameworks/${lang}.txt"
62+
done < languages.txt
63+
echo "]" >> pairs.json
64+
65+
- echo "Discovered pairs:"
66+
- cat pairs.json
67+
- buildkite-agent artifact upload pairs.json
68+
69+
# --------------------------------------------------------
70+
# STEP 4 — Dynamically create one job per (language, framework)
71+
# --------------------------------------------------------
72+
- label: ":rocket: Expand pipeline dynamically"
73+
key: expand
74+
depends_on: list-frameworks
75+
commands:
76+
- buildkite-agent artifact download pairs.json .
77+
- echo "--- Expanding pipeline dynamically"
78+
79+
# Split into individual steps and upload
80+
- |
81+
jq -c '.[]' pairs.json | while read pair; do
82+
lang=$(echo "$pair" | jq -r '.language')
83+
fw=$(echo "$pair" | jq -r '.framework')
84+
85+
cat <<YAML > step.yml
86+
steps:
87+
- label: ":test_tube: Run tests - ${lang}/${fw}"
88+
command:
89+
- echo "Running tests for ${lang}/${fw}"
90+
- ./scripts/run-tests.sh ${lang} ${fw}
91+
YAML
92+
buildkite-agent pipeline upload step.yml
93+
done
94+

javascript/mesh/.nvmrc

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)