Skip to content

Implement CI/CD pipeline: test, build, and release workflows #145

@oehrlis

Description

@oehrlis

Task Description

Design and implement GitHub Actions workflows for CI and packaging. Workflows should run shellcheck, shfmt, bats (unit/integration), build artifacts for dev and main branch, attach artifacts to Actions or GitHub Release, optionally sign packages.

Task Type

CI/CD

Affected Component

CI/CD

Priority

Medium (Normal priority)

Motivation

Automated testing and packaging guarantees code quality, avoids regressions, and streamlines releases. Current process is manual and error-prone. Modern CI also makes onboarding and contributions easier. BATS testing automates verification of scripts, packaging. Release workflow allows maintainers to ship artifacts securely to end users.

Implementation Plan

  1. Add .github/workflows/test.yml: run lint (shellcheck/shfmt), bats unit on PR, push
  2. Add .github/workflows/build-dev.yml: on dev branch, build artifact, upload as Actions artifact
  3. Add .github/workflows/release.yml: on tag/main, build, sign, and publish artifact to Release
  4. Optionally provide SBOM generation phase
  5. Document workflows in README

Files to Modify

.github/workflows/test.yml
.github/workflows/build-dev.yml
.github/workflows/release.yml
Makefile
README.md
bats tests/

Code Examples

Testing Approach

  • All workflows trigger as intended on test/dev/main
  • Lint, unit and integration tests pass (bats)
  • Artifacts are published and downloadable for dev and production releases
  • Manual/exploratory test of released installer against a test system

Acceptance Criteria

  • CI pipelines implemented in Actions
  • Artifacts built, uploaded, and signed (if enabled)
  • BATS tests executed in pipeline
  • Documentation updated in README.md
  • Code reviewed

Breaking Changes

No breaking changes

Dependencies

  • Restructured repo layout (see related issue)
  • Requires BATS and linter configs available in repo

Risks and Considerations

  • CI credentials and secrets for signing must be secure; risk if leaked or misconfigured
  • Possible large runner usage if not optimized

Estimated Effort

No response

Subtasks

- [ ] Test workflow
- [ ] Build workflow
- [ ] Release workflow
- [ ] Docs updates

Documentation Updates Required

  • README.md (CI, test, build instructions)
  • Inline docs in workflow YAML
  • CONTRIBUTING.md

Additional Notes

No response

Pre-submission Checklist

  • I have searched existing issues to avoid duplicates
  • I have provided a clear implementation plan
  • I have defined acceptance criteria
  • I have considered backward compatibility

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions