This document provides comprehensive documentation for all GitHub Actions workflows in this repository.
Comprehensive testing workflow with three jobs.
Triggers:
Jobs:
test (ubuntu-latest)
--fail-level warning:unit focus):integration focus, skipping :native-binary tests)babashka-test (ubuntu-latest)
bb tasks)bb list --format jsoninstall-scripts-lint (ubuntu-latest)
install scriptCaching Strategy:
~/.m2/repository and ~/.gitlibs directoriesdeps.edn hash for automatic invalidationReusable workflow for building native binaries.
Triggers:
workflow_call - Called by other workflows (e.g., release.yml)workflow_dispatch - Manual triggering for testingJobs:
test (ubuntu-latest)
--fail-level warning:unit focus):integration focus, skipping :native-binary tests)build-matrix (multi-platform)
linux-amd64 (ubuntu-latest) - Standard x86_64 Linux binarymacos-universal (macos-latest) - Universal binary with x86_64 and arm64 slices:universal true flagmcp-tasks-{os}-{arch}mcp-tasks-server-{os}-{arch}test-binaries (multi-platform)
test-focus: smoke): Fast smoke tests only
--skip-meta :comprehensive flagtest-focus: comprehensive): Full test suite
BINARY_TARGET_OS: Target OS (linux/macos)BINARY_TARGET_ARCH: Target architecture (amd64/universal)Manual workflow for releasing new versions.
Triggers:
workflow_dispatch - Manual triggering from GitHub Actions UI
dry-run input (optional, default: false) - Skip deployment steps for testingDependencies:
build-binaries.yml reusable workflow to build native binariesJobs:
build-binaries (reusable workflow call)
release (ubuntu-latest)
Prerequisites:
build-binaries job to complete successfullyVersion Calculation:
0.1.N where N is commit countclojure -T:build versionSHA Reference Updates:
doc/install.md, plugins/mcp-tasks-skill/README.mdscripts/update-sha-refs.sh scriptJAR Build and Validation:
Changelog Generation:
Binary Artifact Validation:
mcp-tasks-linux-amd64mcp-tasks-macos-universalmcp-tasks-server-linux-amd64mcp-tasks-server-macos-universalDeployment Steps (skipped in dry-run mode):
Release Process:
.github/actions/setup-clojure/action.yml
Reusable action that sets up the Clojure development environment. Used by all workflows to ensure consistent environment configuration.
Purpose: Centralizes Java/GraalVM setup, Clojure tools installation, and dependency caching
Inputs:
java-distribution: Java distribution to use (temurin or graalvm, default: temurin)java-version: Java version (default: 21)install-linters: Whether to install cljstyle and clj-kondo (default: false)cache-key-suffix: Optional cache key suffix for platform-specific cachinggithub-token: GitHub token (required for GraalVM distribution)Features:
Native binary integration tests are located in:
Tests use metadata tags for classification:
:native-binary - All native binary tests (required for filtering):comprehensive - Thorough validation tests (slower, complete coverage):smoke - Fast feedback tests (quick validation of basic functionality)Build the native binaries first:
# Build CLI binary
clj -T:build native-cli
# Build server binary
clj -T:build native-server
Run tests with environment variables to specify target platform:
# Smoke tests only (fast feedback)
BINARY_TARGET_OS=macos BINARY_TARGET_ARCH=universal \
clojure -M:dev:test --focus :native-binary --skip-meta :comprehensive
# Comprehensive tests (full validation)
BINARY_TARGET_OS=linux BINARY_TARGET_ARCH=amd64 \
clojure -M:dev:test --focus :native-binary
Environment Variables:
BINARY_TARGET_OS - Target OS (linux or macos)BINARY_TARGET_ARCH - Target architecture (amd64 or universal)The CI workflows use a platform-specific testing approach to balance speed and coverage:
macOS (test-focus: smoke): Fast smoke tests only
--skip-meta :comprehensive flagLinux (test-focus: comprehensive): Full test suite
Rationale: This split allows the CI pipeline to provide fast feedback on macOS while still maintaining comprehensive test coverage on Linux. macOS universal binaries are tested for basic functionality, while the more critical Linux binaries receive full validation. This approach reduces CI runtime without sacrificing test quality.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |