This document describes how releases are created for the Argo Trading framework.
Releases are created through a manual GitHub Actions workflow that:
Releases are triggered manually via the GitHub Actions UI:
main branchThe workflow is defined in .github/workflows/create-release.yaml.
The project uses Semantic Versioning with the format v{MAJOR}.{MINOR}.{PATCH}.
Version bumps are determined automatically by analyzing commit messages using semantic-release:
| Commit Prefix | Version Bump | Example |
|---|---|---|
feat: |
Minor (1.x.0) | feat: add new indicator |
fix: |
Patch (1.0.x) | fix: correct RSI calculation |
BREAKING CHANGE |
Major (x.0.0) | Breaking change in commit body |
The release workflow runs 5 sequential jobs:
get-version)semantic-release in dry-run modebuild-xcframework)gomobile bindbuild-macos-binaries)trading-backtest and trading-market.pkg)build-linux-binaries)trading-backtest for Linux (amd64)create-release)Package.swift with new version URL and checksummainEach release publishes three artifacts:
| Artifact | Platform | Description |
|---|---|---|
ArgoTrading.xcframework.zip |
macOS/iOS | Swift framework for integration |
ArgoTrading_macOS_arm64.pkg |
macOS | Installer package with CLI tools |
ArgoTrading_Linux_amd64.zip |
Linux | CLI binary archive |
The Swift package manifest is automatically updated during release:
.binaryTarget(
name: "ArgoTrading",
url: "https://github.com/rxtech-lab/argo-trading/releases/download/v{VERSION}/ArgoTrading.xcframework.zip",
checksum: "{SHA256_CHECKSUM}"
)
Swift Package Manager users receive the new version automatically.
All macOS artifacts are signed and notarized:
The release workflow requires these secrets to be configured:
| Secret | Purpose |
|---|---|
RELEASE_TOKEN |
Push commits and create releases |
BUILD_CERTIFICATE_BASE64 |
Apple developer certificate |
P12_PASSWORD |
Certificate password |
SIGNING_CERTIFICATE_NAME |
Developer certificate ID |
INSTALLER_CERTIFICATE_BASE64 |
Installer certificate |
INSTALLER_SIGNING_CERTIFICATE_NAME |
Installer certificate ID |
APPLE_ID |
Apple ID for notarization |
APPLE_ID_PWD |
App-specific password |
APPLE_TEAM_ID |
Apple Developer Team ID |
DEPLOY_KEY |
SSH key for repository push |
The CI workflow (.github/workflows/ci.yml) runs on every PR and push to main:
The CI workflow does not publish releases. Use the release workflow for production releases.