Skip to content

chore(instructions): remove outdated instruction files #53

chore(instructions): remove outdated instruction files

chore(instructions): remove outdated instruction files #53

Workflow file for this run

# file: .github/workflows/ci.yml
# version: 1.18.4
# guid: f1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6
name: Continuous Integration
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
schedule:
- cron: "0 0 * * 0" # Weekly on Sunday
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
GO_VERSION: "1.24"
NODE_VERSION: "22"
PYTHON_VERSION: "3.13"
RUST_VERSION: "1.76"
COVERAGE_THRESHOLD: "80"
CACHE_VERSION: "v1"
# GitHub context variables (for security)
GITHUB_WORKFLOW: ${{ github.workflow }}
GITHUB_REF: ${{ github.ref }}
GITHUB_EVENT_NAME: ${{ github.event_name }}
GITHUB_REPOSITORY_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GITHUB_HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
permissions:
contents: write
actions: write
checks: write
packages: write
security-events: write
id-token: write
attestations: write
jobs:
# Check for commit override flags
check-overrides:
name: Check Commit Overrides
uses: jdfalk/ghcommon/.github/workflows/commit-override-handler.yml@bc6380dd1cfb1a3b8eb24c27d6cfe4a887562b5b # main
# Detect what files changed to optimize workflow execution
detect-changes:
name: Detect Changes
runs-on: ubuntu-latest
outputs:
gofiles: ${{ steps.filter.outputs.gofiles }}
frontendfiles: ${{ steps.filter.outputs.frontendfiles }}
pythonfiles: ${{ steps.filter.outputs.pythonfiles }}
rustfiles: ${{ steps.filter.outputs.rustfiles }}
dockerfiles: ${{ steps.filter.outputs.dockerfiles }}
docsfiles: ${{ steps.filter.outputs.docsfiles }}
workflowfiles: ${{ steps.filter.outputs.workflowfiles }}
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
fetch-depth: 0
- name: Check file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
filters: |
gofiles:
- '**/*.go'
- 'go.mod'
- 'go.sum'
- '**/go.mod'
- '**/go.sum'
frontendfiles:
- 'webui/**/*.js'
- 'webui/**/*.jsx'
- 'webui/**/*.ts'
- 'webui/**/*.tsx'
- 'webui/**/*.vue'
- 'webui/**/*.html'
- 'webui/**/*.css'
- 'webui/**/*.scss'
- 'webui/**/*.sass'
- 'webui/**/*.less'
- 'frontend/**/*.js'
- 'frontend/**/*.jsx'
- 'frontend/**/*.ts'
- 'frontend/**/*.tsx'
- 'frontend/**/*.vue'
- 'frontend/**/*.html'
- 'frontend/**/*.css'
- 'frontend/**/*.scss'
- 'frontend/**/*.sass'
- 'frontend/**/*.less'
- 'ui/**/*.js'
- 'ui/**/*.jsx'
- 'ui/**/*.ts'
- 'ui/**/*.tsx'
- 'ui/**/*.vue'
- 'ui/**/*.html'
- 'ui/**/*.css'
- 'ui/**/*.scss'
- 'ui/**/*.sass'
- 'ui/**/*.less'
- 'webui/package.json'
- 'webui/package-lock.json'
- 'webui/yarn.lock'
- 'webui/pnpm-lock.yaml'
- 'frontend/package.json'
- 'frontend/package-lock.json'
- 'frontend/yarn.lock'
- 'frontend/pnpm-lock.yaml'
- 'ui/package.json'
- 'ui/package-lock.json'
- 'ui/yarn.lock'
- 'ui/pnpm-lock.yaml'
pythonfiles:
- '**/*.py'
- 'requirements.txt'
- 'pyproject.toml'
- 'setup.py'
- 'setup.cfg'
- 'Pipfile'
- 'poetry.lock'
- '**/requirements.txt'
- '**/pyproject.toml'
- '**/setup.py'
- '**/setup.cfg'
- '**/Pipfile'
- '**/poetry.lock'
rustfiles:
- '**/*.rs'
- 'Cargo.toml'
- 'Cargo.lock'
- '**/Cargo.toml'
- '**/Cargo.lock'
dockerfiles:
- '**/Dockerfile*'
- '**/*.dockerfile'
- 'docker-compose*.yml'
- 'docker-compose*.yaml'
- '.dockerignore'
docsfiles:
- '**/*.md'
- '**/*.rst'
- '**/*.txt'
- 'docs/**'
- '.github/**/*.md'
workflowfiles:
- '.github/workflows/**'
- '.github/actions/**'
- name: Debug outputs
run: |
echo "Go files changed: ${{ steps.filter.outputs.gofiles }}"
echo "Frontend files changed: ${{ steps.filter.outputs.frontendfiles }}"
echo "Python files changed: ${{ steps.filter.outputs.pythonfiles }}"
echo "Rust files changed: ${{ steps.filter.outputs.rustfiles }}"
echo "Docker files changed: ${{ steps.filter.outputs.dockerfiles }}"
echo "Docs files changed: ${{ steps.filter.outputs.docsfiles }}"
echo "Workflow files changed: ${{ steps.filter.outputs.workflowfiles }}"
- name: Determine workflow execution
id: execution
run: |
# Check if we should skip CI based on commit message
if [[ "$GITHUB_HEAD_COMMIT_MESSAGE" =~ \[skip\ ci\] ]] || [[ "$GITHUB_HEAD_COMMIT_MESSAGE" =~ \[ci\ skip\] ]]; then
echo "skip_ci=true" >> $GITHUB_OUTPUT
echo "Skipping CI due to commit message"
else
echo "skip_ci=false" >> $GITHUB_OUTPUT
fi
# Set execution flags
echo "should_lint=true" >> $GITHUB_OUTPUT
echo "should_test_go=${{ steps.filter.outputs.gofiles }}" >> $GITHUB_OUTPUT
echo "should_test_frontend=${{ steps.filter.outputs.frontendfiles }}" >> $GITHUB_OUTPUT
echo "should_test_python=${{ steps.filter.outputs.pythonfiles }}" >> $GITHUB_OUTPUT
echo "should_test_rust=${{ steps.filter.outputs.rustfiles }}" >> $GITHUB_OUTPUT
echo "should_test_docker=${{ steps.filter.outputs.dockerfiles }}" >> $GITHUB_OUTPUT
# Code quality and linting
lint:
name: Lint Code
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.workflowfiles == 'true' || needs.detect-changes.outputs.gofiles == 'true' || needs.detect-changes.outputs.frontendfiles == 'true' || needs.detect-changes.outputs.pythonfiles == 'true' || needs.detect-changes.outputs.rustfiles == 'true' || needs.detect-changes.outputs.docsfiles == 'true'
steps:
- name: Checkout Code
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
fetch-depth: 0
- name: Set up Go
if: needs.detect-changes.outputs.gofiles == 'true'
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
cache: true
- name: Set up Node.js
if: needs.detect-changes.outputs.frontendfiles == 'true'
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: |
**/package-lock.json
**/yarn.lock
**/pnpm-lock.yaml
- name: Set up Python
if: needs.detect-changes.outputs.pythonfiles == 'true'
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: pip
cache-dependency-path: |
**/requirements.txt
**/pyproject.toml
- name: Ensure pip cache directory
if: needs.detect-changes.outputs.pythonfiles == 'true'
run: mkdir -p ~/.cache/pip
- name: Set up Rust
if: needs.detect-changes.outputs.rustfiles == 'true'
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable
with:
toolchain: stable
components: rustfmt, clippy
- name: Wait for PR Automation (for PR events)
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
run: |
echo "🔄 Waiting for PR automation to complete..."
# Wait up to 10 minutes for PR automation to complete
max_attempts=60
attempt=0
while [ $attempt -lt $max_attempts ]; do
# Check if PR automation workflow has completed
echo "Checking for PR automation completion (attempt $((attempt + 1))/$max_attempts)..."
# Use GitHub API to check if pr-automation workflow has completed
pr_automation_status=$(gh api repos/${{ github.repository }}/actions/runs \
--jq '.workflow_runs[] | select(.head_sha == "${{ github.event.pull_request.head.sha || github.sha }}" and .name == "PR Automation") | .status' \
| head -1)
if [ "$pr_automation_status" = "completed" ]; then
echo "✅ PR automation has completed, proceeding with CI"
break
elif [ -z "$pr_automation_status" ]; then
echo "ℹ️ No PR automation workflow found, proceeding with CI"
break
else
echo "⏳ PR automation status: $pr_automation_status, waiting..."
sleep 10
attempt=$((attempt + 1))
fi
done
if [ $attempt -ge $max_attempts ]; then
echo "⚠️ Timeout waiting for PR automation, proceeding with CI anyway"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Load CI Super Linter Configuration
id: super-linter-config
run: |
# Load environment variables from CI-specific config file
if [ -f .github/linters/super-linter-ci.env ]; then
echo "Loading CI Super Linter configuration from .github/linters/super-linter-ci.env"
# Export all variables from the env file to GitHub environment
while IFS='=' read -r key value; do
# Skip comments and empty lines
if [[ ! "$key" =~ ^[[:space:]]*# && -n "$key" ]]; then
# Remove any quotes and whitespace
key=$(echo "$key" | xargs)
value=$(echo "$value" | xargs)
# Export to GitHub environment for use in subsequent steps
echo "$key=$value" >> $GITHUB_ENV
fi
done < .github/linters/super-linter-ci.env
elif [ -f .github/linters/super-linter.env ]; then
echo "CI config not found, falling back to .github/linters/super-linter.env"
# Export all variables from the env file to GitHub environment
while IFS='=' read -r key value; do
# Skip comments and empty lines
if [[ ! "$key" =~ ^[[:space:]]*# && -n "$key" ]]; then
# Remove any quotes and whitespace
key=$(echo "$key" | xargs)
value=$(echo "$value" | xargs)
# Export to GitHub environment for use in subsequent steps
echo "$key=$value" >> $GITHUB_ENV
fi
done < .github/linters/super-linter.env
else
echo "Warning: No Super Linter configuration found"
fi
- name: Run Super Linter (Validation Only)
uses: super-linter/super-linter@ffde3b2b33b745cb612d787f669ef9442b1339a6 # v8.1.0
env:
DEFAULT_BRANCH: ${{ env.GITHUB_REPOSITORY_DEFAULT_BRANCH }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Validation Summary
if: always()
run: |
echo "# 🔍 CI Validation Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ **Code validation completed**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Configuration" >> $GITHUB_STEP_SUMMARY
echo "- **Mode**: Validation only (no auto-fixes)" >> $GITHUB_STEP_SUMMARY
echo "- **Configuration**: super-linter-ci.env" >> $GITHUB_STEP_SUMMARY
echo "- **Event**: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
# Go testing
test-go:
name: Test Go
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.gofiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
strategy:
matrix:
go-version: ["1.24"]
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ matrix.go-version }}
cache: true
- name: Download dependencies
run: go mod download
- name: Run tests
run: go test -v -race -coverprofile=coverage.out ./...
- name: Check coverage
run: |
go tool cover -html=coverage.out -o coverage.html
coverage=$(go tool cover -func=coverage.out | grep total | awk '{print substr($3, 1, length($3)-1)}')
echo "Coverage: ${coverage}%"
if (( $(echo "${coverage} < ${{ env.COVERAGE_THRESHOLD }}" | bc -l) )); then
echo "❌ Coverage ${coverage}% is below threshold ${{ env.COVERAGE_THRESHOLD }}%"
exit 1
else
echo "✅ Coverage ${coverage}% meets threshold ${{ env.COVERAGE_THRESHOLD }}%"
fi
- name: Upload coverage reports
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: go-coverage-${{ matrix.go-version }}
path: |
coverage.out
coverage.html
# Frontend testing
test-frontend:
name: Test Frontend
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.frontendfiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
- name: Install dependencies
run: |
if [ -f package-lock.json ]; then
npm ci
elif [ -f yarn.lock ]; then
yarn install --frozen-lockfile
elif [ -f pnpm-lock.yaml ]; then
npm install -g pnpm
pnpm install --frozen-lockfile
else
npm install
fi
- name: Run linting
run: |
if npm run lint --if-present; then
echo "✅ Linting passed"
else
echo "❌ Linting failed or not configured"
fi
- name: Run tests
run: |
if npm run test --if-present; then
echo "✅ Tests passed"
else
echo "ℹ️ No tests configured"
fi
- name: Build project
run: |
if npm run build --if-present; then
echo "✅ Build successful"
else
echo "ℹ️ No build script configured"
fi
# Python testing
test-python:
name: Test Python
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.pythonfiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
strategy:
matrix:
python-version: ["3.13"]
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Ensure pip cache directory
run: mkdir -p ~/.cache/pip
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then
pip install -r requirements.txt
fi
if [ -f pyproject.toml ]; then
pip install -e .
fi
pip install pytest pytest-cov
- name: Run tests
run: |
if find . -name "test_*.py" -o -name "*_test.py" | head -1 | grep -q .; then
python -m pytest --cov=. --cov-report=xml --cov-report=html
else
echo "ℹ️ No Python tests found"
fi
- name: Upload coverage reports
if: matrix.python-version == '3.12'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: python-coverage
path: |
coverage.xml
htmlcov/
# Rust testing
test-rust:
name: Test Rust
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.rustfiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Rust
uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable
with:
toolchain: stable
components: rustfmt, clippy
- name: Cache Rust dependencies
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run clippy
run: cargo clippy -- -D warnings
- name: Run tests
run: cargo test --verbose
- name: Check formatting
run: cargo fmt -- --check
# Release build for multi-platform testing and artifacts
release-build:
name: Release Build
uses: ./.github/workflows/release.yml

Check failure on line 518 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/ci.yml

Invalid workflow file

error parsing called workflow ".github/workflows/ci.yml" -> "./.github/workflows/release.yml" (source branch with sha:378af4370d926298a07a723ff6ac44f36cff260f) --> "./.github/workflows/release-frontend.yml" : failed to fetch workflow: workflow was not found.
needs: [detect-changes, check-overrides]
if: needs.check-overrides.outputs.skip-tests != 'true'
with:
release_type: auto
build_target: all
prerelease: true
draft: true
# Docker testing
test-docker:
name: Test Docker
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.dockerfiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
- name: Build Docker image
run: |
if [ -f Dockerfile ]; then
docker build -t test-image .
else
echo "ℹ️ No Dockerfile found"
fi
- name: Test Docker Compose
run: |
if [ -f docker-compose.yml ] || [ -f docker-compose.yaml ]; then
docker-compose config
else
echo "ℹ️ No docker-compose file found"
fi
# Documentation testing
test-docs:
name: Test Documentation
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.docsfiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Check links in documentation
run: |
echo "ℹ️ Link checking would go here"
# Add link checking logic here
- name: Validate documentation structure
run: |
echo "ℹ️ Documentation structure validation would go here"
# Add documentation validation logic here
# Security scanning
security-scan:
name: Security Scan
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.check-overrides.outputs.skip-tests != 'true'
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Run CodeQL Analysis
uses: github/codeql-action/analyze@4bdb89f48054571735e3792627da6195c57459e2 # v3.31.10
continue-on-error: true
# Performance testing
performance-test:
name: Performance Test
runs-on: ubuntu-latest
needs: [detect-changes, check-overrides]
if: needs.detect-changes.outputs.gofiles == 'true' && needs.check-overrides.outputs.skip-tests != 'true'
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
cache: true
- name: Run benchmarks
run: |
if find . -name "*_test.go" -exec grep -l "Benchmark" {} \; | head -1 | grep -q .; then
go test -bench=. -benchmem ./...
else
echo "ℹ️ No benchmarks found"
fi
# Summary job
ci-summary:
name: CI Summary
runs-on: ubuntu-latest
needs:
[
detect-changes,
check-overrides,
lint,
test-go,
test-frontend,
test-python,
test-rust,
test-docker,
test-docs,
release-build,
security-scan,
performance-test,
]
if: always()
steps:
- name: Generate summary
run: |
echo "# 🚀 CI Pipeline Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## 📊 Job Results" >> $GITHUB_STEP_SUMMARY
echo "| Job | Status |" >> $GITHUB_STEP_SUMMARY
echo "|-----|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Detect Changes | ${{ needs.detect-changes.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Check Overrides | ${{ needs.check-overrides.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Lint | ${{ needs.lint.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Go | ${{ needs.test-go.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Frontend | ${{ needs.test-frontend.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Python | ${{ needs.test-python.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Rust | ${{ needs.test-rust.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Docker | ${{ needs.test-docker.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Test Docs | ${{ needs.test-docs.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Release Build | ${{ needs.release-build.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Security Scan | ${{ needs.security-scan.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| Performance Test | ${{ needs.performance-test.result }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## 📁 Changed Files" >> $GITHUB_STEP_SUMMARY
echo "- Go: ${{ needs.detect-changes.outputs.gofiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Frontend: ${{ needs.detect-changes.outputs.frontendfiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Python: ${{ needs.detect-changes.outputs.pythonfiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Rust: ${{ needs.detect-changes.outputs.rustfiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Docker: ${{ needs.detect-changes.outputs.dockerfiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Docs: ${{ needs.detect-changes.outputs.docsfiles }}" >> $GITHUB_STEP_SUMMARY
echo "- Workflows: ${{ needs.detect-changes.outputs.workflowfiles }}" >> $GITHUB_STEP_SUMMARY
- name: Check overall status
run: |
if [[ "${{ needs.lint.result }}" == "failure" ]] ||
[[ "${{ needs.test-go.result }}" == "failure" ]] ||
[[ "${{ needs.test-frontend.result }}" == "failure" ]] ||
[[ "${{ needs.test-python.result }}" == "failure" ]] ||
[[ "${{ needs.test-rust.result }}" == "failure" ]] ||
[[ "${{ needs.test-docker.result }}" == "failure" ]] ||
[[ "${{ needs.release-build.result }}" == "failure" ]]; then
echo "❌ CI Pipeline failed"
exit 1
else
echo "✅ CI Pipeline succeeded"
fi