VOOZH about

URL: https://deepwiki.com/Digilac/simap-mcp/8-cicd-and-release

⇱ CI/CD and Release | Digilac/simap-mcp | DeepWiki


Loading...
Menu

CI/CD and Release

This document explains the automated continuous integration and continuous deployment (CI/CD) infrastructure for the simap-mcp project. It covers the GitHub Actions workflows that enforce code quality, test across multiple Node.js versions, and manage the automated release process using Changesets.

For details on the continuous integration workflow and quality gates, see Continuous Integration. For the release process and dual-registry publication, see Publishing and Release.

Overview

The simap-mcp project uses GitHub Actions to automate all quality assurance and publication tasks. The CI/CD system consists of two primary workflows:

WorkflowTriggerPurposeFile
CIPush/PR to mainQuality gates and multi-version testing.github/workflows/ci.yml1-46
ReleasePush to mainVersioning, Changelog updates, and publication.github/workflows/release.yml1-95

Both workflows enforce strict quality standards and ensure the package works across supported Node.js versions (22 and 24) before any code reaches production. Note that Node 20 support was dropped in v1.3.0 as it reached end-of-life .github/workflows/ci.yml18

Sources: .github/workflows/ci.yml1-8 .github/workflows/release.yml1-5 .github/workflows/ci.yml18

Workflow Architecture

The following diagram shows how the GitHub Actions workflows integrate into the development lifecycle, bridging the automated process to the code execution steps:

CI/CD Pipeline Flow


Sources: .github/workflows/ci.yml1-46 .github/workflows/release.yml1-95

Continuous Integration

The CI workflow runs on every push to main and on all pull requests targeting main. It executes a comprehensive quality gate sequence across a matrix of Node.js versions (22 and 24) to ensure compatibility and stability .github/workflows/ci.yml16-18

Quality Gate Sequence

The CI pipeline enforces several automated checks before code can be merged. These include dependency installation via npm ci, linting, TypeScript type checking, formatting verification, production building, and unit testing. Notably, as of v1.2.3, the CI workflow explicitly sets permissions: contents: read at the workflow level for enhanced security .github/workflows/ci.yml9-10

For technical details on the CI configuration, see Continuous Integration.

StepCommandPurpose
Lintnpm run lintCheck code style and patterns
Type Checknpm run typecheckVerify TypeScript type safety
Formatnpm run format:checkEnsure Prettier compliance
Buildnpm run buildCompile TypeScript to dist/
Testnpm testRun Vitest test suites

Sources: .github/workflows/ci.yml32-45

Publishing and Release

The project uses a Changesets driven release flow. Developers add opt-in changeset files for user-visible changes, which are then used to automate versioning and changelog generation .changeset/README.md1-16

Dual-Registry Publication

The release process performs a dual-registry publication to both the npm registry and the Model Context Protocol (MCP) Registry. It utilizes mcp-publisher (version 1.7.9) and GitHub OIDC for secure authentication to the MCP Registry .github/workflows/release.yml71-95

For details on the versioning process, changeset usage, and OIDC authentication, see Publishing and Release.

Release Publication Sequence


Sources: .github/workflows/release.yml55-95 .changeset/README.md20-24

Build Artifacts

Both workflows rely on the production build process. The primary artifact is the dist/ directory, which contains the compiled JavaScript and type definitions.

Sources: .github/workflows/ci.yml41-42 .github/workflows/release.yml18-53