feat: crud-pricing initial implementation
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
All checks were successful
kinec.tech/airun-pathfinder-crud-pricing/pipeline/head This commit looks good
Complete CRUD service for AWS pricing operations - single source of truth. Features: - Dual pricing model (retail + account-specific with auto EDP/PPA detection) - Get/Put pricing operations with intelligent caching - AWS Pricing API integration for public list prices - AWS Cost Explorer integration for account-specific pricing - Access counting for self-learning 14-day refresh - Query most-accessed instances (powers smart refresh) - TTL: 30 days (retail), 7 days (account-specific) Architecture: - All other lambdas use this for pricing operations - No direct DynamoDB access from other components - Consistent schema enforcement - Complete IAM setup for Pricing API, Cost Explorer, STS Infrastructure: - Complete Terraform configuration - Full CI/CD pipeline (Jenkinsfile) - Comprehensive documentation - Production-ready scaffolding Part of Phase 1 - foundation for pricing system. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
114
Jenkinsfile
vendored
Normal file
114
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
pipeline {
|
||||
agent any
|
||||
|
||||
options {
|
||||
ansiColor('xterm')
|
||||
disableConcurrentBuilds()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Setup') {
|
||||
steps {
|
||||
echo '🔧 Verifying Rust environment...'
|
||||
sh '''
|
||||
rustc --version
|
||||
cargo --version
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install Tools') {
|
||||
steps {
|
||||
echo '📦 Installing test tools...'
|
||||
sh '''
|
||||
if ! command -v cargo-nextest &> /dev/null; then
|
||||
cargo install cargo-nextest
|
||||
fi
|
||||
if ! command -v cargo-llvm-cov &> /dev/null; then
|
||||
cargo install cargo-llvm-cov
|
||||
fi
|
||||
if ! command -v cargo-audit &> /dev/null; then
|
||||
cargo install cargo-audit
|
||||
fi
|
||||
rustup component add llvm-tools-preview
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Security Audit') {
|
||||
steps {
|
||||
echo '🔒 Running cargo audit...'
|
||||
sh '''
|
||||
cargo audit --json > audit-report.json || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Check Code') {
|
||||
steps {
|
||||
echo '🔍 Running cargo check...'
|
||||
sh '''
|
||||
cargo check --message-format json > cargo-check.log || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Run Tests with Coverage') {
|
||||
steps {
|
||||
echo '🧪 Running tests with coverage...'
|
||||
sh '''
|
||||
# Run tests with nextest and generate JUnit
|
||||
cargo nextest run --profile ci --verbose || true
|
||||
|
||||
# Create coverage directory and generate coverage
|
||||
mkdir -p coverage
|
||||
cargo llvm-cov nextest --cobertura --output-path coverage/cobertura.xml || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Generate Docs') {
|
||||
steps {
|
||||
echo '📚 Generating documentation...'
|
||||
sh '''
|
||||
cargo doc --no-deps || true
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Publish Results') {
|
||||
steps {
|
||||
echo '📋 Publishing test results, coverage, and warnings...'
|
||||
junit allowEmptyResults: true, testResults: 'target/nextest/ci/junit.xml'
|
||||
recordCoverage(tools: [[parser: 'COBERTURA', pattern: '**/cobertura.xml']])
|
||||
recordIssues tool: cargo(pattern: 'cargo-check.log')
|
||||
|
||||
echo '📚 Publishing documentation...'
|
||||
publishHTML(target: [
|
||||
allowMissing: true,
|
||||
alwaysLinkToLastBuild: true,
|
||||
keepAll: true,
|
||||
reportDir: 'target/doc',
|
||||
reportFiles: 'crud_pricing/index.html',
|
||||
reportName: 'Rust Documentation'
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
echo '🧹 Archiving artifacts...'
|
||||
archiveArtifacts artifacts: 'coverage/**/*.xml, target/nextest/**/*.xml, cargo-check.log, audit-report.json', allowEmptyArchive: true
|
||||
}
|
||||
success {
|
||||
echo '✅ Build completed!'
|
||||
}
|
||||
unstable {
|
||||
echo '⚠️ Build unstable - some tests may have failed'
|
||||
}
|
||||
failure {
|
||||
echo '❌ Build failed!'
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user