Skip to content

SPEC-8: Improve parallel execution discoverability and shorthand syntax #55

SPEC-8: Improve parallel execution discoverability and shorthand syntax

SPEC-8: Improve parallel execution discoverability and shorthand syntax #55

Workflow file for this run

---
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# Tier 1: Always runs (no secrets needed)
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Run tests
run: make test
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: latest
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Build binary
run: make build
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: conductor-linux-amd64
path: bin/conductor
retention-days: 7
# Tier 2: Integration tests (secrets required, skip on fork PRs)
integration:
name: Integration Tests
runs-on: ubuntu-latest
needs: [test, lint, build]
# Only run if secrets are available (not a fork PR)
# Fork PRs don't have access to repository secrets
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name == github.repository
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Run integration tests
run: make test-integration
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
CONDUCTOR_TEST_INTEGRATION: "true"
# Documentation validation
docs-validate:
name: Validate Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Build conductor for validation
run: make build
- name: Validate example YAML files
run: |
# Check if validate command exists
if ./bin/conductor validate --help > /dev/null 2>&1; then
echo "Validating tutorial examples..."
for file in examples/tutorial/*.yaml; do
echo "Validating $file"
./bin/conductor validate --strict "$file" || exit 1
done
echo "Validating showcase examples..."
for file in examples/showcase/*.yaml; do
echo "Validating $file"
./bin/conductor validate --strict "$file" || exit 1
done
else
echo "Warning: conductor validate command not available, skipping YAML validation"
echo "This validation will be enabled once the validate command is implemented"
fi
- name: Check markdown links
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
config-file: '.github/workflows/markdown-link-check-config.json'
folder-path: 'docs/'
- name: Validate word counts
run: |
echo "Checking word counts for tutorial pages (max 500 words)..."
for file in docs/tutorial/[0-9]*.md; do
words=$(wc -w < "$file" | tr -d ' ')
echo "$file: $words words"
if [ "$words" -gt 500 ]; then
echo "ERROR: $file exceeds 500 words ($words)"
exit 1
fi
done
echo "Checking word counts for feature pages (max 800 words)..."
for file in docs/features/*.md; do
words=$(wc -w < "$file" | tr -d ' ')
echo "$file: $words words"
if [ "$words" -gt 800 ]; then
echo "ERROR: $file exceeds 800 words ($words)"
exit 1
fi
done
echo "Checking getting-started.md (max 600 words)..."
words=$(wc -w < docs/getting-started.md | tr -d ' ')
echo "docs/getting-started.md: $words words"
if [ "$words" -gt 600 ]; then
echo "ERROR: getting-started.md exceeds 600 words ($words)"
exit 1
fi