Added buildspac to get lambda implementation started
This commit is contained in:
+170
@@ -0,0 +1,170 @@
|
||||
version: 0.2
|
||||
|
||||
env:
|
||||
variables:
|
||||
# Node.js version for React and infrastructure
|
||||
NODE_VERSION: "18"
|
||||
# Python version for Lambda functions
|
||||
PYTHON_VERSION: "3.9"
|
||||
# Go version for Lambda functions
|
||||
GO_VERSION: "1.21"
|
||||
# Rust version for Lambda functions
|
||||
RUST_VERSION: "1.75.0"
|
||||
|
||||
phases:
|
||||
install:
|
||||
runtime-versions:
|
||||
nodejs: 18
|
||||
python: 3.9
|
||||
golang: 1.21
|
||||
commands:
|
||||
- echo "Installing build dependencies..."
|
||||
|
||||
# Install Rust
|
||||
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
- source $HOME/.cargo/env
|
||||
- rustup default $RUST_VERSION
|
||||
- rustc --version
|
||||
- cargo --version
|
||||
|
||||
# Install AWS CDK globally
|
||||
- npm install -g aws-cdk
|
||||
|
||||
# Verify all runtime versions
|
||||
- node --version
|
||||
- npm --version
|
||||
- python3 --version
|
||||
- go version
|
||||
- rustc --version
|
||||
|
||||
pre_build:
|
||||
commands:
|
||||
- echo "Pre-build phase started on `date`"
|
||||
|
||||
# Install React dependencies
|
||||
- echo "Installing React dependencies..."
|
||||
- npm ci
|
||||
|
||||
# Install Python dependencies for Lambda functions
|
||||
- echo "Installing Python dependencies..."
|
||||
- cd functions/python
|
||||
- pip3 install -r requirements.txt --target .
|
||||
- cd ../..
|
||||
|
||||
# Download Go dependencies
|
||||
- echo "Downloading Go dependencies..."
|
||||
- cd functions/go
|
||||
- go mod download
|
||||
- go mod verify
|
||||
- cd ../..
|
||||
|
||||
# Check Rust dependencies
|
||||
- echo "Checking Rust dependencies..."
|
||||
- cd functions/rust
|
||||
- cargo check
|
||||
- cd ../..
|
||||
|
||||
# Install CDK dependencies for infrastructure
|
||||
- echo "Installing CDK dependencies..."
|
||||
- npm ci
|
||||
|
||||
build:
|
||||
commands:
|
||||
- echo "Build phase started on `date`"
|
||||
|
||||
# Build React application
|
||||
- echo "Building React application..."
|
||||
- npm run build
|
||||
|
||||
# Build Go Lambda function
|
||||
- echo "Building Go Lambda function..."
|
||||
- cd functions/go
|
||||
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o bootstrap main.go
|
||||
- zip go-lambda.zip bootstrap
|
||||
- cd ../..
|
||||
|
||||
# Build Rust Lambda function
|
||||
- echo "Building Rust Lambda function..."
|
||||
- cd functions/rust
|
||||
- cargo lambda build --release
|
||||
- cd ../..
|
||||
|
||||
# Package Python Lambda function
|
||||
- echo "Packaging Python Lambda function..."
|
||||
- cd functions/python
|
||||
- zip -r ../python-lambda.zip . -x "*.pyc" "__pycache__/*"
|
||||
- cd ../..
|
||||
|
||||
# Run tests if they exist
|
||||
- echo "Running tests..."
|
||||
- |
|
||||
if [ -f "package.json" ] && grep -q '"test"' package.json; then
|
||||
npm test -- --coverage --ci --testResultsProcessor="jest-junit" --watchAll=false
|
||||
fi
|
||||
|
||||
# Build CDK infrastructure (synthesize CloudFormation templates)
|
||||
- echo "Building CDK infrastructure..."
|
||||
- npx cdk synth
|
||||
|
||||
# Run linting and code quality checks
|
||||
- echo "Running code quality checks..."
|
||||
- |
|
||||
if [ -f "package.json" ] && grep -q '"lint"' package.json; then
|
||||
npm run lint
|
||||
fi
|
||||
|
||||
post_build:
|
||||
commands:
|
||||
- echo "Post-build phase started on `date`"
|
||||
|
||||
# Create deployment package structure
|
||||
- mkdir -p dist/react
|
||||
- mkdir -p dist/lambdas
|
||||
- mkdir -p dist/infrastructure
|
||||
|
||||
# Copy React build artifacts
|
||||
- cp -r build/* dist/react/
|
||||
|
||||
# Copy Lambda function packages
|
||||
- cp functions/go/go-lambda.zip dist/lambdas/
|
||||
- cp functions/python-lambda.zip dist/lambdas/
|
||||
- |
|
||||
if [ -f "functions/rust/target/lambda/rust-lambda/bootstrap.zip" ]; then
|
||||
cp functions/rust/target/lambda/rust-lambda/bootstrap.zip dist/lambdas/rust-lambda.zip
|
||||
fi
|
||||
|
||||
# Copy CDK synthesized templates
|
||||
- cp -r cdk.out/* dist/infrastructure/
|
||||
|
||||
# Generate build info
|
||||
- echo "{\"buildTime\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"commitHash\":\"$CODEBUILD_RESOLVED_SOURCE_VERSION\"}" > dist/build-info.json
|
||||
|
||||
- echo "Build completed successfully on `date`"
|
||||
|
||||
reports:
|
||||
jest_reports:
|
||||
files:
|
||||
- junit.xml
|
||||
base-directory: .
|
||||
file-format: JUNITXML
|
||||
coverage_reports:
|
||||
files:
|
||||
- clover.xml
|
||||
base-directory: coverage
|
||||
file-format: CLOVERXML
|
||||
|
||||
artifacts:
|
||||
files:
|
||||
- '**/*'
|
||||
base-directory: dist
|
||||
name: personal-site-build-$(date +%Y-%m-%d-%H-%M-%S)
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- node_modules/**/*
|
||||
- functions/go/go.mod
|
||||
- functions/go/go.sum
|
||||
- functions/rust/target/**/*
|
||||
- ~/.cargo/**/*
|
||||
- ~/.npm/**/*
|
||||
- ~/.cache/pip/**/*
|
||||
Reference in New Issue
Block a user