@@ -3,138 +3,139 @@ name: Core CI Tests
33on :
44 push :
55 branches :
6- - main
7- - develop
6+ - main
7+ - develop
88 pull_request :
99 branches :
10- - main
11- - develop
10+ - main
11+ - develop
1212 workflow_dispatch :
1313
14+
1415jobs :
1516 # Core data validation - always runs, it's fast
1617 data-validation :
1718 name : Data Validation
1819 runs-on : ubuntu-latest
1920
2021 steps :
21- - name : 📂 Checkout repository
22- uses : actions/checkout@v5
23-
24- - name : 🐍 Setup Pixi
25- uses :
prefix-dev/[email protected] 26-
27- - name : ✅ Validate conference data structure
28- run : |
29- pixi run sort --check
30-
31- - name : 🔍 Run data linters
32- run : |
33- pixi run lint
34-
35- - name : 📊 Check for obvious duplicates
36- run : |
37- # Simple duplicate check based on conference name and year
38- python -c "
39- import yaml
40- with open('_data/conferences.yml') as f :
41- data = yaml.safe_load(f)
42- if data :
43- seen = set()
44- for conf in data :
45- key = (conf.get('conference', ''), conf.get('year', ''))
46- if key in seen :
47- print(f'Warning : Potential duplicate - {key}')
48- seen.add(key)
49- "
22+ - name : 📂 Checkout repository
23+ uses : actions/checkout@v5
24+
25+ - name : 🐍 Setup Pixi
26+ uses :
prefix-dev/[email protected] 27+
28+ - name : ✅ Validate conference data structure
29+ run : |
30+ pixi run sort --check
31+
32+ - name : 🔍 Run data linters
33+ run : |
34+ pixi run lint
35+
36+ - name : 📊 Check for obvious duplicates
37+ run : |
38+ # Simple duplicate check based on conference name and year
39+ python -c "
40+ import yaml
41+ with open('_data/conferences.yml') as f:
42+ data = yaml.safe_load(f)
43+ if data:
44+ seen = set()
45+ for conf in data:
46+ key = (conf.get('conference', ''), conf.get('year', ''))
47+ if key in seen:
48+ print(f'Warning: Potential duplicate - {key}')
49+ seen.add(key)
50+ "
5051
5152 # Python tests - always runs for utilities
5253 python-tests :
5354 name : Python Tests
5455 runs-on : ubuntu-latest
5556
5657 steps :
57- - name: 📂 Checkout repository
58- uses: actions/checkout@v5
58+ - name : 📂 Checkout repository
59+ uses : actions/checkout@v5
5960
60- - name: 🐍 Setup Pixi
61- uses: prefix-dev/[email protected] 61+ - name : 🐍 Setup Pixi
62+ uses :
prefix-dev/[email protected] 6263
63- - name: 🧪 Run Python tests
64- run: |
65- pixi run test-fast || echo " Tests completed"
64+ - name : 🧪 Run Python tests
65+ run : |
66+ pixi run test-fast || echo "Tests completed"
6667
67- - name : 🔍 Check Python code quality
68- run : |
69- # Run ruff for linting
70- ruff check utils/ || true
71- ruff format utils/ --check || true
68+ - name : 🔍 Check Python code quality
69+ run : |
70+ # Run ruff for linting
71+ ruff check utils/ || true
72+ ruff format utils/ --check || true
7273
7374 # Jekyll build test - ensures site can build
7475 jekyll-build :
7576 name : Jekyll Build Test
7677 runs-on : ubuntu-latest
7778
7879 steps :
79- - name : 📂 Checkout repository
80- uses : actions/checkout@v5
81-
82- - name : 💎 Setup Ruby
83- uses : ruby/setup-ruby@v1
84- with :
85- ruby-version : ' 3.3'
86- bundler-cache : true
87-
88- - name : 🏗️ Test Jekyll build
89- run : |
90- bundle exec jekyll build --config _config.yml,_config.test.yml
91- env :
92- JEKYLL_ENV : test
93-
94- - name : ✅ Verify critical files exist
95- run : |
96- # Check that key output files were created
97- test -f _site/index.html || exit 1
98- test -f _site/search.json || exit 1
99- test -d _site/static || exit 1
100- echo "✅ Site built successfully with all critical files"
80+ - name : 📂 Checkout repository
81+ uses : actions/checkout@v5
82+
83+ - name : 💎 Setup Ruby
84+ uses : ruby/setup-ruby@v1
85+ with :
86+ ruby-version : ' 3.3'
87+ bundler-cache : true
88+
89+ - name : 🏗️ Test Jekyll build
90+ run : |
91+ bundle exec jekyll build --config _config.yml,_config.test.yml
92+ env :
93+ JEKYLL_ENV : test
94+
95+ - name : ✅ Verify critical files exist
96+ run : |
97+ # Check that key output files were created
98+ test -f _site/index.html || exit 1
99+ test -f _site/search.json || exit 1
100+ test -d _site/static || exit 1
101+ echo "✅ Site built successfully with all critical files"
101102
102103 # Pre-commit checks - ensures code quality
103104 pre-commit :
104105 name : Pre-commit Checks
105106 runs-on : ubuntu-latest
106107
107108 steps :
108- - name : 📂 Checkout repository
109- uses : actions/checkout@v5
109+ - name : 📂 Checkout repository
110+ uses : actions/checkout@v5
110111
111- - name : 🐍 Setup Pixi
112- uses :
prefix-dev/[email protected] 112+ - name : 🐍 Setup Pixi
113+ uses :
prefix-dev/[email protected] 113114
114- - name : 🔍 Run pre-commit hooks
115- run : |
116- pixi run pre || true
117- continue-on-error : true # Don't fail the entire CI for style issues
115+ - name : 🔍 Run pre-commit hooks
116+ run : |
117+ pixi run pre || true
118+ continue-on-error : true # Don't fail the entire CI for style issues
118119
119120 # Summary job to ensure all core tests pass
120121 ci-status :
121122 name : CI Status
122123 runs-on : ubuntu-latest
123- needs : [data-validation, python-tests, jekyll-build]
124+ needs : [ data-validation, python-tests, jekyll-build ]
124125 if : always()
125126
126127 steps :
127- - name : ✅ Check overall status
128- run : |
129- if [[ "${{ needs.data-validation.result }}" == "success" ]] && \
130- [[ "${{ needs.python-tests.result }}" == "success" ]] && \
131- [[ "${{ needs.jekyll-build.result }}" == "success" ]]; then
132- echo "✅ All core tests passed!"
133- exit 0
134- else
135- echo "❌ Some core tests failed:"
136- echo "Data Validation: ${{ needs.data-validation.result }}"
137- echo "Python Tests: ${{ needs.python-tests.result }}"
138- echo "Jekyll Build: ${{ needs.jekyll-build.result }}"
139- exit 1
140- fi
128+ - name : ✅ Check overall status
129+ run : |
130+ if [[ "${{ needs.data-validation.result }}" == "success" ]] && \
131+ [[ "${{ needs.python-tests.result }}" == "success" ]] && \
132+ [[ "${{ needs.jekyll-build.result }}" == "success" ]]; then
133+ echo "✅ All core tests passed!"
134+ exit 0
135+ else
136+ echo "❌ Some core tests failed:"
137+ echo "Data Validation: ${{ needs.data-validation.result }}"
138+ echo "Python Tests: ${{ needs.python-tests.result }}"
139+ echo "Jekyll Build: ${{ needs.jekyll-build.result }}"
140+ exit 1
141+ fi
0 commit comments