This guide explains how to build dmtools for different environments with appropriate configurations.
Uses your actual development credentials from config.properties:
# Standard development build
./gradlew bootJar
# With explicit profile (same as above)
./gradlew bootJar -PbuildProfile=development
# Clean development build
./gradlew clean bootJarUses production configuration with environment variable placeholders:
# Production build (used by deployment script)
./gradlew bootJar -PbuildProfile=production
# Clean production build
./gradlew clean bootJar -PbuildProfile=productionconfig.properties- Contains actual development credentials and settings- Used for local development and testing
- Should NOT be committed with real credentials
config.prod.properties- Contains environment variable placeholders- Used for App Engine deployment
- Safe to commit to version control
- Actual values provided via App Engine environment variables
| Setting | Development | Production |
|---|---|---|
| API Keys | Hardcoded values | Environment variables |
| Logging | More verbose | Optimized for performance |
| Database URLs | Local/test instances | Production instances |
| AI Retry Settings | Same values | Same values |
Set these in app.yaml for production deployment:
env_variables:
GEMINI_API_KEY: "your-production-gemini-key"
DIAL_API_KEY: "your-production-dial-key"
JIRA_BASE_PATH: "https://your-company.atlassian.net"
JIRA_LOGIN_PASS_TOKEN: "your-production-jira-token"
MS_APPLICATION_ID: "your-microsoft-app-id"
MS_SECRET_VALUE: "your-microsoft-secret"
MS_SECRET_KEY: "your-microsoft-secret-key"
MS_TENANT_ID: "your-microsoft-tenant-id"- Uses
config.propertiesas-is - Packages with development credentials
- Suitable for local testing
- Copies
config.prod.properties→config.propertiesin JAR - Replaces hardcoded values with environment variable placeholders
- App Engine provides actual values at runtime
- Secure and scalable for production
./gradlew bootJar
java -jar dmtools-appengine.jar./deploy-production.shThe deployment script automatically:
- Builds with production profile
- Validates configuration
- Deploys to App Engine
- Provides deployment status
- Never commit real credentials to version control
- Use environment variables for production secrets
- Review
config.prod.propertiesto ensure no hardcoded secrets - Rotate credentials regularly in production environment
- Use different credentials for development vs production
If you see development credentials in production:
# Verify you're using production build
./gradlew clean bootJar -PbuildProfile=production
# Check JAR contents
unzip -p dmtools-appengine.jar BOOT-INF/classes/config.properties | head -10Check App Engine logs if configuration values are missing:
gcloud app logs read --service=default | grep -i "config\|property\|missing"