Release & CI Process
Relevant source files
The following files were used as context for generating this wiki page:
The Conduit Release and Continuous Integration (CI) process automates the versioning, validation, and deployment of the mobile application. It ensures that every release follows a standardized path from local version bumping to automated GitHub Actions workflows that handle builds and asset generation.
The process relies on a combination of shell scripts for local coordination and GitHub Actions for remote automation. It enforces strict privacy reviews and code quality checks before any changes enter the release pipeline.
Sources: scripts/release.sh:1-5, README.md:162-170, AGENTS.md:1-12
Release Automation and Versioning
The release.sh script serves as the primary entry point for creating new versions. It supports two main paths: standard version increments (major, minor, patch) and rebuilds of existing tags.
Standard Release Workflow
The standard workflow automates version increments in pubspec.yaml and updates platform-specific metadata.
- Environment Check: The script validates that it is running from the project root and that the git working directory is clean.
- Version Parsing: It extracts the current version from
pubspec.yamland parses it into major, minor, and patch components. - Note Validation: It runs
tool/validate_release_notes.dartto verify that release notes exist for the target version. - Metadata Update: The script increments the build number, updates the version string in
pubspec.yaml, and generates Fastlane changelogs for Android and iOS. - Git Operations: It commits the version bump, pushes to the
mainbranch, and creates a git tag (e.g.,v4.2.2).
Sources: scripts/release.sh:25-34, scripts/release.sh:75-104, scripts/release.sh:125-135
Rebuild Workflow
If you need to update assets for an existing release without changing the version tag, you use the rebuild command. This path dispatches a GitHub Actions workflow named "Release" via the GitHub CLI (gh).
Sources: scripts/release.sh:36-70
Continuous Integration Components
The project uses a monorepo structure managed as a Flutter workspace. This architecture ensures that shared packages remain synchronized during the CI process.
Workspace Structure and Build Verification
CI tasks must account for the following workspace members:
packages/conduit_corepackages/conduit_ddgspackages/conduit_markdownpackages/conduit_theme
The CI environment must execute dart run build_runner build to generate necessary code for freezed, json_serializable, and drift before running tests or building releases.
Sources: pubspec.yaml:12-25, packages/conduit_core/pubspec.yaml:70-75, README.md:162-170
Code Quality and UI Restrictions
The project maintains a platform_ui_allowlist.yaml to enforce architectural boundaries regarding UI framework imports (Material vs. Cupertino). The CI process or pre-commit checks use this to prevent leakage of platform-specific UI code into core logic or unauthorized features.
| Metric | Description |
|---|---|
| Exceptions | Defined paths allowed to bypass standard UI restrictions temporarily. |
| Owner | The team or module responsible for the exception (e.g., core-services, navigation). |
| Removal Milestone | The target cleanup phase (e.g., platform-ui-migration). |
Sources: tool/platform_ui_allowlist.yaml:1-20
Pre-Release Requirements
Before any pull request or release is initiated, developers must adhere to the Privacy Review guidelines. This is a manual gate in the CI/CD pipeline to prevent data leakage.
- Diff Review: Review all titles, bodies, and comments.
- Synthetic Data: Verify that all fixtures, such as
chat_blobsor HTML fixtures, use invented synthetic content. - Credential Scrutiny: Ensure no credentials, real chats, or instance configurations are included in the repository.
Sources: AGENTS.md:1-12, packages/conduit_core/test/fixtures/chat_blobs/06_code_executions.json:1-5
Release Metadata and Assets
The release process updates specific files to ensure the application stores accurately reflect the new version.
| File Path | Purpose |
|---|---|
pubspec.yaml | Root version and build number. |
android/fastlane/metadata/android/en-US/changelogs/default.txt | Android Play Store changelog. |
ios/fastlane/Deliverfile | iOS App Store version and release notes. |
assets/release_notes/ | In-app release notes displayed to users. |
Sources: scripts/release.sh:137-164, pubspec.yaml:177-185
Summary
The Conduit Release & CI process centralizes version management through scripts/release.sh, providing a controlled interface for developers to trigger GitHub-based builds. By combining automated version bumping, mandatory release note validation, and architectural allowlists, the system maintains high code quality and deployment consistency across iOS and Android platforms.