CI/CD Integration
CI/CD integration enables pipelines to publish releases into Big Picture automatically. This integration supports artifact registration, release creation, and multi-platform builds across common CI/CD platforms.
How CI/CD Integration Works
Section titled “How CI/CD Integration Works”CI/CD pipelines integrate with Big Picture through the REST API:
- Build artifacts — Pipeline builds installers or packages for target platforms
- Register artifacts — Pipeline registers artifacts with Big Picture (external URLs or managed storage)
- Create releases — Pipeline creates releases that reference registered artifacts
- Publish releases — Releases become available to clients through update decisions
Big Picture does not replace CI/CD systems. Instead, it receives release metadata and artifact references from pipelines, enabling release governance and update decisions.
Supported Platforms
Section titled “Supported Platforms”Big Picture provides integration examples and guides for:
- GitHub Actions — Workflow examples for single and multi-platform releases
- GitLab CI — Pipeline examples with artifact handling
- Jenkins — Declarative and scripted pipeline examples
Other CI/CD platforms can integrate using the same REST API patterns.
Prerequisites
Section titled “Prerequisites”Before integrating CI/CD pipelines:
- Service account — Create a service account with
ci:writeandartifacts:writescopes - API credentials — Store API token as CI/CD secret or environment variable
- Product configuration — Identify product ID and channel names
- Artifact storage — Decide between external URLs or managed storage
Integration Patterns
Section titled “Integration Patterns”External Artifact References
Section titled “External Artifact References”Pipelines register artifacts stored externally (S3, GCS, JFrog, GitHub Releases):
# Register artifact with external URLcurl -X POST "${BP_BASE_URL}/v1/artifacts" \ -H "Authorization: Bearer $BP_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source_type": "EXTERNAL", "sha256": "...", "size_bytes": 12345678, "external_url": "https://artifacts.example.com/releases/v1.0.0/installer.msi" }'Managed Artifact Storage
Section titled “Managed Artifact Storage”Pipelines upload artifacts to Big Picture managed storage:
# Initiate uploadcurl -X POST "${BP_BASE_URL}/v1/artifacts/uploads" \ -H "Authorization: Bearer $BP_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "size_bytes": 12345678, "sha256": "..." }'
# Upload artifact contentcurl -X PUT "${UPLOAD_URL}" \ --data-binary @installer.msi \ -H "Content-Type: application/octet-stream"
# Complete uploadcurl -X POST "${BP_BASE_URL}/v1/artifacts/uploads/${UPLOAD_ID}/complete" \ -H "Authorization: Bearer $BP_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "checksum": "..." }'Release Creation
Section titled “Release Creation”After registering artifacts, pipelines create releases:
curl -X POST "${BP_BASE_URL}/v1/releases" \ -H "Authorization: Bearer $BP_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "product_id": "prod_xyz789", "version": "1.0.0", "channel": "stable", "artifacts": [ { "artifact_id": "art_abc123", "platform": "windows", "arch": "x86_64", "installer_type": "msi", "requires_admin": true } ], "release_notes": "Release 1.0.0" }'Platform-Specific Guides
Section titled “Platform-Specific Guides”Detailed step-by-step guides are available for:
- GitHub Actions — Workflow examples and best practices
- GitLab CI — Pipeline configuration and artifact handling
- Jenkins — Declarative and scripted pipeline examples
Best Practices
Section titled “Best Practices”- Use service accounts — Create dedicated service accounts for CI/CD pipelines
- Store credentials securely — Use CI/CD secrets management, never commit tokens
- Validate artifacts — Compute and verify SHA256 checksums before registration
- Handle errors — Implement error handling and retry logic for API calls
- Idempotent workflows — Design workflows that can be rerun safely
- Multi-platform builds — Use parallel jobs for multi-platform releases
- Version extraction — Extract versions consistently from Git tags or build metadata
Common Workflows
Section titled “Common Workflows”Tag-Based Releases
Section titled “Tag-Based Releases”Pipelines trigger on Git tags and publish releases automatically:
# Example: GitHub Actionson: push: tags: - 'v*'Multi-Platform Releases
Section titled “Multi-Platform Releases”Pipelines build artifacts for multiple platforms and create single releases:
- Build Windows, macOS, and Linux artifacts in parallel
- Register all artifacts
- Create release referencing all platform artifacts
Pre-Release Validation
Section titled “Pre-Release Validation”Pipelines validate artifacts before publishing:
- Verify artifact checksums
- Test installer functionality
- Check release metadata completeness
Troubleshooting
Section titled “Troubleshooting”Authentication failures — Verify service account credentials and scopes
Artifact registration errors — Check artifact URLs are accessible and checksums match
Release creation failures — Verify product ID, version format, and artifact IDs
Network issues — Ensure CI/CD runners can reach Big Picture API endpoints
Related Documentation
Section titled “Related Documentation”- Reference: API Overview — Complete API documentation
- Workflows: Creating a Release — Release creation procedures
- Workflows: Creating Multi-Platform Releases — Multi-platform release workflows