Skip to content

Fix Critical Issues in Bash Scripts and Build System #18

@kallal79

Description

@kallal79

Problem Summary

The current repository contains several critical issues in the Bash-related code including GitHub workflows, Makefiles, and shell commands that can lead to build failures, security vulnerabilities, and maintenance problems.

Issues Identified

1. Critical: Unsafe Pipeline Construction in Coverage Workflow

File: .github/workflows/ci-go-cover.yml
Issue: The coverage pipeline uses potentially unsafe command chaining without proper error handling:

go test -short -cover | grep -o "coverage:.*of statements$" | python scripts/cov.py

Risk: Silent failures in the pipeline where grep or python could fail without proper error detection.

2. Build System Fragility

File: utils/Makefile
Issue: Hard failure when zek dependency is missing with poor error recovery:

zek ?= $(shell command -v zek)
ifeq ($(strip $(zek)),)
$(error zek not found. To install zek: 'go install github.com/miku/zek/cmd/zek@latest')
endif

Risk: Breaks the entire build process instead of providing graceful degradation or auto-installation.

3. Security: Missing Error Handling in GitHub Workflows

Files: .github/workflows/ci-go-cover.yml, .github/workflows/ci.yml
Issue: No set -euo pipefail or equivalent error handling in shell scripts.
Risk: Commands may fail silently, leading to false positive test results.

4. Dependency Management Issues

File: utils/Makefile
Issue: External dependency (zek) is required but not automatically managed.
Risk: New contributors face immediate build failures without clear resolution paths.

5. Missing Test Coverage for Build Scripts

Issue: No validation or testing of the Makefile targets and GitHub workflow scripts.
Risk: Build system regressions go unnoticed until they cause production issues.

Proposed Solutions

1. Enhanced GitHub Workflows

  • Add proper error handling with set -euo pipefail
  • Implement proper exit status checking for pipeline commands
  • Add timeout mechanisms for long-running processes
  • Separate concerns for better debugging

2. Improved Makefile Robustness

  • Add auto-installation targets for missing dependencies
  • Implement graceful degradation when optional tools are missing
  • Add validation targets to check system requirements
  • Better error messages with actionable instructions

3. Security Enhancements

  • Validate all input parameters
  • Use safer shell scripting practices
  • Add explicit error handling for all external commands
  • Implement proper cleanup mechanisms

4. Build System Testing

  • Add validation tests for Makefile targets
  • Create integration tests for GitHub workflows
  • Implement pre-commit hooks to validate script changes

Impact Assessment

  • Severity: High - Affects build reliability and security
  • Scope: All contributors and CI/CD processes
  • Urgency: High - Should be fixed before next release

Acceptance Criteria

  • All shell scripts use proper error handling (set -euo pipefail)
  • GitHub workflows have explicit error checking for all commands
  • Makefiles provide graceful handling of missing dependencies
  • Build system includes validation and testing
  • Documentation updated with troubleshooting guides
  • All existing tests pass with new implementations

Additional Context

This issue was identified during a comprehensive audit of the repository's build system. The changes will improve reliability for all contributors and reduce the likelihood of silent failures in CI/CD processes.

Labels

bug, enhancement, CI/CD, build-system, high-priority

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions